@opentiny/fluent-editor 3.19.4 → 3.20.1
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/README.md +99 -99
- package/es/attributors/index.es.js +1 -1
- package/es/attributors/line-height.es.js.map +1 -1
- package/es/config/base64-image.es.js.map +1 -1
- package/es/config/editor.config.es.js.map +1 -1
- package/es/config/editor.utils.es.js +12 -12
- package/es/config/editor.utils.es.js.map +1 -1
- package/es/config/i18n/en-us.es.js.map +1 -1
- package/es/config/i18n/zh-cn.es.js.map +1 -1
- package/es/config/icons.config.es.js +4 -4
- package/es/config/icons.config.es.js.map +1 -1
- package/es/config/types/index.es.js +2 -2
- package/es/config.es.js +1 -1
- package/es/config.es.js.map +1 -1
- package/es/counter/index.es.js.map +1 -1
- package/es/custom-clipboard.es.js +14 -14
- package/es/custom-clipboard.es.js.map +1 -1
- package/es/custom-image/BlotFormatter.es.js +1 -1
- package/es/custom-image/BlotFormatter.es.js.map +1 -1
- package/es/custom-image/Options.es.js.map +1 -1
- package/es/custom-image/actions/Action.es.js.map +1 -1
- package/es/custom-image/actions/CustomResizeAction.es.js +6 -4
- package/es/custom-image/actions/CustomResizeAction.es.js.map +1 -1
- package/es/custom-image/actions/DeleteAction.es.js.map +1 -1
- package/es/custom-image/image.es.js +3 -3
- package/es/custom-image/image.es.js.map +1 -1
- package/es/custom-image/specs/BlotSpec.es.js.map +1 -1
- package/es/custom-image/specs/CustomImageSpec.es.js.map +1 -1
- package/es/custom-image/specs/ImageSpec.es.js.map +1 -1
- package/es/custom-uploader.es.js +4 -7
- package/es/custom-uploader.es.js.map +1 -1
- package/es/emoji/emoji-list/people.es.js.map +1 -1
- package/es/emoji/emoji-list.es.js.map +1 -1
- package/es/emoji/emoji-map.es.js.map +1 -1
- package/es/emoji/formats/emoji-blot.es.js +2 -2
- package/es/emoji/formats/emoji-blot.es.js.map +1 -1
- package/es/emoji/index.es.js.map +1 -1
- package/es/emoji/modules/emoji.es.js +7 -7
- package/es/emoji/modules/emoji.es.js.map +1 -1
- package/es/emoji/modules/toolbar-emoji.es.js +15 -15
- package/es/emoji/modules/toolbar-emoji.es.js.map +1 -1
- package/es/emoji/utils.es.js.map +1 -1
- package/es/file/formats/file.es.js.map +1 -1
- package/es/file/index.es.js.map +1 -1
- package/es/file/modules/file-bar.es.js +3 -3
- package/es/file/modules/file-bar.es.js.map +1 -1
- package/es/fluent-editor.es.js +6 -5
- package/es/fluent-editor.es.js.map +1 -1
- package/es/format-painter/index.es.js.map +1 -1
- package/es/global-link/constants.es.js.map +1 -1
- package/es/global-link/formats/customer-widget-link.es.js.map +1 -1
- package/es/global-link/formats/doc-link.es.js.map +1 -1
- package/es/global-link/formats/wiki-link.es.js.map +1 -1
- package/es/global-link/formats/work-item-link.es.js.map +1 -1
- package/es/global-link/index.es.js +1 -1
- package/es/global-link/index.es.js.map +1 -1
- package/es/global-link/utils/createTable.es.js.map +1 -1
- package/es/link/formats/link.es.js +1 -1
- package/es/link/formats/link.es.js.map +1 -1
- package/es/link/index.es.js.map +1 -1
- package/es/link/modules/tooltip.es.js +3 -3
- package/es/link/modules/tooltip.es.js.map +1 -1
- package/es/mention/Mention.es.js +7 -12
- package/es/mention/Mention.es.js.map +1 -1
- package/es/mention/MentionLink.es.js.map +1 -1
- package/es/mention/constants.es.js.map +1 -1
- package/es/quick-menu/index.es.js +1 -1
- package/es/quick-menu/index.es.js.map +1 -1
- package/es/screenshot/index.es.js +172 -135
- package/es/screenshot/index.es.js.map +1 -1
- package/es/soft-break/index.es.js.map +1 -1
- package/es/strike/index.es.js.map +1 -1
- package/es/syntax/index.es.js.map +1 -1
- package/es/table/better-table.es.js +4 -5
- package/es/table/better-table.es.js.map +1 -1
- package/es/table/formats/header.es.js.map +1 -1
- package/es/table/formats/list.es.js +3 -3
- package/es/table/formats/list.es.js.map +1 -1
- package/es/table/formats/table.es.js +26 -27
- package/es/table/formats/table.es.js.map +1 -1
- package/es/table/modules/table-column-tool.es.js +8 -8
- package/es/table/modules/table-column-tool.es.js.map +1 -1
- package/es/table/modules/table-operation-menu.es.js +7 -8
- package/es/table/modules/table-operation-menu.es.js.map +1 -1
- package/es/table/modules/table-scroll-bar.es.js +1 -1
- package/es/table/modules/table-scroll-bar.es.js.map +1 -1
- package/es/table/modules/table-selection.es.js +0 -1
- package/es/table/modules/table-selection.es.js.map +1 -1
- package/es/table/table-config.es.js.map +1 -1
- package/es/table/utils/index.es.js.map +1 -1
- package/es/table/utils/node-matchers.es.js +14 -14
- package/es/table/utils/node-matchers.es.js.map +1 -1
- package/es/toolbar/better-picker.es.js.map +1 -1
- package/es/toolbar/index.es.js +1 -1
- package/es/toolbar/index.es.js.map +1 -1
- package/es/utils/debounce.es.js.map +1 -1
- package/es/utils/image.es.js +26 -0
- package/es/utils/image.es.js.map +1 -0
- package/es/utils/method.es.js +2 -2
- package/es/utils/method.es.js.map +1 -1
- package/es/utils/scroll-lock.es.js +47 -0
- package/es/utils/scroll-lock.es.js.map +1 -0
- package/es/video/index.es.js +6 -3
- package/es/video/index.es.js.map +1 -1
- package/lib/attributors/index.cjs.js +2 -2
- package/lib/attributors/line-height.cjs.js.map +1 -1
- package/lib/config/base64-image.cjs.js.map +1 -1
- package/lib/config/editor.config.cjs.js.map +1 -1
- package/lib/config/editor.utils.cjs.js +12 -12
- package/lib/config/editor.utils.cjs.js.map +1 -1
- package/lib/config/i18n/en-us.cjs.js.map +1 -1
- package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
- package/lib/config/icons.config.cjs.js +4 -4
- package/lib/config/icons.config.cjs.js.map +1 -1
- package/lib/config/types/index.cjs.js +2 -2
- package/lib/config.cjs.js +1 -1
- package/lib/config.cjs.js.map +1 -1
- package/lib/counter/index.cjs.js.map +1 -1
- package/lib/custom-clipboard.cjs.js +14 -14
- package/lib/custom-clipboard.cjs.js.map +1 -1
- package/lib/custom-image/BlotFormatter.cjs.js +1 -1
- package/lib/custom-image/BlotFormatter.cjs.js.map +1 -1
- package/lib/custom-image/Options.cjs.js.map +1 -1
- package/lib/custom-image/actions/Action.cjs.js.map +1 -1
- package/lib/custom-image/actions/CustomResizeAction.cjs.js +6 -4
- package/lib/custom-image/actions/CustomResizeAction.cjs.js.map +1 -1
- package/lib/custom-image/actions/DeleteAction.cjs.js.map +1 -1
- package/lib/custom-image/image.cjs.js +3 -3
- package/lib/custom-image/image.cjs.js.map +1 -1
- package/lib/custom-image/specs/BlotSpec.cjs.js.map +1 -1
- package/lib/custom-image/specs/CustomImageSpec.cjs.js.map +1 -1
- package/lib/custom-image/specs/ImageSpec.cjs.js.map +1 -1
- package/lib/custom-uploader.cjs.js +4 -7
- package/lib/custom-uploader.cjs.js.map +1 -1
- package/lib/emoji/emoji-list/people.cjs.js.map +1 -1
- package/lib/emoji/emoji-list.cjs.js.map +1 -1
- package/lib/emoji/emoji-map.cjs.js.map +1 -1
- package/lib/emoji/formats/emoji-blot.cjs.js +2 -2
- package/lib/emoji/formats/emoji-blot.cjs.js.map +1 -1
- package/lib/emoji/index.cjs.js.map +1 -1
- package/lib/emoji/modules/emoji.cjs.js +7 -7
- package/lib/emoji/modules/emoji.cjs.js.map +1 -1
- package/lib/emoji/modules/toolbar-emoji.cjs.js +15 -15
- package/lib/emoji/modules/toolbar-emoji.cjs.js.map +1 -1
- package/lib/emoji/utils.cjs.js.map +1 -1
- package/lib/file/formats/file.cjs.js.map +1 -1
- package/lib/file/index.cjs.js.map +1 -1
- package/lib/file/modules/file-bar.cjs.js +3 -3
- package/lib/file/modules/file-bar.cjs.js.map +1 -1
- package/lib/fluent-editor.cjs.js +25 -24
- package/lib/fluent-editor.cjs.js.map +1 -1
- package/lib/format-painter/index.cjs.js.map +1 -1
- package/lib/global-link/constants.cjs.js.map +1 -1
- package/lib/global-link/formats/customer-widget-link.cjs.js.map +1 -1
- package/lib/global-link/formats/doc-link.cjs.js.map +1 -1
- package/lib/global-link/formats/wiki-link.cjs.js.map +1 -1
- package/lib/global-link/formats/work-item-link.cjs.js.map +1 -1
- package/lib/global-link/index.cjs.js +1 -1
- package/lib/global-link/index.cjs.js.map +1 -1
- package/lib/global-link/utils/createTable.cjs.js.map +1 -1
- package/lib/link/formats/link.cjs.js +1 -1
- package/lib/link/formats/link.cjs.js.map +1 -1
- package/lib/link/index.cjs.js.map +1 -1
- package/lib/link/modules/tooltip.cjs.js +3 -3
- package/lib/link/modules/tooltip.cjs.js.map +1 -1
- package/lib/mention/Mention.cjs.js +7 -12
- package/lib/mention/Mention.cjs.js.map +1 -1
- package/lib/mention/MentionLink.cjs.js.map +1 -1
- package/lib/mention/constants.cjs.js.map +1 -1
- package/lib/quick-menu/index.cjs.js +1 -1
- package/lib/quick-menu/index.cjs.js.map +1 -1
- package/lib/screenshot/index.cjs.js +173 -136
- package/lib/screenshot/index.cjs.js.map +1 -1
- package/lib/soft-break/index.cjs.js.map +1 -1
- package/lib/strike/index.cjs.js.map +1 -1
- package/lib/syntax/index.cjs.js.map +1 -1
- package/lib/table/better-table.cjs.js +4 -5
- package/lib/table/better-table.cjs.js.map +1 -1
- package/lib/table/formats/header.cjs.js.map +1 -1
- package/lib/table/formats/list.cjs.js +3 -3
- package/lib/table/formats/list.cjs.js.map +1 -1
- package/lib/table/formats/table.cjs.js +26 -27
- package/lib/table/formats/table.cjs.js.map +1 -1
- package/lib/table/modules/table-column-tool.cjs.js +8 -8
- package/lib/table/modules/table-column-tool.cjs.js.map +1 -1
- package/lib/table/modules/table-operation-menu.cjs.js +7 -8
- package/lib/table/modules/table-operation-menu.cjs.js.map +1 -1
- package/lib/table/modules/table-scroll-bar.cjs.js +1 -1
- package/lib/table/modules/table-scroll-bar.cjs.js.map +1 -1
- package/lib/table/modules/table-selection.cjs.js +0 -1
- package/lib/table/modules/table-selection.cjs.js.map +1 -1
- package/lib/table/table-config.cjs.js.map +1 -1
- package/lib/table/utils/index.cjs.js.map +1 -1
- package/lib/table/utils/node-matchers.cjs.js +14 -14
- package/lib/table/utils/node-matchers.cjs.js.map +1 -1
- package/lib/toolbar/better-picker.cjs.js.map +1 -1
- package/lib/toolbar/index.cjs.js +1 -1
- package/lib/toolbar/index.cjs.js.map +1 -1
- package/lib/utils/debounce.cjs.js.map +1 -1
- package/lib/utils/image.cjs.js +26 -0
- package/lib/utils/image.cjs.js.map +1 -0
- package/lib/utils/method.cjs.js +2 -2
- package/lib/utils/method.cjs.js.map +1 -1
- package/lib/utils/scroll-lock.cjs.js +47 -0
- package/lib/utils/scroll-lock.cjs.js.map +1 -0
- package/lib/video/index.cjs.js +6 -3
- package/lib/video/index.cjs.js.map +1 -1
- package/package.json +61 -55
- package/{style.css → theme/style.css} +100 -14
- package/es/types/vue.d.es.js +0 -2
- package/es/types/vue.d.es.js.map +0 -1
- package/lib/types/vue.d.cjs.js +0 -2
- package/lib/types/vue.d.cjs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.cjs.js","sources":["../../../../src/table/formats/header.ts"],"sourcesContent":["import Quill from 'quill'\
|
|
1
|
+
{"version":3,"file":"header.cjs.js","sources":["../../../../src/table/formats/header.ts"],"sourcesContent":["import Quill from 'quill'\nimport { isNullOrUndefined } from '../../config/editor.utils'\nimport { CELL_ATTRIBUTES, CELL_IDENTITY_KEYS } from '../table-config'\n\nconst Block = Quill.imports['blots/block']\n\n// @dynamic\nclass Header extends Block {\n static tagName: any\n static blotName: string\n domNode: any\n replaceWith: any\n parent: any\n wrap: any\n enforceAllowedChildren: any\n uiNode: any\n children: any\n statics: any\n appendChild: any\n remove: any\n cache: Record<string, any>\n scroll: any\n static create(value) {\n if (typeof value === 'string') {\n value = { value }\n }\n\n const node = super.create(value.value)\n\n CELL_IDENTITY_KEYS.forEach((key) => {\n if (value[key]) {\n node.setAttribute(`data-${key}`, value[key])\n }\n })\n\n CELL_ATTRIBUTES.forEach((key) => {\n if (value[key]) {\n node.setAttribute(`data-${key}`, value[key])\n }\n })\n\n return node\n }\n\n static formats(domNode) {\n const formats: any = {}\n formats.value = this.tagName.indexOf(domNode.tagName) + 1\n\n return CELL_ATTRIBUTES.concat(CELL_IDENTITY_KEYS).reduce((tableFormats, attribute) => {\n if (domNode.hasAttribute(`data-${attribute}`)) {\n tableFormats[attribute] = domNode.getAttribute(`data-${attribute}`) || undefined\n }\n return tableFormats\n }, formats)\n }\n\n format(name, value) {\n // fix: 在标题处粘贴内容,会导致该粘贴内容的格式错误\n if (Object.prototype.toString.call(value) === '[object Object]') {\n value = value.value\n }\n const headerDom: any = Header.formats(this.domNode)\n const { row, cell, rowspan, colspan } = headerDom\n if (name === Header.blotName) {\n if (value) {\n super.format(name, {\n value,\n row,\n cell,\n rowspan,\n colspan,\n })\n }\n else {\n if (row) {\n this.replaceWith('table-cell-line', {\n row,\n cell,\n rowspan,\n colspan,\n })\n }\n else {\n super.format(name, value)\n }\n }\n }\n else {\n super.format(name, value)\n }\n }\n\n optimize(_context) {\n const { row, cell, rowspan, colspan } = Header.formats(this.domNode)\n\n if (row && this.parent.statics.blotName !== 'table') {\n this.wrap('table', {\n row,\n cell,\n colspan,\n rowspan,\n })\n }\n\n // ShadowBlot optimize\n this.enforceAllowedChildren()\n if (!isNullOrUndefined(this.uiNode) && this.uiNode !== this.domNode.firstChild) {\n this.domNode.insertBefore(this.uiNode, this.domNode.firstChild)\n }\n if (this.children.length === 0) {\n if (!isNullOrUndefined(this.statics.defaultChild)) {\n const child = this.scroll.create(this.statics.defaultChild.blotName)\n this.appendChild(child)\n // TODO double check if necessary\n // child.optimize(context);\n }\n else {\n this.remove()\n }\n }\n // Block optimize\n this.cache = {}\n }\n}\n\nHeader.blotName = 'header'\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6']\n\nexport default Header\n"],"names":["CELL_IDENTITY_KEYS","CELL_ATTRIBUTES","isNullOrUndefined"],"mappings":";;;;;AAIA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,eAAe,MAAM;AAAA,EAezB,OAAO,OAAO,OAAO;AACf,QAAA,OAAO,UAAU,UAAU;AAC7B,cAAQ,EAAE;IACZ;AAEA,UAAM,OAAO,MAAM,OAAO,MAAM,KAAK;AAElBA,mCAAA,QAAQ,CAAC,QAAQ;AAC9B,UAAA,MAAM,GAAG,GAAG;AACd,aAAK,aAAa,QAAQ,GAAG,IAAI,MAAM,GAAG,CAAC;AAAA,MAC7C;AAAA,IAAA,CACD;AAEeC,gCAAA,QAAQ,CAAC,QAAQ;AAC3B,UAAA,MAAM,GAAG,GAAG;AACd,aAAK,aAAa,QAAQ,GAAG,IAAI,MAAM,GAAG,CAAC;AAAA,MAC7C;AAAA,IAAA,CACD;AAEM,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,SAAS;AACtB,UAAM,UAAe,CAAA;AACrB,YAAQ,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,OAAO,IAAI;AAExD,WAAOA,YAAAA,gBAAgB,OAAOD,YAAkB,kBAAA,EAAE,OAAO,CAAC,cAAc,cAAc;AACpF,UAAI,QAAQ,aAAa,QAAQ,SAAS,EAAE,GAAG;AAC7C,qBAAa,SAAS,IAAI,QAAQ,aAAa,QAAQ,SAAS,EAAE,KAAK;AAAA,MACzE;AACO,aAAA;AAAA,OACN,OAAO;AAAA,EACZ;AAAA,EAEA,OAAO,MAAM,OAAO;AAElB,QAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,mBAAmB;AAC/D,cAAQ,MAAM;AAAA,IAChB;AACA,UAAM,YAAiB,OAAO,QAAQ,KAAK,OAAO;AAClD,UAAM,EAAE,KAAK,MAAM,SAAS,YAAY;AACpC,QAAA,SAAS,OAAO,UAAU;AAC5B,UAAI,OAAO;AACT,cAAM,OAAO,MAAM;AAAA,UACjB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA,OAEE;AACH,YAAI,KAAK;AACP,eAAK,YAAY,mBAAmB;AAAA,YAClC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA,CACD;AAAA,QAAA,OAEE;AACG,gBAAA,OAAO,MAAM,KAAK;AAAA,QAC1B;AAAA,MACF;AAAA,IAAA,OAEG;AACG,YAAA,OAAO,MAAM,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,SAAS,UAAU;AACX,UAAA,EAAE,KAAK,MAAM,SAAS,YAAY,OAAO,QAAQ,KAAK,OAAO;AAEnE,QAAI,OAAO,KAAK,OAAO,QAAQ,aAAa,SAAS;AACnD,WAAK,KAAK,SAAS;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IACH;AAGA,SAAK,uBAAuB;AACxB,QAAA,CAACE,aAAAA,kBAAkB,KAAK,MAAM,KAAK,KAAK,WAAW,KAAK,QAAQ,YAAY;AAC9E,WAAK,QAAQ,aAAa,KAAK,QAAQ,KAAK,QAAQ,UAAU;AAAA,IAChE;AACI,QAAA,KAAK,SAAS,WAAW,GAAG;AAC9B,UAAI,CAACA,aAAAA,kBAAkB,KAAK,QAAQ,YAAY,GAAG;AACjD,cAAM,QAAQ,KAAK,OAAO,OAAO,KAAK,QAAQ,aAAa,QAAQ;AACnE,aAAK,YAAY,KAAK;AAAA,MAAA,OAInB;AACH,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAEA,SAAK,QAAQ;EACf;AACF;AAEA,OAAO,WAAW;AAClB,OAAO,UAAU,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;;"}
|
|
@@ -106,7 +106,7 @@ class ListItem extends Block {
|
|
|
106
106
|
}
|
|
107
107
|
optimize(context) {
|
|
108
108
|
const tail = this.prev && this.prev.domNode.lastChild;
|
|
109
|
-
if (tail && tail.className && tail.className.
|
|
109
|
+
if (tail && tail.className && tail.className.includes("ql-soft-break")) {
|
|
110
110
|
this.domNode.childNodes.forEach((v, i) => {
|
|
111
111
|
if (i > 0) {
|
|
112
112
|
this.prev.domNode.appendChild(v);
|
|
@@ -131,7 +131,7 @@ class ListItem extends Block {
|
|
|
131
131
|
if (data.cell && !parentFormats.cell) {
|
|
132
132
|
[...tableConfig.CELL_IDENTITY_KEYS, ...tableConfig.CELL_ATTRIBUTES].forEach((key) => (formats[key] || data[key]) && this.parent.domNode.setAttribute(`data-${key}`, formats[key] || data[key]));
|
|
133
133
|
if (this.parent.parent.statics.blotName !== "table") {
|
|
134
|
-
delete formats
|
|
134
|
+
delete formats.list;
|
|
135
135
|
this.wrap("table", formats);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
@@ -149,7 +149,7 @@ ListItem.requiredContainer = ListContainer;
|
|
|
149
149
|
function getFormats(dom) {
|
|
150
150
|
const formats = {};
|
|
151
151
|
if (dom.tagName === "OL") {
|
|
152
|
-
formats
|
|
152
|
+
formats.list = dom.classList.item(0);
|
|
153
153
|
}
|
|
154
154
|
return [...tableConfig.CELL_ATTRIBUTES, ...tableConfig.CELL_IDENTITY_KEYS].reduce((tableFormats, attribute) => {
|
|
155
155
|
if (dom.hasAttribute(`data-${attribute}`)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.cjs.js","sources":["../../../../src/table/formats/list.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { CELL_ATTRIBUTES, CELL_IDENTITY_KEYS } from '../table-config'\r\n\r\nconst Block = Quill.imports['blots/block']\r\nconst Container = Quill.imports['blots/container']\r\n\r\n// @dynamic\r\nclass ListContainer extends Container {\r\n static allowedChildren: any\r\n static blotName: string\r\n static tagName: string\r\n replaceWith: any\r\n domNode: any\r\n parent: any\r\n statics: any\r\n wrap: any\r\n\r\n format(name, value) {\r\n const { row, cell, rowspan, colspan } = this.domNode.dataset\r\n if (name === ListContainer.blotName) {\r\n if (value) {\r\n super.format(name, { row, cell, rowspan, colspan })\r\n }\r\n else if (row) {\r\n this.replaceWith('table-cell-line', { row, cell, rowspan, colspan })\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * bugfix: quill源码中(quill/core/editor.js 272行)在处理拷贝时\r\n * hard code了这个blotName用于处理ol中的li。所以在quill\r\n * 源码内写法不变的情况下这个名字不能改,否则拷贝有bug\r\n */\r\nListContainer.blotName = 'list-container'\r\nListContainer.tagName = 'OL'\r\n\r\n// @dynamic\r\nclass ListItem extends Block {\r\n static blotName: string\r\n static tagName: string\r\n static requiredContainer: typeof ListContainer\r\n statics: any\r\n attachUI: any\r\n domNode: any\r\n replaceWith: any\r\n parent: any\r\n wrap: any\r\n children: any\r\n prev: any\r\n remove: () => void\r\n\r\n static create(value) {\r\n const node = super.create()\r\n if (typeof value === 'string') {\r\n value = { value }\r\n }\r\n else {\r\n [...CELL_IDENTITY_KEYS, ...CELL_ATTRIBUTES].forEach((key) => {\r\n if (value[key]) {\r\n node.dataset[key] = value[key]\r\n }\r\n })\r\n }\r\n node.classList.add(value.value)\r\n return node\r\n }\r\n\r\n static formats(domNode) {\r\n const formats: any = {}\r\n formats.value = domNode.classList.item(0) || undefined\r\n\r\n return [...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS].reduce((tableFormats, key) => {\r\n if (domNode.dataset[key]) {\r\n tableFormats[key] = domNode.dataset[key]\r\n }\r\n return tableFormats\r\n }, formats)\r\n }\r\n\r\n static register() {\r\n Quill.register({ 'formats/list-container': ListContainer }, true)\r\n }\r\n\r\n constructor(scroll, domNode) {\r\n super(scroll, domNode)\r\n const quill = Quill.find(scroll.domNode.parentNode)\r\n const range = quill.getSelection()\r\n if (range) {\r\n const [line] = quill.getLine(range.index)\r\n const td = line.domNode.closest('td')\r\n if (td) {\r\n [...CELL_IDENTITY_KEYS, ...CELL_ATTRIBUTES].forEach(key =>\r\n td.dataset[key] && domNode.setAttribute(`data-${key}`, td.dataset[key]))\r\n }\r\n }\r\n\r\n const ui = domNode.ownerDocument.createElement('span')\r\n const listEventHandler = (e) => {\r\n if (!scroll.isEnabled()) return\r\n const { value } = this.statics.formats(domNode, scroll)\r\n if (value === 'checked') {\r\n this.format('list', 'unchecked')\r\n e.preventDefault()\r\n }\r\n else if (value === 'unchecked') {\r\n this.format('list', 'checked')\r\n e.preventDefault()\r\n }\r\n }\r\n ui.addEventListener('mousedown', listEventHandler)\r\n ui.addEventListener('touchstart', listEventHandler)\r\n this.attachUI(ui)\r\n }\r\n\r\n format(name, value) {\r\n if (name !== ListItem.blotName) {\r\n super.format(name, value)\r\n return\r\n }\r\n const type = (value && typeof value === 'object') ? value.value : value\r\n const oldClass = this.domNode.classList[0]\r\n const tdDom = this.domNode.closest('.editing-select-able')\r\n const tableCellBlot = tdDom && Quill.find(tdDom)\r\n const images = this.domNode.querySelectorAll('img[data-image-id]')\r\n if (!type || type === oldClass) {\r\n // 消除格式或相同list抵消格式时恢复图片对齐,li转化为table-cell-line\r\n if (images && images.length) {\r\n images.forEach((img) => {\r\n img.style.verticalAlign = 'baseLine'\r\n })\r\n }\r\n if (tableCellBlot && tableCellBlot.statics.blotName === 'table') {\r\n const tableCellFormats = tableCellBlot.formats()\r\n this.replaceWith('table-cell-line', tableCellFormats)\r\n // fix: 移除list格式时移除父级的ol或ul,避免table-cell-line判断无td自动生成td容器\r\n if (this.parent.statics.blotName === ListContainer.blotName) {\r\n this.parent.unwrap()\r\n }\r\n }\r\n else {\r\n super.format(name, value)\r\n }\r\n }\r\n else if (oldClass) {\r\n this.domNode.className = this.domNode.className.replace(oldClass, type)\r\n }\r\n else {\r\n this.domNode.classList.add(type)\r\n }\r\n }\r\n\r\n optimize(context) {\r\n // 判断前一个li是否包含软回车,如果包含则将当前li与之合并后移除\r\n const tail = this.prev && this.prev.domNode.lastChild\r\n if (tail && tail.className && tail.className.indexOf('ql-soft-break') >= 0) {\r\n // 合并dom\r\n this.domNode.childNodes.forEach((v, i) => {\r\n if (i > 0) {\r\n this.prev.domNode.appendChild(v)\r\n }\r\n })\r\n this.remove()\r\n return\r\n }\r\n\r\n super.optimize(context)\r\n\r\n // list类型\r\n const parentFormats = getFormats(this.parent.domNode)\r\n const formats = ListItem.formats(this.domNode)\r\n // 单元格属性\r\n const data = this.domNode.dataset || []\r\n const images = this.domNode.querySelectorAll('img[data-image-id]')\r\n\r\n // li更新后判断父容器的对应属性是否与自身一致,如果不一致则向上覆盖\r\n if (parentFormats.list !== formats.value) {\r\n const oldClass = this.parent.domNode.classList[0]\r\n if (oldClass) {\r\n this.parent.domNode.className = this.parent.domNode.className.replace(oldClass, formats.value)\r\n }\r\n else {\r\n this.parent.domNode.classList.add(formats.value)\r\n }\r\n }\r\n\r\n if (data.cell && !parentFormats.cell) {\r\n [...CELL_IDENTITY_KEYS, ...CELL_ATTRIBUTES].forEach(key =>\r\n (formats[key] || data[key]) && this.parent.domNode.setAttribute(`data-${key}`, formats[key] || data[key]))\r\n // 如果父容器不在表格内则用单元格包裹\r\n if (this.parent.parent.statics.blotName !== 'table') {\r\n delete formats['list']\r\n this.wrap('table', formats)\r\n }\r\n }\r\n\r\n // 当list中包含图片时,设置图片顶对齐\r\n if (images) {\r\n images.forEach((img) => {\r\n img.style.verticalAlign = 'top'\r\n })\r\n }\r\n }\r\n}\r\n\r\nListItem.blotName = 'list'\r\nListItem.tagName = 'LI'\r\n\r\nListContainer.allowedChildren = [ListItem]\r\nListItem.requiredContainer = ListContainer\r\n\r\n// 属性读取方法:兼容table-cell-line、ol、li\r\n// 因为构造时当前range对应的元素最开始是table-cell-line,然后是li,且ol的formats方法不允许覆写,会导致报错,所以整合一个兼容方法来读取需要的属性。\r\nfunction getFormats(dom): any {\r\n const formats = {}\r\n\r\n if (dom.tagName === 'OL') {\r\n formats['list'] = dom.classList.item(0)\r\n }\r\n\r\n return [...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS].reduce((tableFormats, attribute) => {\r\n if (dom.hasAttribute(`data-${attribute}`)) {\r\n tableFormats[attribute] = dom.getAttribute(`data-${attribute}`) || undefined\r\n }\r\n return tableFormats\r\n }, formats)\r\n}\r\n\r\nexport { ListContainer, ListItem as default }\r\n"],"names":["CELL_IDENTITY_KEYS","CELL_ATTRIBUTES"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.cjs.js","sources":["../../../../src/table/formats/list.ts"],"sourcesContent":["import Quill from 'quill'\nimport { CELL_ATTRIBUTES, CELL_IDENTITY_KEYS } from '../table-config'\n\nconst Block = Quill.imports['blots/block']\nconst Container = Quill.imports['blots/container']\n\n// @dynamic\nclass ListContainer extends Container {\n static allowedChildren: any\n static blotName: string\n static tagName: string\n replaceWith: any\n domNode: any\n parent: any\n statics: any\n wrap: any\n\n format(name, value) {\n const { row, cell, rowspan, colspan } = this.domNode.dataset\n if (name === ListContainer.blotName) {\n if (value) {\n super.format(name, { row, cell, rowspan, colspan })\n }\n else if (row) {\n this.replaceWith('table-cell-line', { row, cell, rowspan, colspan })\n }\n }\n }\n}\n/**\n * bugfix: quill源码中(quill/core/editor.js 272行)在处理拷贝时\n * hard code了这个blotName用于处理ol中的li。所以在quill\n * 源码内写法不变的情况下这个名字不能改,否则拷贝有bug\n */\nListContainer.blotName = 'list-container'\nListContainer.tagName = 'OL'\n\n// @dynamic\nclass ListItem extends Block {\n static blotName: string\n static tagName: string\n static requiredContainer: typeof ListContainer\n statics: any\n attachUI: any\n domNode: any\n replaceWith: any\n parent: any\n wrap: any\n children: any\n prev: any\n remove: () => void\n\n static create(value) {\n const node = super.create()\n if (typeof value === 'string') {\n value = { value }\n }\n else {\n [...CELL_IDENTITY_KEYS, ...CELL_ATTRIBUTES].forEach((key) => {\n if (value[key]) {\n node.dataset[key] = value[key]\n }\n })\n }\n node.classList.add(value.value)\n return node\n }\n\n static formats(domNode) {\n const formats: any = {}\n formats.value = domNode.classList.item(0) || undefined\n\n return [...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS].reduce((tableFormats, key) => {\n if (domNode.dataset[key]) {\n tableFormats[key] = domNode.dataset[key]\n }\n return tableFormats\n }, formats)\n }\n\n static register() {\n Quill.register({ 'formats/list-container': ListContainer }, true)\n }\n\n constructor(scroll, domNode) {\n super(scroll, domNode)\n const quill = Quill.find(scroll.domNode.parentNode)\n const range = quill.getSelection()\n if (range) {\n const [line] = quill.getLine(range.index)\n const td = line.domNode.closest('td')\n if (td) {\n [...CELL_IDENTITY_KEYS, ...CELL_ATTRIBUTES].forEach(key =>\n td.dataset[key] && domNode.setAttribute(`data-${key}`, td.dataset[key]))\n }\n }\n\n const ui = domNode.ownerDocument.createElement('span')\n const listEventHandler = (e) => {\n if (!scroll.isEnabled()) return\n const { value } = this.statics.formats(domNode, scroll)\n if (value === 'checked') {\n this.format('list', 'unchecked')\n e.preventDefault()\n }\n else if (value === 'unchecked') {\n this.format('list', 'checked')\n e.preventDefault()\n }\n }\n ui.addEventListener('mousedown', listEventHandler)\n ui.addEventListener('touchstart', listEventHandler)\n this.attachUI(ui)\n }\n\n format(name, value) {\n if (name !== ListItem.blotName) {\n super.format(name, value)\n return\n }\n const type = (value && typeof value === 'object') ? value.value : value\n const oldClass = this.domNode.classList[0]\n const tdDom = this.domNode.closest('.editing-select-able')\n const tableCellBlot = tdDom && Quill.find(tdDom)\n const images = this.domNode.querySelectorAll('img[data-image-id]')\n if (!type || type === oldClass) {\n // 消除格式或相同list抵消格式时恢复图片对齐,li转化为table-cell-line\n if (images && images.length) {\n images.forEach((img) => {\n img.style.verticalAlign = 'baseLine'\n })\n }\n if (tableCellBlot && tableCellBlot.statics.blotName === 'table') {\n const tableCellFormats = tableCellBlot.formats()\n this.replaceWith('table-cell-line', tableCellFormats)\n // fix: 移除list格式时移除父级的ol或ul,避免table-cell-line判断无td自动生成td容器\n if (this.parent.statics.blotName === ListContainer.blotName) {\n this.parent.unwrap()\n }\n }\n else {\n super.format(name, value)\n }\n }\n else if (oldClass) {\n this.domNode.className = this.domNode.className.replace(oldClass, type)\n }\n else {\n this.domNode.classList.add(type)\n }\n }\n\n optimize(context) {\n // 判断前一个li是否包含软回车,如果包含则将当前li与之合并后移除\n const tail = this.prev && this.prev.domNode.lastChild\n if (tail && tail.className && tail.className.includes('ql-soft-break')) {\n // 合并dom\n this.domNode.childNodes.forEach((v, i) => {\n if (i > 0) {\n this.prev.domNode.appendChild(v)\n }\n })\n this.remove()\n return\n }\n\n super.optimize(context)\n\n // list类型\n const parentFormats = getFormats(this.parent.domNode)\n const formats = ListItem.formats(this.domNode)\n // 单元格属性\n const data = this.domNode.dataset || []\n const images = this.domNode.querySelectorAll('img[data-image-id]')\n\n // li更新后判断父容器的对应属性是否与自身一致,如果不一致则向上覆盖\n if (parentFormats.list !== formats.value) {\n const oldClass = this.parent.domNode.classList[0]\n if (oldClass) {\n this.parent.domNode.className = this.parent.domNode.className.replace(oldClass, formats.value)\n }\n else {\n this.parent.domNode.classList.add(formats.value)\n }\n }\n\n if (data.cell && !parentFormats.cell) {\n [...CELL_IDENTITY_KEYS, ...CELL_ATTRIBUTES].forEach(key =>\n (formats[key] || data[key]) && this.parent.domNode.setAttribute(`data-${key}`, formats[key] || data[key]))\n // 如果父容器不在表格内则用单元格包裹\n if (this.parent.parent.statics.blotName !== 'table') {\n delete formats.list\n this.wrap('table', formats)\n }\n }\n\n // 当list中包含图片时,设置图片顶对齐\n if (images) {\n images.forEach((img) => {\n img.style.verticalAlign = 'top'\n })\n }\n }\n}\n\nListItem.blotName = 'list'\nListItem.tagName = 'LI'\n\nListContainer.allowedChildren = [ListItem]\nListItem.requiredContainer = ListContainer\n\n// 属性读取方法:兼容table-cell-line、ol、li\n// 因为构造时当前range对应的元素最开始是table-cell-line,然后是li,且ol的formats方法不允许覆写,会导致报错,所以整合一个兼容方法来读取需要的属性。\nfunction getFormats(dom): any {\n const formats = {}\n\n if (dom.tagName === 'OL') {\n formats.list = dom.classList.item(0)\n }\n\n return [...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS].reduce((tableFormats, attribute) => {\n if (dom.hasAttribute(`data-${attribute}`)) {\n tableFormats[attribute] = dom.getAttribute(`data-${attribute}`) || undefined\n }\n return tableFormats\n }, formats)\n}\n\nexport { ListContainer, ListItem as default }\n"],"names":["CELL_IDENTITY_KEYS","CELL_ATTRIBUTES"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const Quill = require("quill");
|
|
4
|
-
const method = require("../../utils/method.cjs.js");
|
|
5
4
|
const editor_utils = require("../../config/editor.utils.cjs.js");
|
|
5
|
+
const method = require("../../utils/method.cjs.js");
|
|
6
6
|
const tableConfig = require("../table-config.cjs.js");
|
|
7
7
|
const index = require("../utils/index.cjs.js");
|
|
8
8
|
const header = require("./header.cjs.js");
|
|
@@ -32,8 +32,8 @@ class TableCellLine extends Block {
|
|
|
32
32
|
}
|
|
33
33
|
static formats(domNode) {
|
|
34
34
|
const formats = {};
|
|
35
|
-
if (formats
|
|
36
|
-
formats
|
|
35
|
+
if (formats.list) {
|
|
36
|
+
formats.list = domNode.classList.item(0);
|
|
37
37
|
}
|
|
38
38
|
return reduceFormats(domNode, formats);
|
|
39
39
|
}
|
|
@@ -58,7 +58,7 @@ class TableCellLine extends Block {
|
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
format(name, value) {
|
|
61
|
-
if ([...tableConfig.CELL_ATTRIBUTES, ...tableConfig.CELL_IDENTITY_KEYS, "parent-bg"].
|
|
61
|
+
if ([...tableConfig.CELL_ATTRIBUTES, ...tableConfig.CELL_IDENTITY_KEYS, "parent-bg"].includes(name)) {
|
|
62
62
|
if (value) {
|
|
63
63
|
this.domNode.setAttribute(`data-${name}`, value);
|
|
64
64
|
} else {
|
|
@@ -167,10 +167,10 @@ class TableCell extends Container {
|
|
|
167
167
|
formats() {
|
|
168
168
|
const formats = {};
|
|
169
169
|
if (this.domNode.hasAttribute("data-row")) {
|
|
170
|
-
formats
|
|
170
|
+
formats.row = this.domNode.getAttribute("data-row");
|
|
171
171
|
}
|
|
172
172
|
if (this.domNode.hasAttribute("data-cell")) {
|
|
173
|
-
formats
|
|
173
|
+
formats.cell = this.domNode.getAttribute("data-cell");
|
|
174
174
|
}
|
|
175
175
|
return tableConfig.CELL_ATTRIBUTES.reduce((tableFormats, attribute) => {
|
|
176
176
|
if (this.domNode.hasAttribute(attribute)) {
|
|
@@ -191,7 +191,8 @@ class TableCell extends Container {
|
|
|
191
191
|
child.format(name, value);
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
|
-
/**
|
|
194
|
+
/**
|
|
195
|
+
* this method is for TableCellLine to change cell background color
|
|
195
196
|
* if use `format('cell-bg', value)` will loop trigger
|
|
196
197
|
* TableCellLine.optimize -> TableCell.format -> TableCellLine.optimize ...
|
|
197
198
|
*/
|
|
@@ -205,10 +206,10 @@ class TableCell extends Container {
|
|
|
205
206
|
format(name, value) {
|
|
206
207
|
const quill = Quill.find(this.scroll.domNode.parentNode);
|
|
207
208
|
switch (true) {
|
|
208
|
-
case tableConfig.CELL_ATTRIBUTES.
|
|
209
|
+
case tableConfig.CELL_ATTRIBUTES.includes(name):
|
|
209
210
|
this.toggleAttribute(name, value);
|
|
210
211
|
break;
|
|
211
|
-
case ["row", "cell"].
|
|
212
|
+
case ["row", "cell"].includes(name):
|
|
212
213
|
this.toggleAttribute(`data-${name}`, value);
|
|
213
214
|
break;
|
|
214
215
|
case name === "background": {
|
|
@@ -226,12 +227,14 @@ class TableCell extends Container {
|
|
|
226
227
|
quill.setSelection(start, length, Quill.sources.USER);
|
|
227
228
|
quill.format(name, value, Quill.sources.USER);
|
|
228
229
|
quill.setSelection(start);
|
|
230
|
+
break;
|
|
229
231
|
}
|
|
230
232
|
case name === "cell-bg": {
|
|
231
233
|
this.toggleAttribute("data-cell-bg", value);
|
|
232
234
|
this.toggleAttribute("data-parent-bg", value);
|
|
233
235
|
this.formatChildren(name, value);
|
|
234
236
|
this.setCellBg(value);
|
|
237
|
+
break;
|
|
235
238
|
}
|
|
236
239
|
}
|
|
237
240
|
}
|
|
@@ -272,7 +275,7 @@ class TableCell extends Container {
|
|
|
272
275
|
const formats = {};
|
|
273
276
|
const firstChild = domNode.childNodes[0];
|
|
274
277
|
if (firstChild && domNode.tagName === "OL") {
|
|
275
|
-
formats
|
|
278
|
+
formats.list = firstChild.classList.item(0);
|
|
276
279
|
}
|
|
277
280
|
return reduceFormats(domNode, formats);
|
|
278
281
|
}
|
|
@@ -375,7 +378,7 @@ class TableCol extends Block {
|
|
|
375
378
|
}, {});
|
|
376
379
|
}
|
|
377
380
|
format(name, value) {
|
|
378
|
-
if (tableConfig.COL_ATTRIBUTES.
|
|
381
|
+
if (tableConfig.COL_ATTRIBUTES.includes(name)) {
|
|
379
382
|
this.domNode.setAttribute(`${name}`, value || tableConfig.COL_DEFAULT[name]);
|
|
380
383
|
} else {
|
|
381
384
|
super.format(name, value);
|
|
@@ -473,7 +476,7 @@ class TableContainer extends Container {
|
|
|
473
476
|
const tableCol = col.formats()[TableCol.blotName];
|
|
474
477
|
let tableColWidth = tableConfig.COL_DEFAULT.width;
|
|
475
478
|
if (tableCol && tableCol.width) {
|
|
476
|
-
tableColWidth = parseInt(tableCol.width, 10);
|
|
479
|
+
tableColWidth = Number.parseInt(tableCol.width, 10);
|
|
477
480
|
}
|
|
478
481
|
sumWidth = sumWidth + tableColWidth;
|
|
479
482
|
return sumWidth;
|
|
@@ -495,8 +498,8 @@ class TableContainer extends Container {
|
|
|
495
498
|
}
|
|
496
499
|
colGroup.children.forEach((col) => {
|
|
497
500
|
if (maxTds && col.domNode.width === "auto") {
|
|
498
|
-
const width = getComputedStyle(maxTds[tdIndex])
|
|
499
|
-
const num = parseInt(width, 10);
|
|
501
|
+
const width = getComputedStyle(maxTds[tdIndex]).width;
|
|
502
|
+
const num = Number.parseInt(width, 10);
|
|
500
503
|
col.domNode.width = num < tableConfig.COL_DEFAULT.width && tableConfig.COL_DEFAULT.width || num;
|
|
501
504
|
}
|
|
502
505
|
tdIndex++;
|
|
@@ -542,7 +545,7 @@ class TableContainer extends Container {
|
|
|
542
545
|
cell.remove();
|
|
543
546
|
});
|
|
544
547
|
modifiedCells.forEach((cell) => {
|
|
545
|
-
const cellColspan = parseInt(cell.formats().colspan, 10);
|
|
548
|
+
const cellColspan = Number.parseInt(cell.formats().colspan, 10);
|
|
546
549
|
cell.format("colspan", cellColspan - delIndexes.length);
|
|
547
550
|
});
|
|
548
551
|
this.updateTableWidth();
|
|
@@ -598,7 +601,7 @@ class TableContainer extends Container {
|
|
|
598
601
|
});
|
|
599
602
|
});
|
|
600
603
|
modifiedCells.forEach((cell) => {
|
|
601
|
-
const cellRowspan = parseInt(cell.formats().rowspan, 10);
|
|
604
|
+
const cellRowspan = Number.parseInt(cell.formats().rowspan, 10);
|
|
602
605
|
const curRowspan = cellRowspan - removedRowsLength;
|
|
603
606
|
cell.domNode.removeAttribute("style");
|
|
604
607
|
cell.format("rowspan", curRowspan);
|
|
@@ -676,11 +679,7 @@ class TableContainer extends Container {
|
|
|
676
679
|
const cellFormats = cell.formats();
|
|
677
680
|
const tableCell = this.scroll.create(
|
|
678
681
|
TableCell.blotName,
|
|
679
|
-
{
|
|
680
|
-
...tableConfig.CELL_DEFAULT,
|
|
681
|
-
row: rId,
|
|
682
|
-
rowspan: cellFormats.rowspan
|
|
683
|
-
}
|
|
682
|
+
{ ...tableConfig.CELL_DEFAULT, row: rId, rowspan: cellFormats.rowspan }
|
|
684
683
|
);
|
|
685
684
|
const cellLine = this.scroll.create(TableCellLine.blotName, {
|
|
686
685
|
row: rId,
|
|
@@ -709,7 +708,7 @@ class TableContainer extends Container {
|
|
|
709
708
|
}
|
|
710
709
|
modifiedCells.forEach((cell) => {
|
|
711
710
|
const cellColspan = cell.formats().colspan;
|
|
712
|
-
cell.format("colspan", parseInt(cellColspan, 10) + 1);
|
|
711
|
+
cell.format("colspan", Number.parseInt(cellColspan, 10) + 1);
|
|
713
712
|
affectedCells.push(cell);
|
|
714
713
|
});
|
|
715
714
|
affectedCells.sort((cellA, cellB) => {
|
|
@@ -774,7 +773,7 @@ class TableContainer extends Container {
|
|
|
774
773
|
affectedCells.push(tableCell);
|
|
775
774
|
});
|
|
776
775
|
modifiedCells.forEach((cell) => {
|
|
777
|
-
const cellRowspan = parseInt(cell.formats().rowspan, 10);
|
|
776
|
+
const cellRowspan = Number.parseInt(cell.formats().rowspan, 10);
|
|
778
777
|
cell.format("rowspan", cellRowspan + 1);
|
|
779
778
|
affectedCells.push(cell);
|
|
780
779
|
});
|
|
@@ -803,7 +802,7 @@ class TableContainer extends Container {
|
|
|
803
802
|
result = tableCell;
|
|
804
803
|
if (rowspan > 1) {
|
|
805
804
|
const minHeight = tableConfig.CELL_MIN_HEIGHT * rowspan + rowspan - 1;
|
|
806
|
-
const cellHeight = parseInt(tableCell.domNode.style.height, 10) || 0;
|
|
805
|
+
const cellHeight = Number.parseInt(tableCell.domNode.style.height, 10) || 0;
|
|
807
806
|
if (cellHeight < minHeight) {
|
|
808
807
|
tableCell.domNode.style.height = `${minHeight}px`;
|
|
809
808
|
}
|
|
@@ -815,10 +814,10 @@ class TableContainer extends Container {
|
|
|
815
814
|
const cId = mergedCell.children.head.domNode.getAttribute("data-cell");
|
|
816
815
|
mergedCell.children.forEach((cellLine) => {
|
|
817
816
|
cellLine.domNode.setAttribute("data-parent-bg", mergedCell.domNode.style.backgroundColor);
|
|
818
|
-
if (cellLine.children
|
|
819
|
-
cellLine.children
|
|
817
|
+
if (cellLine.children.head.domNode.style) {
|
|
818
|
+
cellLine.children.head.domNode.style.backgroundColor = mergedCell.domNode.style.backgroundColor;
|
|
820
819
|
}
|
|
821
|
-
if (!cellLine.prev || cellLine.domNode.
|
|
820
|
+
if (!cellLine.prev || cellLine.domNode.textContent.trim()) {
|
|
822
821
|
cellLine.format("cell", cId);
|
|
823
822
|
cellLine.format("row", rId);
|
|
824
823
|
cellLine.format("colspan", colspan);
|