@seafile/sdoc-editor 3.0.246 → 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.
|
@@ -609,11 +609,21 @@ var SideToolbar = function SideToolbar() {
|
|
|
609
609
|
var handleDragover = (0, _react.useCallback)(function (event) {
|
|
610
610
|
var _target, _target2, _target3;
|
|
611
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
|
+
}
|
|
612
618
|
var _getNodeEntry7 = (0, _helpers2.getNodeEntry)(editor, sourceElement),
|
|
613
619
|
_getNodeEntry8 = (0, _slicedToArray2["default"])(_getNodeEntry7, 2),
|
|
614
620
|
sourceNode = _getNodeEntry8[0],
|
|
615
621
|
sourcePath = _getNodeEntry8[1];
|
|
616
|
-
if (!sourceNode || !sourcePath)
|
|
622
|
+
if (!sourceNode || !sourcePath) {
|
|
623
|
+
(0, _helpers2.clearDragClass)(activeDragElRef.current);
|
|
624
|
+
activeDragElRef.current = null;
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
617
627
|
|
|
618
628
|
// Not support node type in multi column
|
|
619
629
|
if ([_constants2.TABLE, _constants2.VIDEO, _constants2.CODE_BLOCK, _constants2.WHITEBOARD, _constants2.FORMULA].includes(sourceNode.type)) return;
|
|
@@ -733,6 +743,8 @@ var SideToolbar = function SideToolbar() {
|
|
|
733
743
|
}, []);
|
|
734
744
|
var handleDrop = (0, _react.useCallback)(function () {
|
|
735
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;
|
|
736
748
|
var _getNodeEntry1 = (0, _helpers2.getNodeEntry)(editor, targetEl),
|
|
737
749
|
_getNodeEntry10 = (0, _slicedToArray2["default"])(_getNodeEntry1, 2),
|
|
738
750
|
targetNode = _getNodeEntry10[0],
|
|
@@ -741,7 +753,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
741
753
|
_getNodeEntry12 = (0, _slicedToArray2["default"])(_getNodeEntry11, 2),
|
|
742
754
|
sourceNode = _getNodeEntry12[0],
|
|
743
755
|
sourcePath = _getNodeEntry12[1];
|
|
744
|
-
if (!targetPath || !sourcePath) return;
|
|
756
|
+
if (!targetNode || !targetPath || !sourceNode || !sourcePath) return false;
|
|
745
757
|
|
|
746
758
|
// When source node is list child, it is equal to drag top list node
|
|
747
759
|
var topSourceNode = _slate.Node.get(editor, [sourcePath[0]]);
|
|
@@ -768,7 +780,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
768
780
|
to: [targetPath[0], targetPath[1], 0]
|
|
769
781
|
});
|
|
770
782
|
}
|
|
771
|
-
return;
|
|
783
|
+
return true;
|
|
772
784
|
}
|
|
773
785
|
|
|
774
786
|
// Drop non-multi column into non-multi column situation
|
|
@@ -776,7 +788,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
776
788
|
if ([_constants2.ORDERED_LIST, _constants2.UNORDERED_LIST].includes(targetNode.type)) {
|
|
777
789
|
targetPath = _slateReact.ReactEditor.findPath(editor, targetNode);
|
|
778
790
|
}
|
|
779
|
-
if (_slate.Path.equals([sourcePath[0]], [targetPath[0]])) return;
|
|
791
|
+
if (_slate.Path.equals([sourcePath[0]], [targetPath[0]])) return true;
|
|
780
792
|
var leftNode = null;
|
|
781
793
|
var rightNode = null;
|
|
782
794
|
if (targetEl.classList.contains('sdoc-dragging-left')) {
|
|
@@ -786,7 +798,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
786
798
|
leftNode = targetNode;
|
|
787
799
|
rightNode = sourceNode;
|
|
788
800
|
} else {
|
|
789
|
-
return;
|
|
801
|
+
return true;
|
|
790
802
|
}
|
|
791
803
|
|
|
792
804
|
// Form multi column first and then remove source and target node
|
|
@@ -797,21 +809,39 @@ var SideToolbar = function SideToolbar() {
|
|
|
797
809
|
_slate.Transforms.removeNodes(editor, {
|
|
798
810
|
at: [sourcePath[0]]
|
|
799
811
|
});
|
|
800
|
-
return;
|
|
812
|
+
return true;
|
|
801
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]);
|
|
802
829
|
(0, _react.useEffect)(function () {
|
|
803
830
|
var editorContainer = document.querySelector('.sdoc-article-container');
|
|
804
|
-
editorContainer
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
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);
|
|
808
838
|
return function () {
|
|
809
|
-
editorContainer.removeEventListener('dragover', handleDragover);
|
|
810
|
-
editorContainer.removeEventListener('dragend', clearAllDragStyles);
|
|
811
|
-
editorContainer.removeEventListener('dragleave', clearAllDragStyles);
|
|
812
|
-
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);
|
|
813
843
|
};
|
|
814
|
-
}, [handleDragover, clearAllDragStyles,
|
|
844
|
+
}, [handleDragover, clearAllDragStyles, handleDropCapture]);
|
|
815
845
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_commonUtils.isMobile && /*#__PURE__*/_react["default"].createElement("div", {
|
|
816
846
|
onAnimationEnd: function onAnimationEnd() {
|
|
817
847
|
return setIsMoving(false);
|
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
|
}
|