@seafile/sdoc-editor 3.0.113 → 3.0.115
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/extension/constants/element-type.js +7 -2
- package/dist/extension/constants/index.js +34 -2
- package/dist/extension/constants/menus-config.js +30 -15
- package/dist/extension/plugins/blockquote/helpers.js +5 -3
- package/dist/extension/plugins/callout/helper.js +12 -2
- package/dist/extension/plugins/check-list/helpers.js +1 -0
- package/dist/extension/plugins/code-block/helpers.js +14 -0
- package/dist/extension/plugins/formula/helper.js +31 -1
- package/dist/extension/plugins/formula/menu/index.js +3 -1
- package/dist/extension/plugins/header/helpers.js +1 -0
- package/dist/extension/plugins/image/helpers.js +1 -0
- package/dist/extension/plugins/index.js +8 -1
- package/dist/extension/plugins/list/helpers.js +2 -1
- package/dist/extension/plugins/multi-column/helper.js +11 -0
- package/dist/extension/plugins/paragraph/render-elem.js +2 -2
- package/dist/extension/plugins/quick-insert/plugin/index.js +2 -2
- package/dist/extension/plugins/quick-insert/render-elem.js +3 -1
- package/dist/extension/plugins/table/helpers.js +3 -1
- package/dist/extension/plugins/toggle-header/helper.js +189 -0
- package/dist/extension/plugins/toggle-header/index.js +17 -0
- package/dist/extension/plugins/toggle-header/placeholder.js +35 -0
- package/dist/extension/plugins/toggle-header/plugin.js +537 -0
- package/dist/extension/plugins/toggle-header/render-elem.css +45 -0
- package/dist/extension/plugins/toggle-header/render-elem.js +130 -0
- package/dist/extension/plugins/video/helpers.js +1 -0
- package/dist/extension/plugins/whiteboard/helper.js +18 -4
- package/dist/extension/render/custom-element.js +20 -0
- package/dist/extension/toolbar/insert-element-toolbar/index.js +46 -10
- package/dist/extension/toolbar/side-toolbar/helpers.js +132 -19
- package/dist/extension/toolbar/side-toolbar/insert-block-menu.js +9 -2
- package/package.json +2 -2
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.isOnlyHasToggleContent = exports.insertToggleHeader = exports.getTitleTypeByLevel = exports.getLevelFromType = exports.getLevel = exports.getFirstTextPoint = exports.findFirstTitleNode = exports.ensureToggleContentNotEmpty = void 0;
|
|
8
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
|
+
var _slate = require("@seafile/slate");
|
|
12
|
+
var _slugid = _interopRequireDefault(require("slugid"));
|
|
13
|
+
var _constants = require("../../constants");
|
|
14
|
+
var _core = require("../../core");
|
|
15
|
+
var getLevelFromType = exports.getLevelFromType = function getLevelFromType(eleType) {
|
|
16
|
+
if (!eleType) return '';
|
|
17
|
+
var matched = String(eleType).match(/toggle_header(\d)$/);
|
|
18
|
+
return matched ? matched[1] : '';
|
|
19
|
+
};
|
|
20
|
+
var getLevel = exports.getLevel = function getLevel(element) {
|
|
21
|
+
var rawLevel = Number(getLevelFromType(element.type));
|
|
22
|
+
return Math.min(6, Math.max(1, rawLevel));
|
|
23
|
+
};
|
|
24
|
+
var getTitleTypeByLevel = exports.getTitleTypeByLevel = function getTitleTypeByLevel(level) {
|
|
25
|
+
var safeLevel = Math.min(6, Math.max(1, Number(level)));
|
|
26
|
+
return _constants.TOGGLE_TITLE_TYPES[safeLevel - 1];
|
|
27
|
+
};
|
|
28
|
+
var insertToggleHeader = exports.insertToggleHeader = function insertToggleHeader(editor, type, insertPosition) {
|
|
29
|
+
if (!editor.selection) return;
|
|
30
|
+
if (typeof editor.canInsertToggleHeader === 'function' && !editor.canInsertToggleHeader()) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
var toggleHeader = {
|
|
34
|
+
id: _slugid["default"].nice(),
|
|
35
|
+
type: _constants.TOGGLE_HEADER,
|
|
36
|
+
collapsed: false,
|
|
37
|
+
children: [{
|
|
38
|
+
id: _slugid["default"].nice(),
|
|
39
|
+
type: type,
|
|
40
|
+
children: [{
|
|
41
|
+
text: '',
|
|
42
|
+
id: _slugid["default"].nice()
|
|
43
|
+
}]
|
|
44
|
+
}, {
|
|
45
|
+
id: _slugid["default"].nice(),
|
|
46
|
+
type: _constants.TOGGLE_CONTENT,
|
|
47
|
+
children: [{
|
|
48
|
+
id: _slugid["default"].nice(),
|
|
49
|
+
type: _constants.PARAGRAPH,
|
|
50
|
+
children: [{
|
|
51
|
+
text: '',
|
|
52
|
+
id: _slugid["default"].nice()
|
|
53
|
+
}]
|
|
54
|
+
}]
|
|
55
|
+
}]
|
|
56
|
+
};
|
|
57
|
+
var _Editor$above = _slate.Editor.above(editor, {
|
|
58
|
+
at: editor.selection,
|
|
59
|
+
match: function match(n) {
|
|
60
|
+
return _slate.Element.isElement(n) && _slate.Editor.isBlock(editor, n);
|
|
61
|
+
},
|
|
62
|
+
mode: 'lowest'
|
|
63
|
+
}),
|
|
64
|
+
_Editor$above2 = (0, _slicedToArray2["default"])(_Editor$above, 2),
|
|
65
|
+
currentBlockPath = _Editor$above2[1];
|
|
66
|
+
if (!currentBlockPath) return;
|
|
67
|
+
var toggleContentEntry = _slate.Editor.above(editor, {
|
|
68
|
+
at: editor.selection,
|
|
69
|
+
match: function match(n) {
|
|
70
|
+
return _slate.Element.isElement(n) && n.type === _constants.TOGGLE_CONTENT;
|
|
71
|
+
},
|
|
72
|
+
mode: 'lowest'
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Support inserting toggle header inside toggle content
|
|
76
|
+
if (toggleContentEntry) {
|
|
77
|
+
var _insertAt = _slate.Path.next(currentBlockPath);
|
|
78
|
+
_slate.Transforms.insertNodes(editor, toggleHeader, {
|
|
79
|
+
at: _insertAt
|
|
80
|
+
});
|
|
81
|
+
var _point = _slate.Editor.start(editor, [].concat((0, _toConsumableArray2["default"])(_insertAt), [0, 0]));
|
|
82
|
+
_slate.Transforms.select(editor, _point);
|
|
83
|
+
(0, _core.focusEditor)(editor, _point);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
var topLevelEntry = _slate.Editor.above(editor, {
|
|
87
|
+
at: editor.selection,
|
|
88
|
+
match: function match(n, p) {
|
|
89
|
+
return _slate.Element.isElement(n) && _slate.Editor.isBlock(editor, n) && p.length === 1;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
if (!topLevelEntry) return;
|
|
93
|
+
var _topLevelEntry = (0, _slicedToArray2["default"])(topLevelEntry, 2),
|
|
94
|
+
topNode = _topLevelEntry[0],
|
|
95
|
+
topPath = _topLevelEntry[1];
|
|
96
|
+
var isEmptyParagraph = topNode.type === _constants.PARAGRAPH && _slate.Node.string(topNode) === '';
|
|
97
|
+
if (insertPosition === _constants.INSERT_POSITION.CURRENT && isEmptyParagraph) {
|
|
98
|
+
_slate.Transforms.removeNodes(editor, {
|
|
99
|
+
at: topPath
|
|
100
|
+
});
|
|
101
|
+
_slate.Transforms.insertNodes(editor, toggleHeader, {
|
|
102
|
+
at: topPath
|
|
103
|
+
});
|
|
104
|
+
var _point2 = _slate.Editor.start(editor, [].concat((0, _toConsumableArray2["default"])(topPath), [0, 0]));
|
|
105
|
+
_slate.Transforms.select(editor, _point2);
|
|
106
|
+
(0, _core.focusEditor)(editor, _point2);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
var insertAt = _slate.Path.next(topPath);
|
|
110
|
+
_slate.Transforms.insertNodes(editor, toggleHeader, {
|
|
111
|
+
at: insertAt
|
|
112
|
+
});
|
|
113
|
+
var point = _slate.Editor.start(editor, [].concat((0, _toConsumableArray2["default"])(insertAt), [0, 0]));
|
|
114
|
+
_slate.Transforms.select(editor, point);
|
|
115
|
+
(0, _core.focusEditor)(editor, point);
|
|
116
|
+
};
|
|
117
|
+
var ensureToggleContentNotEmpty = exports.ensureToggleContentNotEmpty = function ensureToggleContentNotEmpty(editor, path) {
|
|
118
|
+
var node = _slate.Node.get(editor, path);
|
|
119
|
+
if (node && node.type === _constants.TOGGLE_CONTENT && (!node.children || node.children.length === 0)) {
|
|
120
|
+
var paragraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
|
|
121
|
+
_slate.Transforms.insertNodes(editor, paragraph, {
|
|
122
|
+
at: path.concat(0)
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
var isOnlyHasToggleContent = exports.isOnlyHasToggleContent = function isOnlyHasToggleContent(node) {
|
|
127
|
+
var _node$children;
|
|
128
|
+
if (!node || node.type !== _constants.TOGGLE_HEADER) return false;
|
|
129
|
+
var hasTitle = false;
|
|
130
|
+
var hasContent = false;
|
|
131
|
+
(_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children.forEach(function (child) {
|
|
132
|
+
if (_constants.TOGGLE_TITLE_TYPES.includes(child.type)) {
|
|
133
|
+
hasTitle = true;
|
|
134
|
+
}
|
|
135
|
+
if (child.type === _constants.TOGGLE_CONTENT) {
|
|
136
|
+
hasContent = true;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return !hasTitle && hasContent;
|
|
140
|
+
};
|
|
141
|
+
var getFirstTextPoint = exports.getFirstTextPoint = function getFirstTextPoint(editor, targetBlockPath) {
|
|
142
|
+
var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
143
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(_slate.Editor.nodes(editor, {
|
|
144
|
+
at: targetBlockPath,
|
|
145
|
+
match: function match(n) {
|
|
146
|
+
return _slate.Text.isText(n);
|
|
147
|
+
}
|
|
148
|
+
})),
|
|
149
|
+
_step;
|
|
150
|
+
try {
|
|
151
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
152
|
+
var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
|
|
153
|
+
node = _step$value[0],
|
|
154
|
+
path = _step$value[1];
|
|
155
|
+
var safeOffset = Math.min(offset, node.text.length);
|
|
156
|
+
return {
|
|
157
|
+
path: path,
|
|
158
|
+
offset: safeOffset
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
} catch (err) {
|
|
162
|
+
_iterator.e(err);
|
|
163
|
+
} finally {
|
|
164
|
+
_iterator.f();
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
};
|
|
168
|
+
var _findFirstTitleNode = exports.findFirstTitleNode = function findFirstTitleNode(nodes) {
|
|
169
|
+
if (!Array.isArray(nodes)) return null;
|
|
170
|
+
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(nodes[0].children),
|
|
171
|
+
_step2;
|
|
172
|
+
try {
|
|
173
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
174
|
+
var node = _step2.value;
|
|
175
|
+
if (_slate.Element.isElement(node) && _constants.TOGGLE_TITLE_TYPES.includes(node.type)) {
|
|
176
|
+
return node;
|
|
177
|
+
}
|
|
178
|
+
if (node.children) {
|
|
179
|
+
var inlineNodes = _findFirstTitleNode(node.children);
|
|
180
|
+
if (inlineNodes) return inlineNodes;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
} catch (err) {
|
|
184
|
+
_iterator2.e(err);
|
|
185
|
+
} finally {
|
|
186
|
+
_iterator2.f();
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
var _plugin = _interopRequireDefault(require("./plugin"));
|
|
10
|
+
var _renderElem = require("./render-elem");
|
|
11
|
+
var ToggleHeaderPlugin = {
|
|
12
|
+
type: _constants.TOGGLE_HEADER,
|
|
13
|
+
nodeType: 'element',
|
|
14
|
+
editorPlugin: _plugin["default"],
|
|
15
|
+
renderElements: [_renderElem.renderToggleHeader, _renderElem.renderToggleHeaderTitle, _renderElem.renderToggleHeaderContent]
|
|
16
|
+
};
|
|
17
|
+
var _default = exports["default"] = ToggleHeaderPlugin;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _reactI18next = require("react-i18next");
|
|
10
|
+
var Placeholder = function Placeholder(props) {
|
|
11
|
+
var title = props.title,
|
|
12
|
+
_props$top = props.top,
|
|
13
|
+
top = _props$top === void 0 ? 5 : _props$top,
|
|
14
|
+
_props$left = props.left,
|
|
15
|
+
left = _props$left === void 0 ? 20 : _props$left;
|
|
16
|
+
var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
|
|
17
|
+
t = _useTranslation.t;
|
|
18
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
19
|
+
contentEditable: "false",
|
|
20
|
+
suppressContentEditableWarning: true,
|
|
21
|
+
style: {
|
|
22
|
+
position: 'absolute',
|
|
23
|
+
top: "".concat(top, "px"),
|
|
24
|
+
color: 'rgba(191,191,191,1)',
|
|
25
|
+
pointerEvents: 'none',
|
|
26
|
+
width: '100%',
|
|
27
|
+
maxWidth: '100%',
|
|
28
|
+
display: 'block',
|
|
29
|
+
userSelect: 'none',
|
|
30
|
+
textDecoration: 'none',
|
|
31
|
+
left: "".concat(left, "px")
|
|
32
|
+
}
|
|
33
|
+
}, t(title));
|
|
34
|
+
};
|
|
35
|
+
var _default = exports["default"] = Placeholder;
|