@seafile/sdoc-editor 3.0.250 → 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,20 +910,14 @@ 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
922
|
// dragend also fires when the user cancels a drag or releases outside the
|
|
911
923
|
// editor. Only a confirmed drop event may mutate the Slate document.
|
|
@@ -916,17 +928,18 @@ var SideToolbar = function SideToolbar() {
|
|
|
916
928
|
var editorContainer = getEditorContainer();
|
|
917
929
|
if (!editorContainer) return undefined;
|
|
918
930
|
|
|
919
|
-
//
|
|
920
|
-
//
|
|
921
|
-
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);
|
|
922
935
|
editorContainer.addEventListener('dragend', handleDragEnd, true);
|
|
923
936
|
editorContainer.addEventListener('dragleave', handleDragLeave, true);
|
|
924
|
-
|
|
937
|
+
dragEventTarget.addEventListener('drop', handleDropCapture, true);
|
|
925
938
|
return function () {
|
|
926
|
-
|
|
939
|
+
dragEventTarget.removeEventListener('dragover', handleDragover, true);
|
|
927
940
|
editorContainer.removeEventListener('dragend', handleDragEnd, true);
|
|
928
941
|
editorContainer.removeEventListener('dragleave', handleDragLeave, true);
|
|
929
|
-
|
|
942
|
+
dragEventTarget.removeEventListener('drop', handleDropCapture, true);
|
|
930
943
|
};
|
|
931
944
|
}, [getEditorContainer, handleDragEnd, handleDragLeave, handleDragover, handleDropCapture]);
|
|
932
945
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_commonUtils.isMobile && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -943,7 +956,6 @@ var SideToolbar = function SideToolbar() {
|
|
|
943
956
|
onMouseDown: onMouseDown,
|
|
944
957
|
draggable: true,
|
|
945
958
|
onDragStart: dragStart,
|
|
946
|
-
onDragEnd: handleDragEnd,
|
|
947
959
|
className: "sdoc-side-op-icon",
|
|
948
960
|
onClick: onShowSideMenuToggle,
|
|
949
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
|
}
|