@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.
Files changed (31) hide show
  1. package/dist/extension/constants/element-type.js +7 -2
  2. package/dist/extension/constants/index.js +34 -2
  3. package/dist/extension/constants/menus-config.js +30 -15
  4. package/dist/extension/plugins/blockquote/helpers.js +5 -3
  5. package/dist/extension/plugins/callout/helper.js +12 -2
  6. package/dist/extension/plugins/check-list/helpers.js +1 -0
  7. package/dist/extension/plugins/code-block/helpers.js +14 -0
  8. package/dist/extension/plugins/formula/helper.js +31 -1
  9. package/dist/extension/plugins/formula/menu/index.js +3 -1
  10. package/dist/extension/plugins/header/helpers.js +1 -0
  11. package/dist/extension/plugins/image/helpers.js +1 -0
  12. package/dist/extension/plugins/index.js +8 -1
  13. package/dist/extension/plugins/list/helpers.js +2 -1
  14. package/dist/extension/plugins/multi-column/helper.js +11 -0
  15. package/dist/extension/plugins/paragraph/render-elem.js +2 -2
  16. package/dist/extension/plugins/quick-insert/plugin/index.js +2 -2
  17. package/dist/extension/plugins/quick-insert/render-elem.js +3 -1
  18. package/dist/extension/plugins/table/helpers.js +3 -1
  19. package/dist/extension/plugins/toggle-header/helper.js +189 -0
  20. package/dist/extension/plugins/toggle-header/index.js +17 -0
  21. package/dist/extension/plugins/toggle-header/placeholder.js +35 -0
  22. package/dist/extension/plugins/toggle-header/plugin.js +537 -0
  23. package/dist/extension/plugins/toggle-header/render-elem.css +45 -0
  24. package/dist/extension/plugins/toggle-header/render-elem.js +130 -0
  25. package/dist/extension/plugins/video/helpers.js +1 -0
  26. package/dist/extension/plugins/whiteboard/helper.js +18 -4
  27. package/dist/extension/render/custom-element.js +20 -0
  28. package/dist/extension/toolbar/insert-element-toolbar/index.js +46 -10
  29. package/dist/extension/toolbar/side-toolbar/helpers.js +132 -19
  30. package/dist/extension/toolbar/side-toolbar/insert-block-menu.js +9 -2
  31. package/package.json +2 -2
