@progress/kendo-editor-common 1.10.3-dev.202309121208 → 1.10.3
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/dist/cdn/js/kendo-editor-common.js +1 -1
- package/dist/cdn/main.js +1 -1
- package/dist/es/DOMSerializer.js +188 -0
- package/dist/es/main.js +1 -0
- package/dist/es/plugins/csp-fix.js +51 -0
- package/dist/es/plugins/table-resize/column-resize.js +2 -1
- package/dist/es/plugins/table-resize/row-resize.js +2 -1
- package/dist/es/plugins/table-resize/table-resize.js +2 -1
- package/dist/es/plugins/table-resize/table-view.js +3 -17
- package/dist/es/plugins/table-resize/utils.js +0 -8
- package/dist/es/source.js +29 -19
- package/dist/es/utils.js +31 -0
- package/dist/es2015/DOMSerializer.js +181 -0
- package/dist/es2015/main.js +1 -0
- package/dist/es2015/plugins/csp-fix.js +48 -0
- package/dist/es2015/plugins/table-resize/column-resize.js +2 -1
- package/dist/es2015/plugins/table-resize/row-resize.js +2 -1
- package/dist/es2015/plugins/table-resize/table-resize.js +2 -1
- package/dist/es2015/plugins/table-resize/table-view.js +3 -17
- package/dist/es2015/plugins/table-resize/utils.js +0 -7
- package/dist/es2015/source.js +27 -19
- package/dist/es2015/utils.js +30 -0
- package/dist/npm/DOMSerializer.d.ts +35 -0
- package/dist/npm/DOMSerializer.js +191 -0
- package/dist/npm/main.d.ts +1 -0
- package/dist/npm/main.js +4 -2
- package/dist/npm/plugins/csp-fix.d.ts +2 -0
- package/dist/npm/plugins/csp-fix.js +55 -0
- package/dist/npm/plugins/table-resize/column-resize.js +23 -22
- package/dist/npm/plugins/table-resize/row-resize.js +3 -2
- package/dist/npm/plugins/table-resize/table-resize.js +7 -6
- package/dist/npm/plugins/table-resize/table-view.js +3 -17
- package/dist/npm/plugins/table-resize/utils.d.ts +0 -3
- package/dist/npm/plugins/table-resize/utils.js +1 -10
- package/dist/npm/source.js +29 -19
- package/dist/npm/utils.d.ts +4 -0
- package/dist/npm/utils.js +34 -1
- package/dist/systemjs/kendo-editor-common.js +1 -1
- package/package.json +1 -1
|
@@ -7,11 +7,12 @@ var prosemirror_tables_1 = require("prosemirror-tables");
|
|
|
7
7
|
var prosemirror_view_1 = require("prosemirror-view");
|
|
8
8
|
var constants_1 = require("../../config/constants");
|
|
9
9
|
var table_view_1 = require("./table-view");
|
|
10
|
-
var utils_1 = require("
|
|
10
|
+
var utils_1 = require("./../../utils");
|
|
11
|
+
var utils_2 = require("./utils");
|
|
11
12
|
function columnResizing() {
|
|
12
13
|
var handleWidth = 5, cellMinWidth = 25;
|
|
13
14
|
var plugin = new prosemirror_state_1.Plugin({
|
|
14
|
-
key:
|
|
15
|
+
key: utils_2.tableColumnResizeKey,
|
|
15
16
|
state: {
|
|
16
17
|
init: function (_, _state) {
|
|
17
18
|
return new ResizeState(-1, null);
|
|
@@ -22,15 +23,15 @@ function columnResizing() {
|
|
|
22
23
|
},
|
|
23
24
|
props: {
|
|
24
25
|
attributes: function (state) {
|
|
25
|
-
if (
|
|
26
|
+
if (utils_2.otherResizeHandle(utils_2.tableColumnResizeKey, state)) {
|
|
26
27
|
return null;
|
|
27
28
|
}
|
|
28
|
-
var pluginState =
|
|
29
|
+
var pluginState = utils_2.tableColumnResizeKey.getState(state);
|
|
29
30
|
return pluginState.activeHandle > -1 ? { class: 'resize-cursor' } : null;
|
|
30
31
|
},
|
|
31
32
|
handleDOMEvents: {
|
|
32
33
|
mousemove: function (view, event) {
|
|
33
|
-
if (!
|
|
34
|
+
if (!utils_2.otherResizing(utils_2.tableColumnResizeKey, view.state)) {
|
|
34
35
|
handleMouseMove(view, event, handleWidth);
|
|
35
36
|
}
|
|
36
37
|
return false;
|
|
@@ -44,8 +45,8 @@ function columnResizing() {
|
|
|
44
45
|
}
|
|
45
46
|
},
|
|
46
47
|
decorations: function (state) {
|
|
47
|
-
if (!
|
|
48
|
-
var pluginState =
|
|
48
|
+
if (!utils_2.otherResizing(utils_2.tableColumnResizeKey, state)) {
|
|
49
|
+
var pluginState = utils_2.tableColumnResizeKey.getState(state);
|
|
49
50
|
if (pluginState.activeHandle > -1) {
|
|
50
51
|
return handleDecorations(state, pluginState.activeHandle);
|
|
51
52
|
}
|
|
@@ -70,7 +71,7 @@ var ResizeState = /** @class */ (function () {
|
|
|
70
71
|
this.dragging = dragging;
|
|
71
72
|
}
|
|
72
73
|
ResizeState.prototype.apply = function (tr) {
|
|
73
|
-
var state = this, action = tr.getMeta(
|
|
74
|
+
var state = this, action = tr.getMeta(utils_2.tableColumnResizeKey);
|
|
74
75
|
if (action && action.setHandle != null) {
|
|
75
76
|
return new ResizeState(action.setHandle, null);
|
|
76
77
|
}
|
|
@@ -89,18 +90,18 @@ var ResizeState = /** @class */ (function () {
|
|
|
89
90
|
return ResizeState;
|
|
90
91
|
}());
|
|
91
92
|
function handleMouseMove(view, event, handleWidth) {
|
|
92
|
-
var pluginState =
|
|
93
|
+
var pluginState = utils_2.tableColumnResizeKey.getState(view.state);
|
|
93
94
|
if (!pluginState.dragging) {
|
|
94
|
-
var target =
|
|
95
|
+
var target = utils_2.domCellAround(event.target), cell = -1;
|
|
95
96
|
if (target) {
|
|
96
|
-
var indexes =
|
|
97
|
+
var indexes = utils_2.cellIndexes(target);
|
|
97
98
|
var _a = target.getBoundingClientRect(), left = _a.left, right = _a.right;
|
|
98
99
|
if (Math.abs(event.clientX - left) <= handleWidth && indexes.cellIndex > 0) {
|
|
99
100
|
indexes.cellIndex -= target.colSpan;
|
|
100
|
-
cell =
|
|
101
|
+
cell = utils_2.edgeCell(view, event, indexes);
|
|
101
102
|
}
|
|
102
103
|
else if (right - event.clientX > 0 && right - event.clientX <= handleWidth) {
|
|
103
|
-
cell =
|
|
104
|
+
cell = utils_2.edgeCell(view, event, indexes);
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
if (cell !== pluginState.activeHandle) {
|
|
@@ -109,14 +110,14 @@ function handleMouseMove(view, event, handleWidth) {
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
function handleMouseLeave(view) {
|
|
112
|
-
var pluginState =
|
|
113
|
+
var pluginState = utils_2.tableColumnResizeKey.getState(view.state);
|
|
113
114
|
if (pluginState.activeHandle > -1 && !pluginState.dragging) {
|
|
114
115
|
updateHandle(view, -1);
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
function handleMouseDown(view, event, cellMinWidth) {
|
|
118
119
|
var _a;
|
|
119
|
-
var pluginState =
|
|
120
|
+
var pluginState = utils_2.tableColumnResizeKey.getState(view.state);
|
|
120
121
|
if (pluginState.activeHandle === -1 || pluginState.dragging) {
|
|
121
122
|
return false;
|
|
122
123
|
}
|
|
@@ -156,12 +157,12 @@ function handleMouseDown(view, event, cellMinWidth) {
|
|
|
156
157
|
tableAttrs = tslib_1.__assign(tslib_1.__assign({}, tableNode.attrs), (_a = {}, _a[constants_1.colgroupAttr] = '<colgroup>' + cols.reduce(function (acc, cur) { return acc + cur.outerHTML; }, '') + '</colgroup>', _a));
|
|
157
158
|
}
|
|
158
159
|
var width = parseFloat(col.style.width);
|
|
159
|
-
var tr = view.state.tr.setMeta(
|
|
160
|
+
var tr = view.state.tr.setMeta(utils_2.tableColumnResizeKey, { setDragging: { startX: event.clientX, startWidth: width } });
|
|
160
161
|
if (!tableDom.style.width) {
|
|
161
162
|
var widths = Array.from(col.parentNode.children).map(function (c) { return c.style.width; });
|
|
162
163
|
if (widths.every(Boolean)) {
|
|
163
164
|
var sum = widths.reduce(function (acc, cur) { return acc + parseFloat(cur); }, 0);
|
|
164
|
-
tableAttrs =
|
|
165
|
+
tableAttrs = utils_2.setNodeStyle(tableAttrs || tableNode.attrs, 'width', sum + 'px');
|
|
165
166
|
}
|
|
166
167
|
}
|
|
167
168
|
if (tableAttrs) {
|
|
@@ -172,18 +173,18 @@ function handleMouseDown(view, event, cellMinWidth) {
|
|
|
172
173
|
function finish(ev) {
|
|
173
174
|
ev.view.removeEventListener('mouseup', finish);
|
|
174
175
|
ev.view.removeEventListener('mousemove', move);
|
|
175
|
-
var curPluginState =
|
|
176
|
+
var curPluginState = utils_2.tableColumnResizeKey.getState(view.state);
|
|
176
177
|
if (curPluginState.dragging) {
|
|
177
178
|
var transaction = view.state.tr;
|
|
178
179
|
updateColumnWidth(view, transaction, curPluginState.activeHandle, draggedWidth(curPluginState.dragging, ev, cellMinWidth));
|
|
179
|
-
view.dispatch(transaction.setMeta(
|
|
180
|
+
view.dispatch(transaction.setMeta(utils_2.tableColumnResizeKey, { setDragging: null }));
|
|
180
181
|
}
|
|
181
182
|
}
|
|
182
183
|
function move(ev) {
|
|
183
184
|
if (!ev.which) {
|
|
184
185
|
return finish(ev);
|
|
185
186
|
}
|
|
186
|
-
var curPluginState =
|
|
187
|
+
var curPluginState = utils_2.tableColumnResizeKey.getState(view.state);
|
|
187
188
|
var dragged = draggedWidth(curPluginState.dragging, ev, cellMinWidth);
|
|
188
189
|
displayColumnWidth(view, curPluginState.activeHandle, dragged, cellMinWidth);
|
|
189
190
|
}
|
|
@@ -199,7 +200,7 @@ function draggedWidth(dragging, event, cellMinWidth) {
|
|
|
199
200
|
function updateHandle(view, value) {
|
|
200
201
|
var tr = view.state.tr;
|
|
201
202
|
tr.setMeta('addToHistory', false);
|
|
202
|
-
tr.setMeta(
|
|
203
|
+
tr.setMeta(utils_2.tableColumnResizeKey, { setHandle: value });
|
|
203
204
|
view.dispatch(tr);
|
|
204
205
|
}
|
|
205
206
|
function updateColumnWidth(view, tr, cell, _width) {
|
|
@@ -215,7 +216,7 @@ function updateColumnWidth(view, tr, cell, _width) {
|
|
|
215
216
|
}
|
|
216
217
|
var tableDomWidth = tableDom.style.width;
|
|
217
218
|
if (tableDom && tableDomWidth && utils_1.parseStyle(attrs.style).width !== tableDomWidth) {
|
|
218
|
-
attrs =
|
|
219
|
+
attrs = utils_2.setNodeStyle(attrs, 'width', tableDomWidth);
|
|
219
220
|
}
|
|
220
221
|
tr.setNodeMarkup(tablePos, null, attrs);
|
|
221
222
|
}
|
|
@@ -5,6 +5,7 @@ var prosemirror_state_1 = require("prosemirror-state");
|
|
|
5
5
|
var prosemirror_tables_1 = require("prosemirror-tables");
|
|
6
6
|
var prosemirror_view_1 = require("prosemirror-view");
|
|
7
7
|
var utils_1 = require("./utils");
|
|
8
|
+
var utils_2 = require("./../../utils");
|
|
8
9
|
var TableRowView = /** @class */ (function () {
|
|
9
10
|
function TableRowView() {
|
|
10
11
|
}
|
|
@@ -126,8 +127,8 @@ function handleMouseDown(view, event) {
|
|
|
126
127
|
var $cell = doc.resolve(pluginState.activeHandle);
|
|
127
128
|
var row = $cell.parent;
|
|
128
129
|
var table = $cell.node(-1);
|
|
129
|
-
var rowHeightStr =
|
|
130
|
-
var tableHeight =
|
|
130
|
+
var rowHeightStr = utils_2.parseStyle(row.attrs.style).height;
|
|
131
|
+
var tableHeight = utils_2.parseStyle(table.attrs.style).height;
|
|
131
132
|
var rowHeight = rowHeightStr ? parseFloat(rowHeightStr) : 0;
|
|
132
133
|
if (!rowHeightStr) {
|
|
133
134
|
var tr = view.nodeDOM(pluginState.activeHandle);
|
|
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var prosemirror_state_1 = require("prosemirror-state");
|
|
6
6
|
var constants_1 = require("../../config/constants");
|
|
7
7
|
var utils_1 = require("./utils");
|
|
8
|
+
var utils_2 = require("./../../utils");
|
|
8
9
|
var resize_utils_1 = require("./../resize-utils");
|
|
9
10
|
var commonDir = {
|
|
10
11
|
'southeast': true,
|
|
@@ -78,14 +79,14 @@ var toPercents = function (view, tr, tablePos) {
|
|
|
78
79
|
});
|
|
79
80
|
var heightChange = false;
|
|
80
81
|
tableNode.forEach(function (row, offset, index) {
|
|
81
|
-
var rowHeight =
|
|
82
|
+
var rowHeight = utils_2.parseStyle(row.attrs.style).height;
|
|
82
83
|
if (rowHeight && !/%$/.test(rowHeight)) {
|
|
83
84
|
tr.setNodeMarkup(tablePos + offset + 1, null, utils_1.setNodeStyle(row.attrs, 'height', (rowsHeight[index] * 100 / height) + '%'));
|
|
84
85
|
heightChange = true;
|
|
85
86
|
}
|
|
86
87
|
});
|
|
87
88
|
var tableAttrs = tableNode.attrs;
|
|
88
|
-
if (
|
|
89
|
+
if (utils_2.parseStyle(tableAttrs.style).width !== offsetWidth + 'px') {
|
|
89
90
|
tableAttrs = utils_1.setNodeStyle(tableAttrs, 'width', offsetWidth + 'px');
|
|
90
91
|
}
|
|
91
92
|
if (widthChanged) {
|
|
@@ -105,7 +106,7 @@ var toPixels = function (view, tr, tablePos, attrs) {
|
|
|
105
106
|
var calcStyle = win.getComputedStyle;
|
|
106
107
|
var rows = Array.from(tableDom.rows);
|
|
107
108
|
tableNode.forEach(function (row, offset, index) {
|
|
108
|
-
var rowHeight =
|
|
109
|
+
var rowHeight = utils_2.parseStyle(row.attrs.style).height;
|
|
109
110
|
if (rowHeight && !/px$/.test(rowHeight)) {
|
|
110
111
|
tr.setNodeMarkup(tablePos + offset + 1, null, utils_1.setNodeStyle(row.attrs, 'height', calcStyle(rows[index]).height));
|
|
111
112
|
}
|
|
@@ -146,7 +147,7 @@ var handleMouseUp = function (view) {
|
|
|
146
147
|
var height = rect.offsetHeight + 'px';
|
|
147
148
|
var tr = view.state.tr;
|
|
148
149
|
var attrs = node.attrs;
|
|
149
|
-
var parsedStyles =
|
|
150
|
+
var parsedStyles = utils_2.parseStyle(attrs.style);
|
|
150
151
|
if (horizontalDir[activeHandle] && dom.style.width && parsedStyles.width !== width) {
|
|
151
152
|
attrs = utils_1.setNodeStyle(attrs, 'width', width);
|
|
152
153
|
}
|
|
@@ -162,10 +163,10 @@ var handleMouseUp = function (view) {
|
|
|
162
163
|
activeHandle: null,
|
|
163
164
|
nodePosition: nodePosition
|
|
164
165
|
});
|
|
165
|
-
if (!/%/.test(
|
|
166
|
+
if (!/%/.test(utils_2.parseStyle(attrs.style).width || '')) {
|
|
166
167
|
var $pos = tr.doc.resolve(nodePosition);
|
|
167
168
|
var wrapper = utils_1.parentNode($pos, function (n) { return n.type.name === 'table_wrapper'; });
|
|
168
|
-
if (wrapper && /%/.test(
|
|
169
|
+
if (wrapper && /%/.test(utils_2.parseStyle(wrapper.node.attrs.style).width || '')) {
|
|
169
170
|
var wrapperAttrs = utils_1.setNodeStyle(wrapper.node.attrs, 'width', '');
|
|
170
171
|
var wrapperPos = $pos.start(wrapper.depth) - 1;
|
|
171
172
|
tr.setNodeMarkup(wrapperPos, null, wrapperAttrs);
|
|
@@ -4,7 +4,7 @@ exports.TableWrapperView = exports.TableView = void 0;
|
|
|
4
4
|
var constants_1 = require("../../config/constants");
|
|
5
5
|
var schema_1 = require("../../config/schema");
|
|
6
6
|
var resize_utils_1 = require("./../resize-utils");
|
|
7
|
-
var utils_1 = require("
|
|
7
|
+
var utils_1 = require("./../../utils");
|
|
8
8
|
var TableView = /** @class */ (function () {
|
|
9
9
|
function TableView(node, view) {
|
|
10
10
|
this.node = node;
|
|
@@ -75,14 +75,7 @@ var TableView = /** @class */ (function () {
|
|
|
75
75
|
var skip = [constants_1.colgroupAttr, constants_1.resizableAttr];
|
|
76
76
|
for (var attrName in attrs) {
|
|
77
77
|
if (attrName && skip.indexOf(attrName) === -1) {
|
|
78
|
-
|
|
79
|
-
var next = attrs[attrName];
|
|
80
|
-
if (next && next !== current) {
|
|
81
|
-
table.setAttribute(attrName, next);
|
|
82
|
-
}
|
|
83
|
-
else if (!next) {
|
|
84
|
-
table.removeAttribute(attrName);
|
|
85
|
-
}
|
|
78
|
+
utils_1.setAttribute(table, attrName, attrs[attrName]);
|
|
86
79
|
}
|
|
87
80
|
}
|
|
88
81
|
if (/%$/.test(table.style.width)) {
|
|
@@ -122,14 +115,7 @@ var TableWrapperView = /** @class */ (function () {
|
|
|
122
115
|
TableWrapperView.prototype.setAttributes = function (dom, attrs) {
|
|
123
116
|
for (var attrName in attrs) {
|
|
124
117
|
if (attrName) {
|
|
125
|
-
|
|
126
|
-
var next = attrs[attrName];
|
|
127
|
-
if (next && next !== current) {
|
|
128
|
-
dom.setAttribute(attrName, next);
|
|
129
|
-
}
|
|
130
|
-
else if (!next) {
|
|
131
|
-
dom.removeAttribute(attrName);
|
|
132
|
-
}
|
|
118
|
+
utils_1.setAttribute(dom, attrName, attrs[attrName]);
|
|
133
119
|
}
|
|
134
120
|
}
|
|
135
121
|
dom.setAttribute('table', '');
|
|
@@ -2,9 +2,6 @@ import { Node, ResolvedPos } from 'prosemirror-model';
|
|
|
2
2
|
import { EditorState, PluginKey } from 'prosemirror-state';
|
|
3
3
|
import { EditorView } from 'prosemirror-view';
|
|
4
4
|
export declare const reAnyValue: RegExp;
|
|
5
|
-
export declare const parseStyle: (styleText: string | null) => {
|
|
6
|
-
[x: string]: string;
|
|
7
|
-
};
|
|
8
5
|
export declare function setNodeStyle(nodeAttrs: any, styleType: string, value: string): any;
|
|
9
6
|
export declare const tableResizeKey: PluginKey<any>;
|
|
10
7
|
export declare const tableColumnResizeKey: PluginKey<any>;
|
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.edgeCell = exports.parentNode = exports.cellIndexes = exports.domCellAround = exports.getTable = exports.otherResizeHandle = exports.otherResizing = exports.tableRowResizeKey = exports.tableColumnResizeKey = exports.tableResizeKey = exports.setNodeStyle = exports.
|
|
3
|
+
exports.edgeCell = exports.parentNode = exports.cellIndexes = exports.domCellAround = exports.getTable = exports.otherResizeHandle = exports.otherResizing = exports.tableRowResizeKey = exports.tableColumnResizeKey = exports.tableResizeKey = exports.setNodeStyle = exports.reAnyValue = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var prosemirror_state_1 = require("prosemirror-state");
|
|
6
6
|
var prosemirror_tables_1 = require("prosemirror-tables");
|
|
7
7
|
var utils_1 = require("../../utils");
|
|
8
8
|
exports.reAnyValue = /^.+$/;
|
|
9
|
-
var parseStyle = function (styleText) {
|
|
10
|
-
var styles = (styleText || '').split(/\s*;\s*/).filter(Boolean).map(function (s) {
|
|
11
|
-
var _a;
|
|
12
|
-
var nameValue = s.split(/\s*:\s*/);
|
|
13
|
-
return _a = {}, _a[nameValue[0]] = nameValue[1], _a;
|
|
14
|
-
}).reduce(function (acc, val) { return (tslib_1.__assign(tslib_1.__assign({}, acc), val)); }, {});
|
|
15
|
-
return styles;
|
|
16
|
-
};
|
|
17
|
-
exports.parseStyle = parseStyle;
|
|
18
9
|
function setNodeStyle(nodeAttrs, styleType, value) {
|
|
19
10
|
var attrs;
|
|
20
11
|
if (new RegExp('[^-]?' + styleType + ':').test(nodeAttrs.style || '')) {
|
package/dist/npm/source.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.setHtml = exports.getHtml = exports.parseContent = exports.domToPmDoc =
|
|
|
4
4
|
var prosemirror_model_1 = require("prosemirror-model");
|
|
5
5
|
var prosemirror_state_1 = require("prosemirror-state");
|
|
6
6
|
var constants_1 = require("./config/constants");
|
|
7
|
+
var DOMSerializer_1 = require("./DOMSerializer");
|
|
7
8
|
var blockWrappers = [
|
|
8
9
|
'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'caption', 'td', 'th', 'p',
|
|
9
10
|
'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'
|
|
@@ -132,6 +133,29 @@ var trimWhitespace = function (html, trimAroundTags) {
|
|
|
132
133
|
.replace(new RegExp('(<\\/(?:' + tags + ')(?:\\s[^>]*?)?>)\\s*', 'g'), '$1');
|
|
133
134
|
};
|
|
134
135
|
exports.trimWhitespace = trimWhitespace;
|
|
136
|
+
var styleAttr = 'data-style';
|
|
137
|
+
var styleReplace = ' ' + styleAttr + '=';
|
|
138
|
+
var reTag = /<[^>]+>/gm;
|
|
139
|
+
var reStyle = /\sstyle=/gm;
|
|
140
|
+
var replacer = function (match) {
|
|
141
|
+
return match.replace(reStyle, styleReplace);
|
|
142
|
+
};
|
|
143
|
+
var replaceStyleAttr = function (html) {
|
|
144
|
+
return html.replace(reTag, replacer);
|
|
145
|
+
};
|
|
146
|
+
var applyStyle = function (styleString, element) {
|
|
147
|
+
return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {
|
|
148
|
+
var parts = s.split(':');
|
|
149
|
+
element.style[parts[0].trim()] = parts[1].trim();
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
var restoreStyleAttr = function (container) {
|
|
153
|
+
Array.from(container.querySelectorAll('[' + styleAttr + ']')).forEach(function (element) {
|
|
154
|
+
var styleString = element.getAttribute(styleAttr);
|
|
155
|
+
element.removeAttribute(styleAttr);
|
|
156
|
+
applyStyle(styleString, element);
|
|
157
|
+
});
|
|
158
|
+
};
|
|
135
159
|
/**
|
|
136
160
|
* Creates a DocumentFragment from the given HTML content.
|
|
137
161
|
*
|
|
@@ -140,21 +164,9 @@ exports.trimWhitespace = trimWhitespace;
|
|
|
140
164
|
*/
|
|
141
165
|
var htmlToFragment = function (html) {
|
|
142
166
|
var template = document.createElement('template');
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
fragment = template.content;
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
// Internet Explorer
|
|
150
|
-
var parsedDocument = new DOMParser().parseFromString(html, 'text/html');
|
|
151
|
-
fragment = document.createDocumentFragment();
|
|
152
|
-
var dom = parsedDocument.body;
|
|
153
|
-
while (dom && dom.firstChild) {
|
|
154
|
-
fragment.appendChild(dom.firstChild);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return fragment;
|
|
167
|
+
template.innerHTML = replaceStyleAttr(html);
|
|
168
|
+
restoreStyleAttr(template.content);
|
|
169
|
+
return template.content;
|
|
158
170
|
};
|
|
159
171
|
exports.htmlToFragment = htmlToFragment;
|
|
160
172
|
/**
|
|
@@ -170,7 +182,7 @@ exports.fragmentToHtml = fragmentToHtml;
|
|
|
170
182
|
* @returns DocumentFragment
|
|
171
183
|
*/
|
|
172
184
|
var pmDocToFragment = function (doc) {
|
|
173
|
-
var fragment =
|
|
185
|
+
var fragment = DOMSerializer_1.DOMSerializer.fromSchema(doc.type.schema).serializeFragment(doc.content);
|
|
174
186
|
restoreTables(fragment);
|
|
175
187
|
return fragment;
|
|
176
188
|
};
|
|
@@ -209,9 +221,7 @@ exports.parseContent = parseContent;
|
|
|
209
221
|
*/
|
|
210
222
|
var getHtml = function (state) {
|
|
211
223
|
var fragment = exports.pmDocToFragment(state.doc);
|
|
212
|
-
|
|
213
|
-
container.appendChild(fragment);
|
|
214
|
-
return container.innerHTML;
|
|
224
|
+
return exports.fragmentToHtml(fragment);
|
|
215
225
|
};
|
|
216
226
|
exports.getHtml = getHtml;
|
|
217
227
|
/**
|
package/dist/npm/utils.d.ts
CHANGED
|
@@ -56,3 +56,7 @@ export declare const expandSelection: (state: any, dispatch: any, options: any)
|
|
|
56
56
|
* command(view.state, view.dispatch);
|
|
57
57
|
*/
|
|
58
58
|
export declare const expandToWordWrap: (command: any, options: any) => (state: any, dispatch: any, _view?: any) => any;
|
|
59
|
+
export declare const parseStyle: (styleText: string | null) => {
|
|
60
|
+
[x: string]: string;
|
|
61
|
+
};
|
|
62
|
+
export declare const setAttribute: (node: HTMLElement, attrName: string, value?: string) => void;
|
package/dist/npm/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.expandToWordWrap = exports.expandSelection = exports.shallowEqual = exports.indentHtml = exports.selectedLineTextOnly = exports.getNodeFromSelection = exports.getSelectionText = exports.hasSameMarkup = exports.insertNode = exports.findNthParentNodeOfType = exports.canInsert = exports.changeStylesString = void 0;
|
|
3
|
+
exports.setAttribute = exports.parseStyle = exports.expandToWordWrap = exports.expandSelection = exports.shallowEqual = exports.indentHtml = exports.selectedLineTextOnly = exports.getNodeFromSelection = exports.getSelectionText = exports.hasSameMarkup = exports.insertNode = exports.findNthParentNodeOfType = exports.canInsert = exports.changeStylesString = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var prosemirror_model_1 = require("prosemirror-model");
|
|
6
6
|
var prosemirror_state_1 = require("prosemirror-state");
|
|
@@ -247,3 +247,36 @@ var expandToWordWrap = function (command, options) {
|
|
|
247
247
|
};
|
|
248
248
|
};
|
|
249
249
|
exports.expandToWordWrap = expandToWordWrap;
|
|
250
|
+
var parseStyle = function (styleText) {
|
|
251
|
+
var styles = (styleText || '').split(/\s*;\s*/).filter(Boolean).map(function (s) {
|
|
252
|
+
var _a;
|
|
253
|
+
var nameValue = s.split(/\s*:\s*/);
|
|
254
|
+
return _a = {}, _a[nameValue[0]] = nameValue[1], _a;
|
|
255
|
+
}).reduce(function (acc, val) { return (tslib_1.__assign(tslib_1.__assign({}, acc), val)); }, {});
|
|
256
|
+
return styles;
|
|
257
|
+
};
|
|
258
|
+
exports.parseStyle = parseStyle;
|
|
259
|
+
var setStyleAttr = function (element, styleString) {
|
|
260
|
+
var styles = exports.parseStyle(styleString);
|
|
261
|
+
for (var style in styles) {
|
|
262
|
+
if (style && typeof element.style[style] !== 'undefined') {
|
|
263
|
+
element.style[style] = styles[style];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
var setAttribute = function (node, attrName, value) {
|
|
268
|
+
var current = node.getAttribute(attrName);
|
|
269
|
+
if (value !== undefined && value !== current) {
|
|
270
|
+
if (attrName === 'style') {
|
|
271
|
+
node.removeAttribute(attrName);
|
|
272
|
+
setStyleAttr(node, value);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
node.setAttribute(attrName, value);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else if (value === undefined) {
|
|
279
|
+
node.removeAttribute(attrName);
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
exports.setAttribute = setAttribute;
|