@seafile/sdoc-editor 3.0.249 → 3.0.251
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.
|
@@ -26,7 +26,8 @@ var _event = require("./event");
|
|
|
26
26
|
var _helpers2 = require("./helpers");
|
|
27
27
|
var _sideMenu = _interopRequireDefault(require("./side-menu"));
|
|
28
28
|
require("./index.css");
|
|
29
|
-
|
|
29
|
+
// Keep the visual drop indicator narrow, but make the invisible hit area easier to reach.
|
|
30
|
+
var HORIZONTAL_DROP_ZONE_WIDTH = 72;
|
|
30
31
|
var getSafeNodeEntry = function getSafeNodeEntry(editor, element) {
|
|
31
32
|
try {
|
|
32
33
|
return (0, _helpers2.getNodeEntry)(editor, element);
|
|
@@ -278,6 +279,7 @@ var SideToolbar = function SideToolbar() {
|
|
|
278
279
|
event.stopPropagation();
|
|
279
280
|
sourceElementRef.current = null;
|
|
280
281
|
isDraggingEditorElementRef.current = true;
|
|
282
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
281
283
|
// Create the preview container when dragging more than one listNodes
|
|
282
284
|
var noDrag = _slate.Path.equals(editor.selection.focus.path, editor.selection.anchor.path);
|
|
283
285
|
if (showSelectedNodesRef.current && showSelectedNodesRef.current.length > 1 && !noDrag) {
|
|
@@ -645,9 +647,8 @@ var SideToolbar = function SideToolbar() {
|
|
|
645
647
|
isDraggingEditorElementRef.current = false;
|
|
646
648
|
}, [clearAllDragStyles]);
|
|
647
649
|
var handleDragover = (0, _react.useCallback)(function (event) {
|
|
648
|
-
var _target;
|
|
650
|
+
var _event$target, _event$target$closest, _target;
|
|
649
651
|
if (!isEditorDrag()) return;
|
|
650
|
-
event.preventDefault();
|
|
651
652
|
var _getSafeNodeEntry7 = getSafeNodeEntry(editor, sourceElementRef.current),
|
|
652
653
|
_getSafeNodeEntry8 = (0, _slicedToArray2["default"])(_getSafeNodeEntry7, 2),
|
|
653
654
|
sourceNode = _getSafeNodeEntry8[0],
|
|
@@ -677,6 +678,11 @@ var SideToolbar = function SideToolbar() {
|
|
|
677
678
|
clearAllDragStyles();
|
|
678
679
|
return;
|
|
679
680
|
}
|
|
681
|
+
var eventEditorContainer = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : (_event$target$closest = _event$target.closest) === null || _event$target$closest === void 0 ? void 0 : _event$target$closest.call(_event$target, '.sdoc-article-container');
|
|
682
|
+
if (eventEditorContainer && eventEditorContainer !== editorContainer) {
|
|
683
|
+
clearAllDragStyles();
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
680
686
|
var containerRect = editorContainer.getBoundingClientRect();
|
|
681
687
|
|
|
682
688
|
// Current visible area of editor container
|
|
@@ -769,6 +775,9 @@ var SideToolbar = function SideToolbar() {
|
|
|
769
775
|
previousRect = rect;
|
|
770
776
|
});
|
|
771
777
|
if (activeColumn) {
|
|
778
|
+
event.preventDefault();
|
|
779
|
+
event.stopPropagation();
|
|
780
|
+
event.dataTransfer.dropEffect = 'move';
|
|
772
781
|
activeColumn.classList.add("sdoc-dragging-".concat(activeDirection));
|
|
773
782
|
activeDragElRef.current = activeColumn;
|
|
774
783
|
pendingSideDropRef.current = {
|
|
@@ -806,11 +815,20 @@ var SideToolbar = function SideToolbar() {
|
|
|
806
815
|
};
|
|
807
816
|
} else {
|
|
808
817
|
clearAllDragStyles();
|
|
818
|
+
return;
|
|
809
819
|
}
|
|
820
|
+
event.preventDefault();
|
|
821
|
+
event.stopPropagation();
|
|
822
|
+
event.dataTransfer.dropEffect = 'move';
|
|
810
823
|
}, [clearAllDragStyles, editor, getEditorContainer, isEditorDrag]);
|
|
811
824
|
var handleDragLeave = (0, _react.useCallback)(function (event) {
|
|
825
|
+
var _pendingSideDropRef$c;
|
|
812
826
|
var editorContainer = event.currentTarget;
|
|
813
827
|
var relatedTarget = event.relatedTarget;
|
|
828
|
+
var pendingDropElement = (_pendingSideDropRef$c = pendingSideDropRef.current) === null || _pendingSideDropRef$c === void 0 ? void 0 : _pendingSideDropRef$c.element;
|
|
829
|
+
|
|
830
|
+
// Preserve a pending move within this editor until drop or dragend.
|
|
831
|
+
if (pendingDropElement && editorContainer.contains(pendingDropElement)) return;
|
|
814
832
|
|
|
815
833
|
// Ignore dragleave events from descendants. Some browsers report a null
|
|
816
834
|
// relatedTarget when moving between block elements, so clearing here
|
|
@@ -892,48 +910,36 @@ var SideToolbar = function SideToolbar() {
|
|
|
892
910
|
return true;
|
|
893
911
|
}, [editor]);
|
|
894
912
|
var handleDropCapture = (0, _react.useCallback)(function (event) {
|
|
895
|
-
if (!isEditorDrag()
|
|
913
|
+
if (!isEditorDrag()) return;
|
|
896
914
|
|
|
897
|
-
//
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
event.stopPropagation();
|
|
902
|
-
var handled = handleDrop();
|
|
903
|
-
if (!handled) {
|
|
904
|
-
resetDragState();
|
|
905
|
-
return;
|
|
906
|
-
}
|
|
915
|
+
// Recheck the final position and stop the normal block drop for side hits.
|
|
916
|
+
handleDragover(event);
|
|
917
|
+
if (!pendingSideDropRef.current) return;
|
|
918
|
+
handleDrop();
|
|
907
919
|
resetDragState();
|
|
908
|
-
}, [handleDrop, isEditorDrag, resetDragState]);
|
|
920
|
+
}, [handleDragover, handleDrop, isEditorDrag, resetDragState]);
|
|
909
921
|
var handleDragEnd = (0, _react.useCallback)(function () {
|
|
910
|
-
//
|
|
911
|
-
//
|
|
922
|
+
// dragend also fires when the user cancels a drag or releases outside the
|
|
923
|
+
// editor. Only a confirmed drop event may mutate the Slate document.
|
|
912
924
|
if (!isDraggingEditorElementRef.current) return;
|
|
913
|
-
|
|
914
|
-
// Some deployed browsers do not deliver the drop event to the editor.
|
|
915
|
-
// The source draggable still receives dragend, so commit a pending side
|
|
916
|
-
// drop here as a fallback.
|
|
917
|
-
if (pendingSideDropRef.current) {
|
|
918
|
-
handleDrop();
|
|
919
|
-
}
|
|
920
925
|
resetDragState();
|
|
921
|
-
}, [
|
|
926
|
+
}, [resetDragState]);
|
|
922
927
|
(0, _react.useEffect)(function () {
|
|
923
928
|
var editorContainer = getEditorContainer();
|
|
924
929
|
if (!editorContainer) return undefined;
|
|
925
930
|
|
|
926
|
-
//
|
|
927
|
-
//
|
|
928
|
-
editorContainer.
|
|
931
|
+
// Side hit areas can extend outside the editor container. Accept them at
|
|
932
|
+
// document level, while the handlers still validate this editor's drag.
|
|
933
|
+
var dragEventTarget = editorContainer.ownerDocument;
|
|
934
|
+
dragEventTarget.addEventListener('dragover', handleDragover, true);
|
|
929
935
|
editorContainer.addEventListener('dragend', handleDragEnd, true);
|
|
930
936
|
editorContainer.addEventListener('dragleave', handleDragLeave, true);
|
|
931
|
-
|
|
937
|
+
dragEventTarget.addEventListener('drop', handleDropCapture, true);
|
|
932
938
|
return function () {
|
|
933
|
-
|
|
939
|
+
dragEventTarget.removeEventListener('dragover', handleDragover, true);
|
|
934
940
|
editorContainer.removeEventListener('dragend', handleDragEnd, true);
|
|
935
941
|
editorContainer.removeEventListener('dragleave', handleDragLeave, true);
|
|
936
|
-
|
|
942
|
+
dragEventTarget.removeEventListener('drop', handleDropCapture, true);
|
|
937
943
|
};
|
|
938
944
|
}, [getEditorContainer, handleDragEnd, handleDragLeave, handleDragover, handleDropCapture]);
|
|
939
945
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_commonUtils.isMobile && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -950,7 +956,6 @@ var SideToolbar = function SideToolbar() {
|
|
|
950
956
|
onMouseDown: onMouseDown,
|
|
951
957
|
draggable: true,
|
|
952
958
|
onDragStart: dragStart,
|
|
953
|
-
onDragEnd: handleDragEnd,
|
|
954
959
|
className: "sdoc-side-op-icon",
|
|
955
960
|
onClick: onShowSideMenuToggle,
|
|
956
961
|
onMouseEnter: onMouseEnter,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.251",
|
|
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": "fff8d3dc8f019c7a0f0168e906ed6091e11ad0ab"
|
|
75
75
|
}
|