@@ -0,0 +1,537 @@
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 _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
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 _isHotkey = _interopRequireDefault(require("is-hotkey"));
13
+ var _constants = require("../../constants");
14
+ var _core = require("../../core");
15
+ var _helper = require("./helper");
16
+ var withToggleHeader = function withToggleHeader(editor) {
17
+ var insertBreak = editor.insertBreak,
18
+ normalizeNode = editor.normalizeNode,
19
+ insertSoftBreak = editor.insertSoftBreak,
20
+ deleteBackward = editor.deleteBackward,
21
+ insertFragment = editor.insertFragment,
22
+ onHotKeyDown = editor.onHotKeyDown;
23
+ var newEditor = editor;
24
+ var getToggleBodyChildren = function getToggleBodyChildren(toggleNode) {
25
+ var _toggleNode$children;
26
+ var contentNode = toggleNode === null || toggleNode === void 0 ? void 0 : (_toggleNode$children = toggleNode.children) === null || _toggleNode$children === void 0 ? void 0 : _toggleNode$children[1];
27
+ if ((contentNode === null || contentNode === void 0 ? void 0 : contentNode.type) === _constants.TOGGLE_CONTENT) {
28
+ return contentNode.children || [];
29
+ }
30
+ if (Array.isArray(toggleNode === null || toggleNode === void 0 ? void 0 : toggleNode.collapsed_body)) {
31
+ return toggleNode.collapsed_body;
32
+ }
33
+ return [];
34
+ };
35
+ newEditor.insertBreak = function () {
36
+ var _afterFragment$;
37
+ var selection = newEditor.selection;
38
+ if (!selection || !_slate.Range.isCollapsed(selection)) {
39
+ insertBreak();
40
+ return;
41
+ }
42
+ var selectedEntry = _slate.Editor.above(newEditor, {
43
+ at: selection,
44
+ match: function match(n) {
45
+ return n.type === _constants.TOGGLE_HEADER;
46
+ },
47
+ mode: 'lowest'
48
+ });
49
+ var selectedNode = selectedEntry ? selectedEntry[0] : null;
50
+ if (!selectedNode || (selectedNode === null || selectedNode === void 0 ? void 0 : selectedNode.type) !== _constants.TOGGLE_HEADER) {
51
+ insertBreak();
52
+ return;
53
+ }
54
+ var titleEntry = _slate.Editor.above(newEditor, {
55
+ at: selection,
56
+ match: function match(n) {
57
+ return _slate.Element.isElement(n) && _constants.TOGGLE_TITLE_TYPES.includes(n.type);
58
+ },
59
+ mode: 'lowest'
60
+ });
61
+ if (!titleEntry) {
62
+ insertBreak();
63
+ return;
64
+ }
65
+ var _titleEntry = (0, _slicedToArray2["default"])(titleEntry, 2),
66
+ titlePath = _titleEntry[1];
67
+ var toggleEntry = _slate.Editor.above(newEditor, {
68
+ at: titlePath,
69
+ match: function match(n) {
70
+ return n.type === _constants.TOGGLE_HEADER;
71
+ },
72
+ mode: 'lowest'
73
+ });
74
+ var _toggleEntry = (0, _slicedToArray2["default"])(toggleEntry, 2),
75
+ toggleNode = _toggleEntry[0],
76
+ togglePath = _toggleEntry[1];
77
+ var contentPath = [].concat((0, _toConsumableArray2["default"])(togglePath), [1]);
78
+ var bodyChildren = getToggleBodyChildren(toggleNode);
79
+ var cursorPoint = selection.anchor;
80
+ // when toggle header is collapsed
81
+ if (toggleNode.collapsed) {
82
+ var titleStartPoint = _slate.Editor.start(newEditor, titlePath);
83
+ var _titleEndPoint = _slate.Editor.end(newEditor, titlePath);
84
+ var isAtTitleStart = _slate.Point.equals(cursorPoint, titleStartPoint);
85
+ var _isAtTitleEnd = _slate.Editor.isEnd(newEditor, cursorPoint, titlePath);
86
+ _slate.Editor.withoutNormalizing(newEditor, function () {
87
+ var _titleNode, _titleNode$children;
88
+ if (isAtTitleStart) {
89
+ var _newParagraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
90
+ _slate.Transforms.insertNodes(newEditor, _newParagraph, {
91
+ at: togglePath
92
+ });
93
+ return;
94
+ }
95
+ var titleNode = [];
96
+ if (!_isAtTitleEnd) {
97
+ var _afterRange = {
98
+ anchor: cursorPoint,
99
+ focus: _titleEndPoint
100
+ };
101
+ var _afterFragment = _slate.Editor.fragment(newEditor, _afterRange);
102
+ titleNode = (0, _helper.findFirstTitleNode)(_afterFragment);
103
+ _slate.Transforms["delete"](newEditor, {
104
+ at: _afterRange
105
+ });
106
+ }
107
+ var newParagraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
108
+ newParagraph.children = (_titleNode = titleNode) !== null && _titleNode !== void 0 && (_titleNode$children = _titleNode.children) !== null && _titleNode$children !== void 0 && _titleNode$children.length ? titleNode.children : [(0, _core.generateDefaultText)('')];
109
+ var insertPath = _slate.Path.next(togglePath);
110
+ _slate.Transforms.insertNodes(newEditor, newParagraph, {
111
+ at: insertPath
112
+ });
113
+ _slate.Transforms.select(newEditor, _slate.Editor.start(newEditor, insertPath));
114
+ });
115
+ return;
116
+ }
117
+ var titleEndPoint = _slate.Editor.end(newEditor, titlePath);
118
+ var isAtTitleEnd = _slate.Editor.isEnd(newEditor, cursorPoint, titlePath);
119
+ var afterRange = {
120
+ anchor: cursorPoint,
121
+ focus: titleEndPoint
122
+ };
123
+ var afterFragment = isAtTitleEnd ? [] : _slate.Editor.fragment(newEditor, afterRange);
124
+ var afterChildren = ((_afterFragment$ = afterFragment[0]) === null || _afterFragment$ === void 0 ? void 0 : _afterFragment$.children) || [];
125
+
126
+ // when toggle header is listed all
127
+ _slate.Editor.withoutNormalizing(newEditor, function () {
128
+ var _toggleNode$children3, _toggleNode$children$2;
129
+ // The afterText is the text content after the cursor in the toggle header
130
+ var afterText = '';
131
+ if (!isAtTitleEnd) {
132
+ afterText = _slate.Editor.string(newEditor, {
133
+ anchor: cursorPoint,
134
+ focus: titleEndPoint
135
+ });
136
+ _slate.Transforms["delete"](newEditor, {
137
+ at: afterRange
138
+ });
139
+ }
140
+
141
+ // Keep collapsed toggle data model consistent before editing body.
142
+ if (toggleNode.collapsed) {
143
+ var _toggleNode$children2, _toggleNode$children$;
144
+ if (!((_toggleNode$children2 = toggleNode.children) !== null && _toggleNode$children2 !== void 0 && _toggleNode$children2[1]) || ((_toggleNode$children$ = toggleNode.children[1]) === null || _toggleNode$children$ === void 0 ? void 0 : _toggleNode$children$.type) !== _constants.TOGGLE_CONTENT) {
145
+ var content = (0, _core.generateEmptyElement)(_constants.TOGGLE_CONTENT);
146
+ content.children = bodyChildren.length > 0 ? bodyChildren : [(0, _core.generateEmptyElement)(_constants.PARAGRAPH)];
147
+ _slate.Transforms.insertNodes(newEditor, content, {
148
+ at: contentPath
149
+ });
150
+ }
151
+ _slate.Transforms.setNodes(newEditor, {
152
+ collapsed: false,
153
+ collapsed_body: null
154
+ }, {
155
+ at: togglePath
156
+ });
157
+ } else if (!((_toggleNode$children3 = toggleNode.children) !== null && _toggleNode$children3 !== void 0 && _toggleNode$children3[1]) || ((_toggleNode$children$2 = toggleNode.children[1]) === null || _toggleNode$children$2 === void 0 ? void 0 : _toggleNode$children$2.type) !== _constants.TOGGLE_CONTENT) {
158
+ var _content = (0, _core.generateEmptyElement)(_constants.TOGGLE_CONTENT);
159
+ _content.children = [(0, _core.generateEmptyElement)(_constants.PARAGRAPH)];
160
+ _slate.Transforms.insertNodes(newEditor, _content, {
161
+ at: contentPath
162
+ });
163
+ }
164
+
165
+ // Insert new paragraph node with afterText
166
+ var newParagraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
167
+ if (afterChildren.length > 0) {
168
+ newParagraph.children = [(0, _core.generateDefaultText)(afterText)];
169
+ }
170
+ var firstParagraphPath = [].concat((0, _toConsumableArray2["default"])(contentPath), [0]);
171
+ _slate.Transforms.insertNodes(newEditor, newParagraph, {
172
+ at: firstParagraphPath
173
+ });
174
+ _slate.Transforms.select(newEditor, _slate.Editor.start(newEditor, firstParagraphPath));
175
+ });
176
+ };
177
+ newEditor.insertSoftBreak = function () {
178
+ var selection = newEditor.selection;
179
+ if (!selection || !_slate.Range.isCollapsed(selection)) {
180
+ insertSoftBreak();
181
+ return;
182
+ }
183
+ var _Editor$node = _slate.Editor.node(newEditor, selection, {
184
+ depth: 1
185
+ }),
186
+ _Editor$node2 = (0, _slicedToArray2["default"])(_Editor$node, 1),
187
+ selectedNode = _Editor$node2[0];
188
+ if (selectedNode.type === _constants.TOGGLE_HEADER) {
189
+ newEditor.insertBreak();
190
+ return;
191
+ }
192
+ insertSoftBreak();
193
+ };
194
+ newEditor.deleteBackward = function (unit) {
195
+ var selection = newEditor.selection;
196
+ if (!selection || !_slate.Range.isCollapsed(selection)) {
197
+ deleteBackward(unit);
198
+ return;
199
+ }
200
+ var currentBlockEntry = _slate.Editor.above(newEditor, {
201
+ at: selection,
202
+ match: function match(n) {
203
+ return _slate.Element.isElement(n) && _slate.Editor.isBlock(newEditor, n);
204
+ },
205
+ mode: 'lowest'
206
+ });
207
+ if (!currentBlockEntry) {
208
+ deleteBackward(unit);
209
+ return;
210
+ }
211
+ var _currentBlockEntry = (0, _slicedToArray2["default"])(currentBlockEntry, 2),
212
+ currentBlockNode = _currentBlockEntry[0],
213
+ currentBlockPath = _currentBlockEntry[1];
214
+ var toggleContentEntry = _slate.Editor.above(newEditor, {
215
+ at: currentBlockPath,
216
+ match: function match(n) {
217
+ return _slate.Element.isElement(n) && n.type === _constants.TOGGLE_CONTENT;
218
+ },
219
+ mode: 'lowest'
220
+ });
221
+
222
+ // When cursor is in start point of the last toggle content
223
+ if (toggleContentEntry) {
224
+ var _toggleContentEntry = (0, _slicedToArray2["default"])(toggleContentEntry, 2),
225
+ toggleContentNode = _toggleContentEntry[0],
226
+ toggleContentPath = _toggleContentEntry[1];
227
+ var childCount = toggleContentNode.children.length;
228
+ var currentIndex = currentBlockPath[currentBlockPath.length - 1];
229
+ var isLastChild = currentIndex === childCount - 1;
230
+ var hasOtherChildren = childCount > 1;
231
+ var isAtLastChildStart = _slate.Editor.isStart(newEditor, selection.anchor, currentBlockPath);
232
+ if (isLastChild && isAtLastChildStart && hasOtherChildren && !_constants.TOGGLE_TITLE_TYPES.includes(currentBlockNode.type)) {
233
+ var parentToggleEntry = _slate.Editor.parent(newEditor, toggleContentPath);
234
+ var _parentToggleEntry = (0, _slicedToArray2["default"])(parentToggleEntry, 2),
235
+ parentToggleNode = _parentToggleEntry[0],
236
+ parentTogglePath = _parentToggleEntry[1];
237
+ if (parentToggleNode && parentToggleNode.type === _constants.TOGGLE_HEADER) {
238
+ var liftedNode = currentBlockNode;
239
+ var insertPath = _slate.Path.next(parentTogglePath);
240
+ _slate.Editor.withoutNormalizing(newEditor, function () {
241
+ _slate.Transforms.removeNodes(newEditor, {
242
+ at: currentBlockPath
243
+ });
244
+ (0, _helper.ensureToggleContentNotEmpty)(newEditor, toggleContentPath);
245
+ _slate.Transforms.insertNodes(newEditor, liftedNode, {
246
+ at: insertPath
247
+ });
248
+ _slate.Transforms.select(newEditor, _slate.Editor.start(newEditor, insertPath));
249
+ });
250
+ return;
251
+ }
252
+ }
253
+ }
254
+
255
+ // Other cases
256
+ var titleEntry = _slate.Editor.above(newEditor, {
257
+ at: selection,
258
+ match: function match(n) {
259
+ return _slate.Element.isElement(n) && _constants.TOGGLE_TITLE_TYPES.includes(n.type);
260
+ },
261
+ mode: 'lowest'
262
+ });
263
+ if (!titleEntry) {
264
+ deleteBackward(unit);
265
+ return;
266
+ }
267
+ var _titleEntry2 = (0, _slicedToArray2["default"])(titleEntry, 2),
268
+ titlePath = _titleEntry2[1];
269
+ if (titleEntry && titlePath) {
270
+ var _Editor$node3 = _slate.Editor.node(newEditor, titlePath),
271
+ _Editor$node4 = (0, _slicedToArray2["default"])(_Editor$node3, 1),
272
+ titleNode = _Editor$node4[0];
273
+ var isAtTitleStart = _slate.Editor.isStart(newEditor, selection.anchor, titlePath);
274
+ if (!isAtTitleStart) {
275
+ deleteBackward(unit);
276
+ return;
277
+ }
278
+ var toggleEntry = _slate.Editor.parent(newEditor, titlePath);
279
+ var _toggleEntry2 = (0, _slicedToArray2["default"])(toggleEntry, 2),
280
+ toggleNode = _toggleEntry2[0],
281
+ togglePath = _toggleEntry2[1];
282
+ var contentChildren = getToggleBodyChildren(toggleNode);
283
+ var normalHeaderTypeMap = {
284
+ toggle_header1: _constants.HEADER1,
285
+ toggle_header2: _constants.HEADER2,
286
+ toggle_header3: _constants.HEADER3
287
+ };
288
+ var normalHeaderType = normalHeaderTypeMap[titleNode.type];
289
+ var normalHeaderNode = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, titleNode), {}, {
290
+ type: normalHeaderType
291
+ });
292
+ var nodesToInsert = [normalHeaderNode];
293
+ if (contentChildren.length > 0) {
294
+ nodesToInsert.push.apply(nodesToInsert, (0, _toConsumableArray2["default"])(contentChildren));
295
+ }
296
+ _slate.Editor.withoutNormalizing(newEditor, function () {
297
+ _slate.Transforms.removeNodes(newEditor, {
298
+ at: togglePath
299
+ });
300
+ _slate.Transforms.insertNodes(newEditor, nodesToInsert, {
301
+ at: togglePath
302
+ });
303
+ _slate.Transforms.select(newEditor, _slate.Editor.start(newEditor, togglePath));
304
+ });
305
+ return;
306
+ }
307
+ return deleteBackward(unit);
308
+ };
309
+ newEditor.insertFragment = function (data) {
310
+ var _nextFragment$;
311
+ var selection = newEditor.selection;
312
+ if (!selection) return insertFragment(data);
313
+ var nextFragment = [];
314
+ data.forEach(function (node) {
315
+ if ((node === null || node === void 0 ? void 0 : node.type) === _constants.TOGGLE_HEADER) {
316
+ if ((0, _helper.isOnlyHasToggleContent)(node)) {
317
+ var childrenNodes = [];
318
+ node.children.forEach(function (child) {
319
+ if (child !== null && child !== void 0 && child.children) {
320
+ childrenNodes = childrenNodes.concat(child.children);
321
+ }
322
+ });
323
+ nextFragment.push.apply(nextFragment, (0, _toConsumableArray2["default"])(childrenNodes));
324
+ } else {
325
+ nextFragment.push(node);
326
+ }
327
+ } else {
328
+ nextFragment.push(node);
329
+ }
330
+ });
331
+ if (((_nextFragment$ = nextFragment[0]) === null || _nextFragment$ === void 0 ? void 0 : _nextFragment$.type) === _constants.TOGGLE_HEADER) {
332
+ var currentBlockEntry = _slate.Editor.above(newEditor, {
333
+ at: selection,
334
+ match: function match(n) {
335
+ return _slate.Element.isElement(n) && _slate.Editor.isBlock(newEditor, n);
336
+ },
337
+ mode: 'lowest'
338
+ });
339
+ if (!currentBlockEntry) {
340
+ insertFragment(nextFragment);
341
+ return;
342
+ }
343
+ var _currentBlockEntry2 = (0, _slicedToArray2["default"])(currentBlockEntry, 1),
344
+ currentBlockNode = _currentBlockEntry2[0];
345
+ var isBlockEmpty = _slate.Editor.isEmpty(newEditor, currentBlockNode);
346
+ _slate.Editor.withoutNormalizing(newEditor, function () {
347
+ if (!isBlockEmpty) {
348
+ _slate.Transforms.splitNodes(newEditor, {
349
+ at: selection,
350
+ match: function match(n) {
351
+ return _slate.Element.isElement(n) && _slate.Editor.isBlock(newEditor, n);
352
+ },
353
+ always: true
354
+ });
355
+ }
356
+ insertFragment(nextFragment);
357
+ });
358
+ return;
359
+ }
360
+ insertFragment(nextFragment);
361
+ };
362
+ newEditor.onHotKeyDown = function (event) {
363
+ var selection = newEditor.selection;
364
+ if (!selection) return false;
365
+ var _Editor$node5 = _slate.Editor.node(newEditor, selection, {
366
+ depth: 1
367
+ }),
368
+ _Editor$node6 = (0, _slicedToArray2["default"])(_Editor$node5, 1),
369
+ selectedNode = _Editor$node6[0];
370
+ if (selectedNode.type === _constants.TOGGLE_HEADER && (0, _isHotkey["default"])('tab', event)) {
371
+ event.preventDefault();
372
+ return true;
373
+ }
374
+ if (selectedNode.type === _constants.TOGGLE_HEADER && (0, _isHotkey["default"])('shift+tab', event)) {
375
+ event.preventDefault();
376
+ var _getCurrentNode = (0, _core.getCurrentNode)(editor),
377
+ _getCurrentNode2 = (0, _slicedToArray2["default"])(_getCurrentNode, 2),
378
+ currentPath = _getCurrentNode2[1];
379
+ var currentToggleContentEntry = (0, _core.getAboveNode)(editor, {
380
+ match: {
381
+ type: _constants.TOGGLE_CONTENT
382
+ }
383
+ });
384
+ // No operation in the first toggle-header1-3
385
+ if (!currentToggleContentEntry) {
386
+ return true;
387
+ }
388
+ var _currentToggleContent = (0, _slicedToArray2["default"])(currentToggleContentEntry, 2),
389
+ toggleContentNode = _currentToggleContent[0],
390
+ toggleContentPath = _currentToggleContent[1];
391
+ var _Editor$parent = _slate.Editor.parent(editor, toggleContentPath),
392
+ _Editor$parent2 = (0, _slicedToArray2["default"])(_Editor$parent, 2),
393
+ parentNode = _Editor$parent2[0],
394
+ parentPath = _Editor$parent2[1];
395
+
396
+ // Current direct child index in toggle content's children
397
+ var currentIndexInToggleContent = currentPath[toggleContentPath.length];
398
+ var movingChildren = toggleContentNode.children.slice(currentIndexInToggleContent);
399
+ var targetCursorPath = [];
400
+ var targetOffset = editor.selection.anchor.offset;
401
+ _slate.Editor.withoutNormalizing(editor, function () {
402
+ // Remove toggle content children node
403
+ for (var i = toggleContentNode.children.length - 1; i >= currentIndexInToggleContent; i--) {
404
+ _slate.Transforms.removeNodes(editor, {
405
+ at: toggleContentPath.concat(i)
406
+ });
407
+ }
408
+
409
+ // In the first toggle content
410
+ if (parentNode.type === _constants.TOGGLE_HEADER && parentPath.length === 1) {
411
+ var insertPath = _slate.Path.next(parentPath);
412
+ targetCursorPath = insertPath;
413
+ movingChildren.forEach(function (child) {
414
+ _slate.Transforms.insertNodes(editor, child, {
415
+ at: insertPath
416
+ });
417
+ insertPath = _slate.Path.next(insertPath);
418
+ });
419
+ (0, _helper.ensureToggleContentNotEmpty)(editor, toggleContentPath);
420
+ var targetPoint = (0, _helper.getFirstTextPoint)(editor, targetCursorPath, targetOffset);
421
+ _slate.Transforms.select(newEditor, targetPoint);
422
+ return true;
423
+ }
424
+
425
+ // In the multi layer toggle content
426
+ if (parentNode.type === _constants.TOGGLE_HEADER && parentPath.length > 1) {
427
+ var parentIndexInOuterToggleContent = parentPath[parentPath.length - 1];
428
+ var outerToggleContentPath = _slate.Path.parent(parentPath);
429
+ var _insertPath = outerToggleContentPath.concat(parentIndexInOuterToggleContent + 1);
430
+ targetCursorPath = _insertPath;
431
+ movingChildren.forEach(function (child) {
432
+ _slate.Transforms.insertNodes(editor, child, {
433
+ at: _insertPath
434
+ });
435
+ _insertPath = _slate.Path.next(_insertPath);
436
+ });
437
+ (0, _helper.ensureToggleContentNotEmpty)(editor, toggleContentPath);
438
+ var _targetPoint = (0, _helper.getFirstTextPoint)(editor, targetCursorPath, targetOffset);
439
+ _slate.Transforms.select(newEditor, _targetPoint);
440
+ }
441
+ });
442
+ return true;
443
+ }
444
+ return onHotKeyDown && onHotKeyDown(event);
445
+ };
446
+ newEditor.normalizeNode = function (_ref) {
447
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
448
+ node = _ref2[0],
449
+ path = _ref2[1];
450
+ if (node.type === _constants.TOGGLE_HEADER) {
451
+ var _node$children, _node$children2;
452
+ // code-block is the last node in the editor and needs to be followed by a p node
453
+ var isLast = (0, _core.isLastNode)(newEditor, node);
454
+ if (isLast) {
455
+ var paragraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
456
+ _slate.Transforms.insertNodes(newEditor, paragraph, {
457
+ at: [path[0] + 1]
458
+ });
459
+ }
460
+ var toggleHeaderType = _constants.TOGGLE_TITLE_TYPES.includes(node.children[0].type) && node.children[0].type;
461
+ var level = Math.min(6, Math.max(1, Number((0, _helper.getLevelFromType)(toggleHeaderType) || 1)));
462
+
463
+ // For toggle-header1-3 element
464
+ var titleType = (0, _helper.getTitleTypeByLevel)(level);
465
+ var titleNode = (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children[0];
466
+ if (!titleNode || !_constants.TOGGLE_TITLE_TYPES.includes(titleNode.type)) {
467
+ var title = (0, _core.generateEmptyElement)(titleType);
468
+ _slate.Transforms.insertNodes(newEditor, title, {
469
+ at: [].concat((0, _toConsumableArray2["default"])(path), [0])
470
+ });
471
+ return;
472
+ }
473
+ if (titleNode.type !== titleType) {
474
+ _slate.Transforms.setNodes(newEditor, {
475
+ type: titleType
476
+ }, {
477
+ at: [].concat((0, _toConsumableArray2["default"])(path), [0])
478
+ });
479
+ return;
480
+ }
481
+ // For toggle-content element
482
+ var contentNode = (_node$children2 = node.children) === null || _node$children2 === void 0 ? void 0 : _node$children2[1];
483
+ if (node.collapsed) {
484
+ if ((contentNode === null || contentNode === void 0 ? void 0 : contentNode.type) === _constants.TOGGLE_CONTENT) {
485
+ if (!Array.isArray(node.collapsed_body)) {
486
+ _slate.Transforms.setNodes(newEditor, {
487
+ collapsed_body: contentNode.children || []
488
+ }, {
489
+ at: path
490
+ });
491
+ return;
492
+ }
493
+ _slate.Transforms.removeNodes(newEditor, {
494
+ at: [].concat((0, _toConsumableArray2["default"])(path), [1])
495
+ });
496
+ return;
497
+ }
498
+ if (!Array.isArray(node.collapsed_body)) {
499
+ _slate.Transforms.setNodes(newEditor, {
500
+ collapsed_body: [(0, _core.generateEmptyElement)(_constants.PARAGRAPH)]
501
+ }, {
502
+ at: path
503
+ });
504
+ return;
505
+ }
506
+ return;
507
+ }
508
+ if (!contentNode || contentNode.type !== _constants.TOGGLE_CONTENT) {
509
+ var collapsedBody = Array.isArray(node.collapsed_body) ? node.collapsed_body : [];
510
+ var content = (0, _core.generateEmptyElement)(_constants.TOGGLE_CONTENT);
511
+ content.children = collapsedBody.length > 0 ? collapsedBody : [(0, _core.generateEmptyElement)(_constants.PARAGRAPH)];
512
+ _slate.Transforms.insertNodes(newEditor, content, {
513
+ at: [].concat((0, _toConsumableArray2["default"])(path), [1])
514
+ });
515
+ return;
516
+ }
517
+ if (node.collapsed_body) {
518
+ _slate.Transforms.setNodes(newEditor, {
519
+ collapsed_body: null
520
+ }, {
521
+ at: path
522
+ });
523
+ return;
524
+ }
525
+ if (!contentNode.children || contentNode.children.length === 0) {
526
+ var _paragraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
527
+ _slate.Transforms.insertNodes(newEditor, _paragraph, {
528
+ at: [].concat((0, _toConsumableArray2["default"])(path), [1, 0])
529
+ });
530
+ return;
531
+ }
532
+ }
533
+ return normalizeNode([node, path]);
534
+ };
535
+ return newEditor;
536
+ };
537
+ var _default = exports["default"] = withToggleHeader;
@@ -0,0 +1,45 @@
1
+ .sdoc-toggle-header-container {
2
+ padding: 5px 0;
3
+ }
4
+
5
+ .sdoc-toggle-header-row {
6
+ display: flex;
7
+ align-items: center;
8
+ padding-bottom: 5px;
9
+ }
10
+
11
+ .sdoc-toggle-header-row .sdoc-toggle-header-prefix {
12
+ display: inline-block;
13
+ height: 20px;
14
+ line-height: 20px;
15
+ text-align: center;
16
+ margin-right: 5px;
17
+ cursor: pointer;
18
+ }
19
+
20
+ .sdoc-toggle-header-prefix:has(.sdoc-big-caret-up) {
21
+ transform: rotate(90deg);
22
+ }
23
+
24
+ .sdoc-toggle-header-title-wrap {
25
+ flex: 1;
26
+ min-width: 0;
27
+ }
28
+
29
+ .sdoc-toggle-header-content-wrap {
30
+ margin-left: 20px;
31
+ }
32
+
33
+ .sdoc-toggle-header-content-wrap .sdoc-toggle-header-title,
34
+ .sdoc-toggle-header-title-wrap .sdoc-toggle-header-title {
35
+ margin: 0;
36
+ }
37
+
38
+ .sdoc-toggle-header-content .sdoc-header-1,
39
+ .sdoc-toggle-header-content .sdoc-header-2,
40
+ .sdoc-toggle-header-content .sdoc-header-3,
41
+ .sdoc-toggle-header-content .sdoc-header-4,
42
+ .sdoc-toggle-header-content .sdoc-header-5,
43
+ .sdoc-toggle-header-content .sdoc-header-6 {
44
+ margin: 5px 0 !important;
45
+ }