@seafile/sdoc-editor 3.0.245 → 3.0.247
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.
|
@@ -329,6 +329,11 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
|
|
|
329
329
|
id: '',
|
|
330
330
|
iconClass: 'sdocfont sdoc-callout',
|
|
331
331
|
text: 'Callout'
|
|
332
|
+
}), _elementType.DIVIDER, {
|
|
333
|
+
id: 'sdoc-side-menu-item-divider',
|
|
334
|
+
iconClass: 'sdocfont sdoc-divider',
|
|
335
|
+
type: _elementType.DIVIDER,
|
|
336
|
+
text: 'Divider'
|
|
332
337
|
}), _elementType.ORDERED_LIST, {
|
|
333
338
|
id: '',
|
|
334
339
|
iconClass: 'sdocfont sdoc-list-ol',
|
|
@@ -339,12 +344,12 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
|
|
|
339
344
|
iconClass: 'sdocfont sdoc-list-ul',
|
|
340
345
|
type: _elementType.UNORDERED_LIST,
|
|
341
346
|
text: 'Unordered_list'
|
|
342
|
-
}), _elementType.CHECK_LIST_ITEM, {
|
|
347
|
+
}), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_CO, _elementType.CHECK_LIST_ITEM, {
|
|
343
348
|
id: '',
|
|
344
349
|
iconClass: 'sdocfont sdoc-check-square',
|
|
345
350
|
type: _elementType.CHECK_LIST_ITEM,
|
|
346
351
|
text: 'Check_list'
|
|
347
|
-
}),
|
|
352
|
+
}), _elementType.PARAGRAPH, {
|
|
348
353
|
id: _elementType.PARAGRAPH,
|
|
349
354
|
iconClass: 'sdocfont sdoc-text',
|
|
350
355
|
type: _elementType.PARAGRAPH,
|
|
@@ -405,8 +410,8 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
|
|
|
405
410
|
type: _elementType.FORMULA,
|
|
406
411
|
text: 'Formula'
|
|
407
412
|
}));
|
|
408
|
-
var SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = (_SIDE_INSERT_MENUS_SE = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.CODE_BLOCK, 'Code_block'), _elementType.CALL_OUT, 'Callout'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.TOGGLE_HEADER1, 'Toggle_header_one'),
|
|
409
|
-
var SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = exports.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = (_SIDE_QUICK_INSERT_ME = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.CODE_BLOCK, 'Code_block'), _elementType.CALL_OUT, 'Callout'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.FORMULA, 'Formula'),
|
|
413
|
+
var SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = (_SIDE_INSERT_MENUS_SE = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.CODE_BLOCK, 'Code_block'), _elementType.CALL_OUT, 'Callout'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.DIVIDER, 'Divider'), _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.TOGGLE_HEADER1, 'Toggle_header_one'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.TOGGLE_HEADER2, 'Toggle_header_two'), _elementType.TOGGLE_HEADER3, 'Toggle_header_three'));
|
|
414
|
+
var SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = exports.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = (_SIDE_QUICK_INSERT_ME = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.CODE_BLOCK, 'Code_block'), _elementType.CALL_OUT, 'Callout'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.DIVIDER, 'Divider'), _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.FORMULA, 'Formula'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.TOGGLE_HEADER1, 'Toggle_header_one'), _elementType.TOGGLE_HEADER2, 'Toggle_header_two'), _elementType.TOGGLE_HEADER3, 'Toggle_header_three'), _elementType.EMBED_LINK, 'Embed_link'));
|
|
410
415
|
|
|
411
416
|
// Other operations menu config
|
|
412
417
|
var SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = exports.SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = {
|
|
@@ -323,7 +323,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
|
|
|
323
323
|
}, t('Add_video_link')), editor.editorType !== _constants.WIKI_EDITOR && /*#__PURE__*/_react["default"].createElement("div", {
|
|
324
324
|
className: "sdoc-dropdown-menu-item",
|
|
325
325
|
onClick: openSelectVideoFileDialog
|
|
326
|
-
}, t('Link_video_file'))))))), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants2.TABLE,
|
|
326
|
+
}, t('Link_video_file'))))))), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants2.TABLE,
|
|
327
327
|
/*#__PURE__*/
|
|
328
328
|
// eslint-disable-next-line react/jsx-indent
|
|
329
329
|
_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
@@ -369,6 +369,13 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
|
|
|
369
369
|
onClick: function onClick() {
|
|
370
370
|
return onInsertCallout(_constants2.PARAGRAPH);
|
|
371
371
|
}
|
|
372
|
+
})), _constants2.ELEMENT_TYPE.DIVIDER, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
373
|
+
isHidden: !quickInsertMenuSearchMap[_constants2.ELEMENT_TYPE.DIVIDER],
|
|
374
|
+
key: "sdoc-insert-menu-divider",
|
|
375
|
+
menuConfig: (0, _objectSpread5["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.DIVIDER]),
|
|
376
|
+
onClick: function onClick() {
|
|
377
|
+
return onInsert(_constants2.ELEMENT_TYPE.DIVIDER);
|
|
378
|
+
}
|
|
372
379
|
})), _constants2.FORMULA, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
373
380
|
isHidden: !quickInsertMenuSearchMap[_constants2.FORMULA],
|
|
374
381
|
disabled: isDisableFormula,
|
|
@@ -26,6 +26,7 @@ var _event = require("./event");
|
|
|
26
26
|
var _helpers2 = require("./helpers");
|
|
27
27
|
var _sideMenu = _interopRequireDefault(require("./side-menu"));
|
|
28
28
|
require("./index.css");
|
|
29
|
+
var HORIZONTAL_DROP_ZONE_WIDTH = 48;
|
|
29
30
|
var sourceElement = null;
|
|
30
31
|
var targetElement = null;
|
|
31
32
|
var SideToolbar = function SideToolbar() {
|
|
@@ -606,13 +607,23 @@ var SideToolbar = function SideToolbar() {
|
|
|
606
607
|
setIsEnterMoreVertical(false);
|
|
607
608
|
}, []);
|
|
608
609
|
var handleDragover = (0, _react.useCallback)(function (event) {
|
|
609
|
-
var _target, _target2, _target3
|
|
610
|
+
var _target, _target2, _target3;
|
|
610
611
|
event.preventDefault();
|
|
612
|
+
var dragTypes = event.dataTransfer.types;
|
|
613
|
+
if (!dragTypes.includes(_event.DRAG_SDOC_EDITOR_ELEMENT)) {
|
|
614
|
+
(0, _helpers2.clearDragClass)(activeDragElRef.current);
|
|
615
|
+
activeDragElRef.current = null;
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
611
618
|
var _getNodeEntry7 = (0, _helpers2.getNodeEntry)(editor, sourceElement),
|
|
612
619
|
_getNodeEntry8 = (0, _slicedToArray2["default"])(_getNodeEntry7, 2),
|
|
613
620
|
sourceNode = _getNodeEntry8[0],
|
|
614
621
|
sourcePath = _getNodeEntry8[1];
|
|
615
|
-
if (!sourceNode || !sourcePath)
|
|
622
|
+
if (!sourceNode || !sourcePath) {
|
|
623
|
+
(0, _helpers2.clearDragClass)(activeDragElRef.current);
|
|
624
|
+
activeDragElRef.current = null;
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
616
627
|
|
|
617
628
|
// Not support node type in multi column
|
|
618
629
|
if ([_constants2.TABLE, _constants2.VIDEO, _constants2.CODE_BLOCK, _constants2.WHITEBOARD, _constants2.FORMULA].includes(sourceNode.type)) return;
|
|
@@ -671,48 +682,59 @@ var SideToolbar = function SideToolbar() {
|
|
|
671
682
|
// Stop if target node is multi column node with four columns
|
|
672
683
|
if (targetNode.type === _constants2.MULTI_COLUMN && targetNode.children.length === 4) return;
|
|
673
684
|
|
|
674
|
-
// Add hover style for target node multi column children
|
|
685
|
+
// Add hover style for target node multi column children.
|
|
686
|
+
// Only use a fixed-width zone around each column boundary so the drop
|
|
687
|
+
// direction is predictable instead of depending on an arbitrary x value.
|
|
675
688
|
if (targetNode.type === _constants2.MULTI_COLUMN) {
|
|
676
689
|
var multiColumnEl = target.el;
|
|
677
|
-
var columnEls = multiColumnEl.querySelectorAll('.sdoc-column-container');
|
|
690
|
+
var columnEls = Array.from(multiColumnEl.querySelectorAll('.sdoc-column-container'));
|
|
678
691
|
if (!columnEls.length) return;
|
|
679
692
|
columnEls.forEach(function (col) {
|
|
680
693
|
return col.classList.remove('sdoc-dragging-left', 'sdoc-dragging', 'sdoc-dragging-right');
|
|
681
694
|
});
|
|
682
|
-
var
|
|
695
|
+
var activeColumn = null;
|
|
696
|
+
var activeDirection = null;
|
|
697
|
+
var previousRect = null;
|
|
683
698
|
columnEls.forEach(function (colEl, index) {
|
|
684
699
|
var rect = colEl.getBoundingClientRect();
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
700
|
+
var leftZoneStart = index === 0 ? rect.left - HORIZONTAL_DROP_ZONE_WIDTH : Math.max(previousRect.right, rect.left - HORIZONTAL_DROP_ZONE_WIDTH);
|
|
701
|
+
if (x >= leftZoneStart && x < rect.left) {
|
|
702
|
+
activeColumn = colEl;
|
|
703
|
+
activeDirection = 'left';
|
|
688
704
|
}
|
|
689
|
-
if (
|
|
690
|
-
colEl
|
|
691
|
-
|
|
705
|
+
if (index === columnEls.length - 1 && x > rect.right && x <= rect.right + HORIZONTAL_DROP_ZONE_WIDTH) {
|
|
706
|
+
activeColumn = colEl;
|
|
707
|
+
activeDirection = 'right';
|
|
692
708
|
}
|
|
693
|
-
|
|
694
|
-
colEl.classList.add('sdoc-dragging-right');
|
|
695
|
-
activeDragElRef.current = colEl;
|
|
696
|
-
}
|
|
697
|
-
preColRect = rect;
|
|
709
|
+
previousRect = rect;
|
|
698
710
|
});
|
|
711
|
+
if (activeColumn) {
|
|
712
|
+
activeColumn.classList.add("sdoc-dragging-".concat(activeDirection));
|
|
713
|
+
activeDragElRef.current = activeColumn;
|
|
714
|
+
} else {
|
|
715
|
+
activeDragElRef.current = null;
|
|
716
|
+
}
|
|
699
717
|
return;
|
|
700
718
|
}
|
|
701
719
|
|
|
702
|
-
// Add hover style for target node as non-multi column children
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
720
|
+
// Add hover style for target node as non-multi column children.
|
|
721
|
+
// The drop zones are placed immediately outside the left and right edges
|
|
722
|
+
// of the target block, keeping the center area available for normal drag.
|
|
723
|
+
var isLeftDropZone = x >= target.rect.left - HORIZONTAL_DROP_ZONE_WIDTH && x < target.rect.left;
|
|
724
|
+
var isRightDropZone = x > target.rect.right && x <= target.rect.right + HORIZONTAL_DROP_ZONE_WIDTH;
|
|
725
|
+
if (isLeftDropZone) {
|
|
706
726
|
target.el.classList.add('sdoc-dragging-left');
|
|
707
727
|
target.el.classList.remove('sdoc-dragging-right');
|
|
708
728
|
target.el.classList.remove('sdoc-dragging');
|
|
709
|
-
|
|
710
|
-
|
|
729
|
+
activeDragElRef.current = target.el;
|
|
730
|
+
} else if (isRightDropZone) {
|
|
711
731
|
target.el.classList.add('sdoc-dragging-right');
|
|
712
732
|
target.el.classList.remove('sdoc-dragging-left');
|
|
713
733
|
target.el.classList.remove('sdoc-dragging');
|
|
734
|
+
activeDragElRef.current = target.el;
|
|
735
|
+
} else {
|
|
736
|
+
activeDragElRef.current = null;
|
|
714
737
|
}
|
|
715
|
-
activeDragElRef.current = target.el;
|
|
716
738
|
}, [editor]);
|
|
717
739
|
var clearAllDragStyles = (0, _react.useCallback)(function () {
|
|
718
740
|
var el = activeDragElRef.current;
|
|
@@ -721,6 +743,8 @@ var SideToolbar = function SideToolbar() {
|
|
|
721
743
|
}, []);
|
|
722
744
|
var handleDrop = (0, _react.useCallback)(function () {
|
|
723
745
|
var targetEl = activeDragElRef.current;
|
|
746
|
+
var hasSideDropClass = (targetEl === null || targetEl === void 0 ? void 0 : targetEl.classList.contains('sdoc-dragging-left')) || (targetEl === null || targetEl === void 0 ? void 0 : targetEl.classList.contains('sdoc-dragging-right'));
|
|
747
|
+
if (!hasSideDropClass) return false;
|
|
724
748
|
var _getNodeEntry1 = (0, _helpers2.getNodeEntry)(editor, targetEl),
|
|
725
749
|
_getNodeEntry10 = (0, _slicedToArray2["default"])(_getNodeEntry1, 2),
|
|
726
750
|
targetNode = _getNodeEntry10[0],
|
|
@@ -729,7 +753,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
729
753
|
_getNodeEntry12 = (0, _slicedToArray2["default"])(_getNodeEntry11, 2),
|
|
730
754
|
sourceNode = _getNodeEntry12[0],
|
|
731
755
|
sourcePath = _getNodeEntry12[1];
|
|
732
|
-
if (!targetPath || !sourcePath) return;
|
|
756
|
+
if (!targetNode || !targetPath || !sourceNode || !sourcePath) return false;
|
|
733
757
|
|
|
734
758
|
// When source node is list child, it is equal to drag top list node
|
|
735
759
|
var topSourceNode = _slate.Node.get(editor, [sourcePath[0]]);
|
|
@@ -756,7 +780,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
756
780
|
to: [targetPath[0], targetPath[1], 0]
|
|
757
781
|
});
|
|
758
782
|
}
|
|
759
|
-
return;
|
|
783
|
+
return true;
|
|
760
784
|
}
|
|
761
785
|
|
|
762
786
|
// Drop non-multi column into non-multi column situation
|
|
@@ -764,7 +788,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
764
788
|
if ([_constants2.ORDERED_LIST, _constants2.UNORDERED_LIST].includes(targetNode.type)) {
|
|
765
789
|
targetPath = _slateReact.ReactEditor.findPath(editor, targetNode);
|
|
766
790
|
}
|
|
767
|
-
if (_slate.Path.equals([sourcePath[0]], [targetPath[0]])) return;
|
|
791
|
+
if (_slate.Path.equals([sourcePath[0]], [targetPath[0]])) return true;
|
|
768
792
|
var leftNode = null;
|
|
769
793
|
var rightNode = null;
|
|
770
794
|
if (targetEl.classList.contains('sdoc-dragging-left')) {
|
|
@@ -774,7 +798,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
774
798
|
leftNode = targetNode;
|
|
775
799
|
rightNode = sourceNode;
|
|
776
800
|
} else {
|
|
777
|
-
return;
|
|
801
|
+
return true;
|
|
778
802
|
}
|
|
779
803
|
|
|
780
804
|
// Form multi column first and then remove source and target node
|
|
@@ -785,21 +809,39 @@ var SideToolbar = function SideToolbar() {
|
|
|
785
809
|
_slate.Transforms.removeNodes(editor, {
|
|
786
810
|
at: [sourcePath[0]]
|
|
787
811
|
});
|
|
788
|
-
return;
|
|
812
|
+
return true;
|
|
789
813
|
}, [editor]);
|
|
814
|
+
var handleDropCapture = (0, _react.useCallback)(function (event) {
|
|
815
|
+
var _event$dataTransfer;
|
|
816
|
+
var dragTypes = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.types;
|
|
817
|
+
if (!(dragTypes !== null && dragTypes !== void 0 && dragTypes.includes(_event.DRAG_SDOC_EDITOR_ELEMENT)) || !activeDragElRef.current) return;
|
|
818
|
+
var handled = handleDrop();
|
|
819
|
+
if (!handled) return;
|
|
820
|
+
|
|
821
|
+
// Block-level onDrop handlers stop propagation. Capture the event on the
|
|
822
|
+
// article container so side drops are handled before those handlers run.
|
|
823
|
+
event.preventDefault();
|
|
824
|
+
event.stopPropagation();
|
|
825
|
+
clearAllDragStyles();
|
|
826
|
+
sourceElement = null;
|
|
827
|
+
targetElement = null;
|
|
828
|
+
}, [clearAllDragStyles, handleDrop]);
|
|
790
829
|
(0, _react.useEffect)(function () {
|
|
791
830
|
var editorContainer = document.querySelector('.sdoc-article-container');
|
|
792
|
-
editorContainer
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
editorContainer.addEventListener('
|
|
831
|
+
if (!editorContainer) return undefined;
|
|
832
|
+
|
|
833
|
+
// Use capture phase because block-level drag handlers stop propagation.
|
|
834
|
+
editorContainer.addEventListener('dragover', handleDragover, true);
|
|
835
|
+
editorContainer.addEventListener('dragend', clearAllDragStyles, true);
|
|
836
|
+
editorContainer.addEventListener('dragleave', clearAllDragStyles, true);
|
|
837
|
+
editorContainer.addEventListener('drop', handleDropCapture, true);
|
|
796
838
|
return function () {
|
|
797
|
-
editorContainer.removeEventListener('dragover', handleDragover);
|
|
798
|
-
editorContainer.removeEventListener('dragend', clearAllDragStyles);
|
|
799
|
-
editorContainer.removeEventListener('dragleave', clearAllDragStyles);
|
|
800
|
-
editorContainer.removeEventListener('drop',
|
|
839
|
+
editorContainer.removeEventListener('dragover', handleDragover, true);
|
|
840
|
+
editorContainer.removeEventListener('dragend', clearAllDragStyles, true);
|
|
841
|
+
editorContainer.removeEventListener('dragleave', clearAllDragStyles, true);
|
|
842
|
+
editorContainer.removeEventListener('drop', handleDropCapture, true);
|
|
801
843
|
};
|
|
802
|
-
}, [handleDragover, clearAllDragStyles,
|
|
844
|
+
}, [handleDragover, clearAllDragStyles, handleDropCapture]);
|
|
803
845
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_commonUtils.isMobile && /*#__PURE__*/_react["default"].createElement("div", {
|
|
804
846
|
onAnimationEnd: function onAnimationEnd() {
|
|
805
847
|
return setIsMoving(false);
|
|
@@ -236,6 +236,12 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
|
|
|
236
236
|
onClick: function onClick() {
|
|
237
237
|
return onInsertCallout(_constants2.PARAGRAPH);
|
|
238
238
|
}
|
|
239
|
+
}), /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
240
|
+
isHidden: !insertMenuSearchMap[_constants2.ELEMENT_TYPE.DIVIDER],
|
|
241
|
+
menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.DIVIDER]),
|
|
242
|
+
onClick: function onClick() {
|
|
243
|
+
return onInsert(_constants2.ELEMENT_TYPE.DIVIDER);
|
|
244
|
+
}
|
|
239
245
|
}), _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.MULTI_COLUMN].map(function (item) {
|
|
240
246
|
return /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
241
247
|
isHidden: !insertMenuSearchMap[item.type],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.247",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "057969db030ac81ad1c976b6e961e9e4e86774e4"
|
|
75
75
|
}
|