@progress/kendo-editor-common 1.11.9-dev.202412020819 → 1.11.9-develop.2
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/main.js +1 -1
- package/dist/es/DOMSerializer.js +71 -75
- package/dist/es/align.js +19 -16
- package/dist/es/blockNode.js +76 -78
- package/dist/es/blockquote.js +12 -9
- package/dist/es/cleanFormatting.js +16 -16
- package/dist/es/config/align-rules.js +8 -6
- package/dist/es/config/commands.js +9 -13
- package/dist/es/config/constants.js +9 -7
- package/dist/es/config/indent-rules.js +8 -6
- package/dist/es/config/keymap.js +20 -18
- package/dist/es/config/list-settings.js +7 -6
- package/dist/es/config/schema.js +184 -126
- package/dist/es/find-replace.js +34 -32
- package/dist/es/image.js +10 -7
- package/dist/es/indent.js +47 -44
- package/dist/es/inline-style.js +72 -70
- package/dist/es/link.js +51 -52
- package/dist/es/listConvert.js +37 -34
- package/dist/es/lists.js +83 -82
- package/dist/es/main.js +32 -33
- package/dist/es/mark.js +87 -92
- package/dist/es/paste.js +48 -46
- package/dist/es/plugins/caret-color.js +14 -11
- package/dist/es/plugins/csp-fix.js +23 -23
- package/dist/es/plugins/highlight.js +12 -10
- package/dist/es/plugins/image-resize.js +81 -81
- package/dist/es/plugins/list-markers-styles.js +43 -39
- package/dist/es/plugins/placeholder.js +12 -9
- package/dist/es/plugins/resize-utils.js +11 -9
- package/dist/es/plugins/spaces-fix.js +13 -10
- package/dist/es/plugins/table-resize/column-resize.js +104 -102
- package/dist/es/plugins/table-resize/index.js +10 -7
- package/dist/es/plugins/table-resize/row-resize.js +88 -89
- package/dist/es/plugins/table-resize/table-resize.js +129 -122
- package/dist/es/plugins/table-resize/table-view.js +46 -48
- package/dist/es/plugins/table-resize/utils.js +39 -41
- package/dist/es/source.js +78 -74
- package/dist/es/table.js +64 -66
- package/dist/es/text.js +4 -2
- package/dist/es/utils.js +107 -116
- package/dist/es2015/DOMSerializer.js +20 -17
- package/dist/es2015/align.js +6 -3
- package/dist/es2015/blockNode.js +15 -12
- package/dist/es2015/blockquote.js +5 -2
- package/dist/es2015/cleanFormatting.js +6 -3
- package/dist/es2015/config/align-rules.js +7 -5
- package/dist/es2015/config/commands.js +9 -13
- package/dist/es2015/config/constants.js +9 -7
- package/dist/es2015/config/indent-rules.js +6 -3
- package/dist/es2015/config/keymap.js +10 -7
- package/dist/es2015/config/list-settings.js +5 -3
- package/dist/es2015/config/schema.js +8 -6
- package/dist/es2015/find-replace.js +9 -6
- package/dist/es2015/image.js +5 -2
- package/dist/es2015/indent.js +14 -11
- package/dist/es2015/inline-style.js +9 -6
- package/dist/es2015/link.js +7 -4
- package/dist/es2015/listConvert.js +5 -2
- package/dist/es2015/lists.js +14 -11
- package/dist/es2015/main.js +32 -33
- package/dist/es2015/mark.js +15 -12
- package/dist/es2015/node_modules/tslib/tslib.es6.js +35 -0
- package/dist/es2015/paste.js +14 -11
- package/dist/es2015/plugins/caret-color.js +8 -5
- package/dist/es2015/plugins/csp-fix.js +5 -2
- package/dist/es2015/plugins/highlight.js +6 -3
- package/dist/es2015/plugins/image-resize.js +10 -7
- package/dist/es2015/plugins/list-markers-styles.js +6 -3
- package/dist/es2015/plugins/placeholder.js +5 -2
- package/dist/es2015/plugins/resize-utils.js +11 -9
- package/dist/es2015/plugins/spaces-fix.js +4 -1
- package/dist/es2015/plugins/table-resize/column-resize.js +24 -21
- package/dist/es2015/plugins/table-resize/index.js +9 -6
- package/dist/es2015/plugins/table-resize/row-resize.js +23 -20
- package/dist/es2015/plugins/table-resize/table-resize.js +20 -17
- package/dist/es2015/plugins/table-resize/table-view.js +9 -6
- package/dist/es2015/plugins/table-resize/utils.js +13 -10
- package/dist/es2015/source.js +24 -13
- package/dist/es2015/table.js +18 -15
- package/dist/es2015/text.js +3 -1
- package/dist/es2015/utils.js +22 -25
- package/dist/npm/DOMSerializer.js +73 -78
- package/dist/npm/align.d.ts +7 -4
- package/dist/npm/align.js +22 -21
- package/dist/npm/blockNode.d.ts +14 -15
- package/dist/npm/blockNode.js +91 -95
- package/dist/npm/blockquote.d.ts +5 -2
- package/dist/npm/blockquote.js +16 -15
- package/dist/npm/cleanFormatting.d.ts +6 -3
- package/dist/npm/cleanFormatting.js +17 -19
- package/dist/npm/config/align-rules.d.ts +8 -6
- package/dist/npm/config/align-rules.js +14 -9
- package/dist/npm/config/commands.d.ts +11 -19
- package/dist/npm/config/commands.js +17 -16
- package/dist/npm/config/constants.js +17 -10
- package/dist/npm/config/indent-rules.d.ts +6 -4
- package/dist/npm/config/indent-rules.js +11 -9
- package/dist/npm/config/keymap.d.ts +5 -2
- package/dist/npm/config/keymap.js +30 -30
- package/dist/npm/config/list-settings.js +13 -11
- package/dist/npm/config/schema.d.ts +4 -3
- package/dist/npm/config/schema.js +191 -134
- package/dist/npm/find-replace.d.ts +10 -7
- package/dist/npm/find-replace.js +47 -47
- package/dist/npm/image.d.ts +6 -3
- package/dist/npm/image.js +11 -10
- package/dist/npm/indent.d.ts +12 -9
- package/dist/npm/indent.js +68 -67
- package/dist/npm/inline-style.d.ts +7 -4
- package/dist/npm/inline-style.js +83 -83
- package/dist/npm/link.d.ts +4 -2
- package/dist/npm/link.js +58 -61
- package/dist/npm/listConvert.d.ts +3 -1
- package/dist/npm/listConvert.js +40 -39
- package/dist/npm/lists.d.ts +9 -9
- package/dist/npm/lists.js +94 -95
- package/dist/npm/main.d.ts +34 -33
- package/dist/npm/main.js +389 -198
- package/dist/npm/mark.d.ts +13 -18
- package/dist/npm/mark.js +104 -111
- package/dist/npm/paste.d.ts +12 -9
- package/dist/npm/paste.js +61 -61
- package/dist/npm/plugins/caret-color.d.ts +6 -3
- package/dist/npm/plugins/caret-color.js +21 -19
- package/dist/npm/plugins/csp-fix.d.ts +4 -1
- package/dist/npm/plugins/csp-fix.js +28 -30
- package/dist/npm/plugins/highlight.d.ts +7 -4
- package/dist/npm/plugins/highlight.js +17 -16
- package/dist/npm/plugins/image-resize.d.ts +7 -5
- package/dist/npm/plugins/image-resize.js +96 -97
- package/dist/npm/plugins/list-markers-styles.d.ts +5 -2
- package/dist/npm/plugins/list-markers-styles.js +49 -47
- package/dist/npm/plugins/placeholder.d.ts +4 -1
- package/dist/npm/plugins/placeholder.js +18 -17
- package/dist/npm/plugins/resize-utils.js +14 -12
- package/dist/npm/plugins/spaces-fix.d.ts +4 -1
- package/dist/npm/plugins/spaces-fix.js +19 -18
- package/dist/npm/plugins/table-resize/column-resize.js +117 -117
- package/dist/npm/plugins/table-resize/index.d.ts +5 -2
- package/dist/npm/plugins/table-resize/index.js +16 -15
- package/dist/npm/plugins/table-resize/row-resize.js +98 -101
- package/dist/npm/plugins/table-resize/table-resize.js +144 -139
- package/dist/npm/plugins/table-resize/table-view.js +59 -61
- package/dist/npm/plugins/table-resize/utils.d.ts +7 -17
- package/dist/npm/plugins/table-resize/utils.js +51 -52
- package/dist/npm/source.d.ts +18 -11
- package/dist/npm/source.js +94 -91
- package/dist/npm/table.d.ts +10 -9
- package/dist/npm/table.js +93 -82
- package/dist/npm/text.d.ts +6 -3
- package/dist/npm/text.js +5 -5
- package/dist/npm/types/active-marks.d.ts +4 -1
- package/dist/npm/types/command.d.ts +5 -2
- package/dist/npm/types/dispatchFn.d.ts +4 -1
- package/dist/npm/types/paste-cleanup-settings.d.ts +3 -1
- package/dist/npm/utils.d.ts +14 -29
- package/dist/npm/utils.js +133 -145
- package/package.json +35 -53
- package/dist/cdn/js/kendo-editor-common.js +0 -1
- package/dist/es/types/active-marks.js +0 -1
- package/dist/es/types/command.js +0 -1
- package/dist/es/types/dispatchFn.js +0 -1
- package/dist/es/types/paste-cleanup-settings.js +0 -1
- package/dist/es/types/predicate.js +0 -1
- package/dist/es2015/types/active-marks.js +0 -1
- package/dist/es2015/types/command.js +0 -1
- package/dist/es2015/types/dispatchFn.js +0 -1
- package/dist/es2015/types/paste-cleanup-settings.js +0 -1
- package/dist/es2015/types/predicate.js +0 -1
- package/dist/npm/DOMSerializer.d.ts +0 -35
- package/dist/npm/config/constants.d.ts +0 -7
- package/dist/npm/config/list-settings.d.ts +0 -30
- package/dist/npm/plugins/resize-utils.d.ts +0 -35
- package/dist/npm/plugins/table-resize/column-resize.d.ts +0 -2
- package/dist/npm/plugins/table-resize/row-resize.d.ts +0 -2
- package/dist/npm/plugins/table-resize/table-resize.d.ts +0 -18
- package/dist/npm/plugins/table-resize/table-view.d.ts +0 -28
- package/dist/npm/types/active-marks.js +0 -2
- package/dist/npm/types/command.js +0 -2
- package/dist/npm/types/dispatchFn.js +0 -2
- package/dist/npm/types/paste-cleanup-settings.js +0 -2
- package/dist/npm/types/predicate.d.ts +0 -1
- package/dist/npm/types/predicate.js +0 -2
- package/dist/systemjs/kendo-editor-common.js +0 -1
|
@@ -1,54 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var commonDir = {
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var prosemirrorState = require('prosemirror-state');
|
|
4
|
+
var constants = require('../../config/constants.js');
|
|
5
|
+
var utils = require('./utils.js');
|
|
6
|
+
var utils$1 = require('../../utils.js');
|
|
7
|
+
var resizeUtils = require('../resize-utils.js');
|
|
8
|
+
|
|
9
|
+
const commonDir = {
|
|
11
10
|
'southeast': true,
|
|
12
11
|
'southwest': true,
|
|
13
12
|
'northwest': true,
|
|
14
13
|
'northeast': true
|
|
15
14
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const horizontalDir = {
|
|
16
|
+
'east': true,
|
|
17
|
+
'west': true,
|
|
18
|
+
...commonDir
|
|
19
|
+
};
|
|
20
|
+
const verticalDir = {
|
|
21
|
+
'south': true,
|
|
22
|
+
'north': true,
|
|
23
|
+
...commonDir
|
|
24
|
+
};
|
|
25
|
+
class ResizeState {
|
|
26
|
+
constructor(activeHandle, dragging, nodePosition) {
|
|
20
27
|
this.activeHandle = activeHandle;
|
|
21
28
|
this.dragging = dragging;
|
|
22
29
|
this.nodePosition = nodePosition;
|
|
23
30
|
}
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
apply(tr) {
|
|
32
|
+
const next = tr.getMeta(utils.tableResizeKey);
|
|
26
33
|
if (next) {
|
|
27
|
-
|
|
34
|
+
const nextState = new ResizeState(next.activeHandle, next.setDragging, next.nodePosition);
|
|
28
35
|
return nextState;
|
|
29
36
|
}
|
|
30
37
|
return this;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var handleMouseMove = function (view, event) {
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const handleMouseMove = (view, event) => {
|
|
35
41
|
var _a;
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
const state = utils.tableResizeKey.getState(view.state);
|
|
43
|
+
const { dragging, nodePosition, activeHandle } = state;
|
|
38
44
|
if (nodePosition < 0 || !dragging) {
|
|
39
45
|
return;
|
|
40
46
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
const tableDom = utils.getTable(view.nodeDOM(nodePosition));
|
|
48
|
+
const rect = tableDom.getBoundingClientRect();
|
|
49
|
+
const dir = resizeUtils.directions[activeHandle];
|
|
50
|
+
const diffX = (event.clientX - dragging.startX) * dir.x;
|
|
51
|
+
const diffY = (event.clientY - dragging.startY) * dir.y;
|
|
52
|
+
const win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;
|
|
53
|
+
const compStyles = win.getComputedStyle(tableDom);
|
|
54
|
+
const nodeWidth = /px/.test(compStyles.width) ? parseFloat(compStyles.width) : tableDom.offsetWidth;
|
|
55
|
+
const nodeHeight = /px/.test(compStyles.height) ? parseFloat(compStyles.height) : tableDom.offsetHeight;
|
|
56
|
+
const width = dir.x ? diffX + nodeWidth : rect.width;
|
|
57
|
+
const height = dir.y ? diffY + nodeHeight : rect.height;
|
|
52
58
|
dragging.startX = dir.x ? event.clientX : dragging.startX;
|
|
53
59
|
dragging.startY = dir.y ? event.clientY : dragging.startY;
|
|
54
60
|
if (horizontalDir[activeHandle]) {
|
|
@@ -58,117 +64,117 @@ var handleMouseMove = function (view, event) {
|
|
|
58
64
|
tableDom.style.height = height + 'px';
|
|
59
65
|
}
|
|
60
66
|
if (/px/.test(tableDom.style.width)) {
|
|
61
|
-
|
|
67
|
+
const wrapper = (_a = tableDom.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode;
|
|
62
68
|
if (wrapper instanceof HTMLDivElement && wrapper.matches('div[table]') && /%/.test(wrapper.style.width)) {
|
|
63
69
|
wrapper.style.width = '';
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
cols.forEach(
|
|
73
|
+
const toPercents = (view, tr, tablePos) => {
|
|
74
|
+
const tableNode = view.state.doc.nodeAt(tablePos);
|
|
75
|
+
const tableDom = utils.getTable(view.nodeDOM(tablePos));
|
|
76
|
+
const { width, height, colsWidth, rowsHeight, offsetWidth, offsetHeight } = tableSize(tableDom);
|
|
77
|
+
const colgroup = tableDom.firstChild;
|
|
78
|
+
const cols = Array.from((colgroup && colgroup.children) || []);
|
|
79
|
+
let widthChanged = false;
|
|
80
|
+
cols.forEach((col, i) => {
|
|
75
81
|
if (col.style.width && !/%$/.test(col.style.width)) {
|
|
76
82
|
col.style.width = ((colsWidth[i]) * 100 / width) + '%';
|
|
77
83
|
widthChanged = true;
|
|
78
84
|
}
|
|
79
85
|
});
|
|
80
|
-
|
|
81
|
-
tableNode.forEach(
|
|
82
|
-
|
|
86
|
+
let heightChange = false;
|
|
87
|
+
tableNode.forEach((row, offset, index) => {
|
|
88
|
+
const rowHeight = utils$1.parseStyle(row.attrs.style).height;
|
|
83
89
|
if (rowHeight && !/%$/.test(rowHeight)) {
|
|
84
|
-
tr.setNodeMarkup(tablePos + offset + 1, null,
|
|
90
|
+
tr.setNodeMarkup(tablePos + offset + 1, null, utils$1.setNodeStyle(row.attrs, 'height', (rowsHeight[index] * 100 / height) + '%'));
|
|
85
91
|
heightChange = true;
|
|
86
92
|
}
|
|
87
93
|
});
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
tableAttrs =
|
|
94
|
+
let tableAttrs = tableNode.attrs;
|
|
95
|
+
if (utils$1.parseStyle(tableAttrs.style).width !== offsetWidth + 'px') {
|
|
96
|
+
tableAttrs = utils$1.setNodeStyle(tableAttrs, 'width', offsetWidth + 'px');
|
|
91
97
|
}
|
|
92
98
|
if (widthChanged) {
|
|
93
|
-
tableAttrs[
|
|
99
|
+
tableAttrs[constants.colgroupAttr] = colgroup.outerHTML;
|
|
94
100
|
}
|
|
95
101
|
if (heightChange) {
|
|
96
|
-
tableAttrs =
|
|
102
|
+
tableAttrs = utils$1.setNodeStyle(tableAttrs, 'height', offsetHeight + 'px');
|
|
97
103
|
}
|
|
98
104
|
if (widthChanged || heightChange) {
|
|
99
105
|
tr.setNodeMarkup(tablePos, null, tableAttrs);
|
|
100
106
|
}
|
|
101
107
|
};
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
tableNode.forEach(
|
|
109
|
-
|
|
108
|
+
const toPixels = (view, tr, tablePos, attrs) => {
|
|
109
|
+
const tableNode = view.state.doc.nodeAt(tablePos);
|
|
110
|
+
const tableDom = utils.getTable(view.nodeDOM(tablePos));
|
|
111
|
+
const win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;
|
|
112
|
+
const calcStyle = win.getComputedStyle;
|
|
113
|
+
const rows = Array.from(tableDom.rows);
|
|
114
|
+
tableNode.forEach((row, offset, index) => {
|
|
115
|
+
const rowHeight = utils$1.parseStyle(row.attrs.style).height;
|
|
110
116
|
if (rowHeight && !/px$/.test(rowHeight)) {
|
|
111
|
-
tr.setNodeMarkup(tablePos + offset + 1, null,
|
|
117
|
+
tr.setNodeMarkup(tablePos + offset + 1, null, utils$1.setNodeStyle(row.attrs, 'height', calcStyle(rows[index]).height));
|
|
112
118
|
}
|
|
113
119
|
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
cols.forEach(
|
|
120
|
+
const colgroup = tableDom.firstChild;
|
|
121
|
+
const cols = Array.from((colgroup && colgroup.children) || []);
|
|
122
|
+
let widthChanged = false;
|
|
123
|
+
cols.forEach((col, i) => {
|
|
118
124
|
if (col.style.width && !/px$/.test(col.style.width)) {
|
|
119
125
|
col.style.width = calcStyle(cols[i]).width;
|
|
120
126
|
widthChanged = true;
|
|
121
127
|
}
|
|
122
128
|
});
|
|
123
|
-
|
|
129
|
+
const tableAttrs = { ...attrs };
|
|
124
130
|
if (widthChanged) {
|
|
125
|
-
tableAttrs[
|
|
131
|
+
tableAttrs[constants.colgroupAttr] = colgroup.outerHTML;
|
|
126
132
|
}
|
|
127
133
|
return tableAttrs;
|
|
128
134
|
};
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return { width
|
|
135
|
+
const tableSize = (table) => {
|
|
136
|
+
const cols = Array.from(table.firstChild.children);
|
|
137
|
+
const colsWidth = cols.map(c => c.offsetWidth);
|
|
138
|
+
const rowsHeight = Array.from(table.rows).map(row => row.offsetHeight);
|
|
139
|
+
const width = colsWidth.reduce((acc, cur) => acc + cur, 0);
|
|
140
|
+
const height = rowsHeight.reduce((acc, cur) => acc + cur, 0);
|
|
141
|
+
const offsetHeight = table.offsetHeight;
|
|
142
|
+
const offsetWidth = table.offsetWidth;
|
|
143
|
+
return { width, height, colsWidth, rowsHeight, offsetWidth, offsetHeight };
|
|
138
144
|
};
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
const handleMouseUp = (view) => {
|
|
146
|
+
const { dragging, nodePosition, activeHandle } = utils.tableResizeKey.getState(view.state);
|
|
141
147
|
if (dragging) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
148
|
+
const node = view.state.doc.nodeAt(nodePosition);
|
|
149
|
+
const dom = utils.getTable(view.nodeDOM(nodePosition));
|
|
150
|
+
const rect = tableSize(dom);
|
|
145
151
|
if (node) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
const width = rect.offsetWidth + 'px';
|
|
153
|
+
const height = rect.offsetHeight + 'px';
|
|
154
|
+
const tr = view.state.tr;
|
|
155
|
+
let attrs = node.attrs;
|
|
156
|
+
const parsedStyles = utils$1.parseStyle(attrs.style);
|
|
151
157
|
if (horizontalDir[activeHandle] && dom.style.width && parsedStyles.width !== width) {
|
|
152
|
-
attrs =
|
|
158
|
+
attrs = utils$1.setNodeStyle(attrs, 'width', width);
|
|
153
159
|
}
|
|
154
160
|
if (verticalDir[activeHandle] && dom.style.height && parsedStyles.height !== height) {
|
|
155
|
-
attrs =
|
|
161
|
+
attrs = utils$1.setNodeStyle(attrs, 'height', height);
|
|
156
162
|
}
|
|
157
163
|
attrs = toPixels(view, tr, nodePosition, attrs);
|
|
158
164
|
tr.setNodeMarkup(nodePosition, null, attrs);
|
|
159
165
|
tr.setMeta('commandName', 'node-resize');
|
|
160
166
|
tr.setMeta('args', attrs);
|
|
161
|
-
tr.setMeta(
|
|
167
|
+
tr.setMeta(utils.tableResizeKey, {
|
|
162
168
|
setDragging: null,
|
|
163
169
|
activeHandle: null,
|
|
164
|
-
nodePosition
|
|
170
|
+
nodePosition
|
|
165
171
|
});
|
|
166
|
-
if (!/%/.test(
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (wrapper && /%/.test(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
+
if (!/%/.test(utils$1.parseStyle(attrs.style).width || '')) {
|
|
173
|
+
const $pos = tr.doc.resolve(nodePosition);
|
|
174
|
+
const wrapper = utils$1.parentNode($pos, n => n.type.name === 'table_wrapper');
|
|
175
|
+
if (wrapper && /%/.test(utils$1.parseStyle(wrapper.node.attrs.style).width || '')) {
|
|
176
|
+
const wrapperAttrs = utils$1.setNodeStyle(wrapper.node.attrs, 'width', '');
|
|
177
|
+
const wrapperPos = $pos.start(wrapper.depth) - 1;
|
|
172
178
|
tr.setNodeMarkup(wrapperPos, null, wrapperAttrs);
|
|
173
179
|
}
|
|
174
180
|
}
|
|
@@ -176,24 +182,24 @@ var handleMouseUp = function (view) {
|
|
|
176
182
|
}
|
|
177
183
|
}
|
|
178
184
|
};
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
185
|
+
const handleMouseDown = (view, event) => {
|
|
186
|
+
const target = event.target;
|
|
187
|
+
const activeHandle = target.getAttribute(constants.dataResizeDirTable);
|
|
182
188
|
if (!activeHandle) {
|
|
183
189
|
return false;
|
|
184
190
|
}
|
|
185
|
-
|
|
191
|
+
const resizeState = utils.tableResizeKey.getState(view.state);
|
|
186
192
|
event.preventDefault();
|
|
187
|
-
|
|
188
|
-
transaction.setMeta(
|
|
193
|
+
const transaction = view.state.tr;
|
|
194
|
+
transaction.setMeta(utils.tableResizeKey, {
|
|
189
195
|
setDragging: { startX: event.clientX, startY: event.clientY },
|
|
190
|
-
activeHandle
|
|
196
|
+
activeHandle,
|
|
191
197
|
nodePosition: resizeState.nodePosition
|
|
192
198
|
});
|
|
193
199
|
transaction.setMeta('addToHistory', false);
|
|
194
200
|
toPercents(view, transaction, resizeState.nodePosition);
|
|
195
201
|
view.dispatch(transaction);
|
|
196
|
-
|
|
202
|
+
const curWindow = event.view || window;
|
|
197
203
|
function move(e) {
|
|
198
204
|
handleMouseMove(view, e);
|
|
199
205
|
}
|
|
@@ -206,78 +212,77 @@ var handleMouseDown = function (view, event) {
|
|
|
206
212
|
curWindow.addEventListener('mousemove', move);
|
|
207
213
|
return true;
|
|
208
214
|
};
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (isNodeSelected && selection instanceof prosemirror_state_1.NodeSelection) {
|
|
215
|
+
const tableResizing = (options = { node: 'table' }) => {
|
|
216
|
+
return new prosemirrorState.Plugin({
|
|
217
|
+
key: utils.tableResizeKey,
|
|
218
|
+
view: () => ({
|
|
219
|
+
selectedNode(state, nodeType) {
|
|
220
|
+
const selection = state.selection;
|
|
221
|
+
const isNodeSelected = selection instanceof prosemirrorState.NodeSelection && nodeType === selection.node.type;
|
|
222
|
+
if (isNodeSelected && selection instanceof prosemirrorState.NodeSelection) {
|
|
218
223
|
return { node: selection.node, pos: selection.from };
|
|
219
224
|
}
|
|
220
|
-
|
|
221
|
-
|
|
225
|
+
const parent = utils$1.parentNode(selection.$from, (n) => n.type === nodeType);
|
|
226
|
+
const node = parent && parent.node;
|
|
222
227
|
if (node) {
|
|
223
|
-
|
|
224
|
-
return { node
|
|
228
|
+
const pos = selection.$from.start(parent.depth) - 1;
|
|
229
|
+
return { node, pos };
|
|
225
230
|
}
|
|
226
231
|
return null;
|
|
227
232
|
},
|
|
228
|
-
update
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
var prevSelected = this.selectedNode(prevState, nodeType);
|
|
233
|
+
update(view, prevState) {
|
|
234
|
+
const state = view.state;
|
|
235
|
+
const nodeType = state.schema.nodes[options.node];
|
|
236
|
+
const selected = this.selectedNode(state, nodeType);
|
|
237
|
+
const prevSelected = this.selectedNode(prevState, nodeType);
|
|
234
238
|
if (!selected && prevSelected && !prevState.doc.eq(view.state.doc)) {
|
|
235
239
|
// selected table is deleted
|
|
236
240
|
return;
|
|
237
241
|
}
|
|
238
242
|
if (selected || prevSelected) {
|
|
239
|
-
|
|
243
|
+
const tr = state.tr;
|
|
240
244
|
tr.setMeta('addToHistory', false);
|
|
241
245
|
if (selected && prevSelected && selected.pos !== prevSelected.pos) {
|
|
242
|
-
tr.setMeta(
|
|
243
|
-
|
|
246
|
+
tr.setMeta(utils.tableResizeKey, { nodePosition: selected.pos });
|
|
247
|
+
const prevNode = tr.doc.nodeAt(prevSelected.pos);
|
|
244
248
|
if (prevNode && prevNode.type.name === nodeType.name) {
|
|
245
|
-
tr.setNodeMarkup(prevSelected.pos, nodeType,
|
|
249
|
+
tr.setNodeMarkup(prevSelected.pos, nodeType, { ...prevSelected.node.attrs, [constants.resizableAttr]: false });
|
|
246
250
|
}
|
|
247
|
-
tr.setNodeMarkup(selected.pos, nodeType,
|
|
251
|
+
tr.setNodeMarkup(selected.pos, nodeType, { ...selected.node.attrs, [constants.resizableAttr]: true });
|
|
248
252
|
view.dispatch(tr);
|
|
249
253
|
}
|
|
250
254
|
else if (selected && prevSelected && selected.pos === prevSelected.pos &&
|
|
251
|
-
!selected.node.attrs[
|
|
252
|
-
tr.setMeta(
|
|
253
|
-
view.dispatch(tr.setNodeMarkup(selected.pos, nodeType,
|
|
255
|
+
!selected.node.attrs[constants.resizableAttr] && !state.selection.eq(prevState.selection)) {
|
|
256
|
+
tr.setMeta(utils.tableResizeKey, { nodePosition: selected.pos });
|
|
257
|
+
view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, { ...selected.node.attrs, [constants.resizableAttr]: true }));
|
|
254
258
|
}
|
|
255
259
|
else if (selected && !prevSelected) {
|
|
256
|
-
tr.setMeta(
|
|
257
|
-
view.dispatch(tr.setNodeMarkup(selected.pos, nodeType,
|
|
260
|
+
tr.setMeta(utils.tableResizeKey, { nodePosition: selected.pos });
|
|
261
|
+
view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, { ...selected.node.attrs, [constants.resizableAttr]: true }));
|
|
258
262
|
}
|
|
259
263
|
else if (!selected && prevSelected) {
|
|
260
|
-
tr.setMeta(
|
|
261
|
-
view.dispatch(tr.setNodeMarkup(prevSelected.pos, nodeType,
|
|
264
|
+
tr.setMeta(utils.tableResizeKey, { nodePosition: -1 });
|
|
265
|
+
view.dispatch(tr.setNodeMarkup(prevSelected.pos, nodeType, { ...prevSelected.node.attrs, [constants.resizableAttr]: false }));
|
|
262
266
|
}
|
|
263
267
|
}
|
|
264
268
|
}
|
|
265
|
-
})
|
|
269
|
+
}),
|
|
266
270
|
state: {
|
|
267
|
-
init
|
|
271
|
+
init() {
|
|
268
272
|
return new ResizeState('', null, -1);
|
|
269
273
|
},
|
|
270
|
-
apply
|
|
274
|
+
apply(tr, prev) {
|
|
271
275
|
return prev.apply(tr);
|
|
272
276
|
}
|
|
273
277
|
},
|
|
274
278
|
props: {
|
|
275
279
|
handleDOMEvents: {
|
|
276
|
-
mousedown
|
|
280
|
+
mousedown(view, event) {
|
|
277
281
|
return handleMouseDown(view, event);
|
|
278
282
|
}
|
|
279
283
|
}
|
|
280
284
|
}
|
|
281
285
|
});
|
|
282
286
|
};
|
|
287
|
+
|
|
283
288
|
exports.tableResizing = tableResizing;
|
|
@@ -1,81 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constants = require('../../config/constants.js');
|
|
4
|
+
var schema = require('../../config/schema.js');
|
|
5
|
+
var resizeUtils = require('../resize-utils.js');
|
|
6
|
+
var utils = require('../../utils.js');
|
|
7
|
+
|
|
8
|
+
class TableView {
|
|
9
|
+
constructor(node, view) {
|
|
10
10
|
this.node = node;
|
|
11
11
|
this.view = view;
|
|
12
12
|
this.dom = document.createElement('div');
|
|
13
|
-
this.dom.className =
|
|
13
|
+
this.dom.className = constants.resizableWrap;
|
|
14
14
|
this.table = this.dom.appendChild(document.createElement('table'));
|
|
15
|
-
if (node.attrs[
|
|
16
|
-
this.renderColgroup(node.attrs[
|
|
15
|
+
if (node.attrs[constants.colgroupAttr]) {
|
|
16
|
+
this.renderColgroup(node.attrs[constants.colgroupAttr]);
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
const tBody = this.table.appendChild(document.createElement('tbody'));
|
|
19
19
|
this.setAttributes(this.table, node.attrs);
|
|
20
|
-
this.resizeHandles =
|
|
21
|
-
|
|
22
|
-
handle.className =
|
|
23
|
-
handle.setAttribute(
|
|
20
|
+
this.resizeHandles = resizeUtils.handles.map(dir => {
|
|
21
|
+
const handle = document.createElement('span');
|
|
22
|
+
handle.className = constants.resizeHandle + ' ' + dir;
|
|
23
|
+
handle.setAttribute(constants.dataResizeDirTable, dir);
|
|
24
24
|
return handle;
|
|
25
25
|
});
|
|
26
26
|
this.contentDOM = tBody;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
var _this = this;
|
|
28
|
+
update(node) {
|
|
30
29
|
if (node.type !== this.node.type) {
|
|
31
30
|
return false;
|
|
32
31
|
}
|
|
33
|
-
|
|
32
|
+
const prev = this.node;
|
|
34
33
|
this.node = node;
|
|
35
|
-
if (node.attrs[
|
|
36
|
-
this.resizeHandles.forEach(
|
|
37
|
-
|
|
34
|
+
if (node.attrs[constants.resizableAttr]) {
|
|
35
|
+
this.resizeHandles.forEach(handle => {
|
|
36
|
+
this.dom.appendChild(handle);
|
|
38
37
|
});
|
|
39
38
|
}
|
|
40
39
|
else {
|
|
41
40
|
Array.from(this.dom.children)
|
|
42
|
-
.filter(
|
|
43
|
-
.forEach(
|
|
41
|
+
.filter((e) => e.classList.contains(constants.resizeHandle))
|
|
42
|
+
.forEach((e) => e.remove());
|
|
44
43
|
}
|
|
45
44
|
this.setAttributes(this.table, node.attrs);
|
|
46
|
-
if (prev.attrs[
|
|
47
|
-
this.renderColgroup(node.attrs[
|
|
45
|
+
if (prev.attrs[constants.colgroupAttr] !== node.attrs[constants.colgroupAttr]) {
|
|
46
|
+
this.renderColgroup(node.attrs[constants.colgroupAttr]);
|
|
48
47
|
}
|
|
49
48
|
return true;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
}
|
|
50
|
+
ignoreMutation(record) {
|
|
51
|
+
const result = record.type === 'attributes' &&
|
|
53
52
|
(record.target === this.table ||
|
|
54
53
|
record.target.firstChild === this.table ||
|
|
55
54
|
(this.colgroup && this.colgroup.contains(record.target)));
|
|
56
55
|
return result;
|
|
57
|
-
}
|
|
58
|
-
|
|
56
|
+
}
|
|
57
|
+
destroy() {
|
|
59
58
|
this.node = undefined;
|
|
60
59
|
this.view = undefined;
|
|
61
60
|
this.table = undefined;
|
|
62
61
|
this.colgroup = undefined;
|
|
63
62
|
this.resizeHandles = undefined;
|
|
64
|
-
}
|
|
65
|
-
|
|
63
|
+
}
|
|
64
|
+
renderColgroup(colgroupStr) {
|
|
66
65
|
if (this.table && this.table.firstChild && this.table.firstChild.nodeName === 'COLGROUP') {
|
|
67
66
|
this.table.removeChild(this.table.firstChild);
|
|
68
67
|
}
|
|
69
68
|
if (colgroupStr) {
|
|
70
|
-
this.colgroup =
|
|
69
|
+
this.colgroup = schema.parseStrColgroup(colgroupStr);
|
|
71
70
|
this.table.insertBefore(this.colgroup, this.table.firstChild);
|
|
72
71
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
for (
|
|
72
|
+
}
|
|
73
|
+
setAttributes(table, attrs) {
|
|
74
|
+
const skip = [constants.colgroupAttr, constants.resizableAttr];
|
|
75
|
+
for (const attrName in attrs) {
|
|
77
76
|
if (attrName && skip.indexOf(attrName) === -1) {
|
|
78
|
-
|
|
77
|
+
utils.setAttribute(table, attrName, attrs[attrName]);
|
|
79
78
|
}
|
|
80
79
|
}
|
|
81
80
|
if (/%$/.test(table.style.width)) {
|
|
@@ -85,49 +84,48 @@ var TableView = /** @class */ (function () {
|
|
|
85
84
|
else {
|
|
86
85
|
this.dom.style.width = '';
|
|
87
86
|
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var TableWrapperView = /** @class */ (function () {
|
|
93
|
-
function TableWrapperView(node, view) {
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
class TableWrapperView {
|
|
90
|
+
constructor(node, view) {
|
|
94
91
|
this.node = node;
|
|
95
92
|
this.view = view;
|
|
96
93
|
this.dom = document.createElement('div');
|
|
97
94
|
this.setAttributes(this.dom, node.attrs);
|
|
98
95
|
this.contentDOM = this.dom;
|
|
99
96
|
}
|
|
100
|
-
|
|
97
|
+
update(node) {
|
|
101
98
|
if (node.type !== this.node.type) {
|
|
102
99
|
return false;
|
|
103
100
|
}
|
|
104
101
|
this.node = node;
|
|
105
102
|
this.setAttributes(this.dom, node.attrs);
|
|
106
103
|
return true;
|
|
107
|
-
}
|
|
108
|
-
|
|
104
|
+
}
|
|
105
|
+
ignoreMutation(record) {
|
|
109
106
|
return record.type === 'attributes' && record.attributeName === 'style';
|
|
110
|
-
}
|
|
111
|
-
|
|
107
|
+
}
|
|
108
|
+
destroy() {
|
|
112
109
|
this.node = undefined;
|
|
113
110
|
this.view = undefined;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
for (
|
|
111
|
+
}
|
|
112
|
+
setAttributes(dom, attrs) {
|
|
113
|
+
for (const attrName in attrs) {
|
|
117
114
|
if (attrName) {
|
|
118
|
-
|
|
115
|
+
utils.setAttribute(dom, attrName, attrs[attrName]);
|
|
119
116
|
}
|
|
120
117
|
}
|
|
121
118
|
dom.setAttribute('table', '');
|
|
122
119
|
if (/%/.test(dom.style.width)) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
const table = this.node && this.node.lastChild;
|
|
121
|
+
const tableStyles = table ? utils.parseStyle(table.attrs.style) : {};
|
|
122
|
+
const tableWidth = tableStyles.width || '';
|
|
126
123
|
if (tableWidth && !/%/.test(tableWidth)) {
|
|
127
124
|
dom.style.width = '';
|
|
128
125
|
}
|
|
129
126
|
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
exports.TableView = TableView;
|
|
133
131
|
exports.TableWrapperView = TableWrapperView;
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export declare function getTable(dom: HTMLElement): HTMLTableElement;
|
|
9
|
-
export declare function domCellAround(target: any): HTMLTableCellElement | null;
|
|
10
|
-
export declare function cellIndexes(dataCell: HTMLTableCellElement): {
|
|
11
|
-
cellIndex: number;
|
|
12
|
-
rowIndex: number;
|
|
13
|
-
};
|
|
14
|
-
export declare function edgeCell(view: EditorView, event: MouseEvent, indexes: {
|
|
15
|
-
cellIndex: number;
|
|
16
|
-
rowIndex: number;
|
|
17
|
-
}): number;
|
|
1
|
+
import { PluginKey } from 'prosemirror-state';
|
|
2
|
+
|
|
3
|
+
declare const tableResizeKey: PluginKey<any>;
|
|
4
|
+
declare const tableColumnResizeKey: PluginKey<any>;
|
|
5
|
+
declare const tableRowResizeKey: PluginKey<any>;
|
|
6
|
+
|
|
7
|
+
export { tableColumnResizeKey, tableResizeKey, tableRowResizeKey };
|