@seafile/sdoc-editor 3.0.130 → 3.0.132
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.
- package/dist/extension/plugins/embed-link/constants.js +5 -2
- package/dist/extension/plugins/embed-link/helper.js +12 -1
- package/dist/extension/plugins/embed-link/index.css +6 -2
- package/dist/extension/plugins/embed-link/render-elem.js +97 -2
- package/dist/extension/plugins/link/dialog/add-link-dialog/select-forms/linked-page.js +2 -1
- package/package.json +2 -2
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.EMBED_LINK_SOURCE = void 0;
|
|
6
|
+
exports.MIN_EMBED_LINK_HEIGHT = exports.MAX_EMBED_LINK_HEIGHT = exports.EMBED_LINK_SOURCE = exports.DEFAULT_EMBED_LINK_HEIGHT = void 0;
|
|
7
7
|
var EMBED_LINK_SOURCE = exports.EMBED_LINK_SOURCE = {
|
|
8
8
|
SEATABLE: 'seatable',
|
|
9
9
|
FIGMA: 'figma'
|
|
10
|
-
};
|
|
10
|
+
};
|
|
11
|
+
var DEFAULT_EMBED_LINK_HEIGHT = exports.DEFAULT_EMBED_LINK_HEIGHT = 300;
|
|
12
|
+
var MIN_EMBED_LINK_HEIGHT = exports.MIN_EMBED_LINK_HEIGHT = 300;
|
|
13
|
+
var MAX_EMBED_LINK_HEIGHT = exports.MAX_EMBED_LINK_HEIGHT = 550;
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.normalizeFigmaEmbedLink = exports.isInsertEmbedLinkDisabled = exports.insertEmbedLink = exports.getEmbedLinkType = exports.generateEmbedLinkNode = void 0;
|
|
7
|
+
exports.updateEmbedLink = exports.normalizeFigmaEmbedLink = exports.isInsertEmbedLinkDisabled = exports.insertEmbedLink = exports.getEmbedLinkType = exports.generateEmbedLinkNode = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
9
9
|
var _slate = require("@seafile/slate");
|
|
10
10
|
var _slateReact = require("@seafile/slate-react");
|
|
@@ -131,4 +131,15 @@ var insertEmbedLink = exports.insertEmbedLink = function insertEmbedLink(editor,
|
|
|
131
131
|
(0, _core.focusEditor)(editor, range);
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
|
+
};
|
|
135
|
+
var updateEmbedLink = exports.updateEmbedLink = function updateEmbedLink(editor, data) {
|
|
136
|
+
_slate.Transforms.setNodes(editor, {
|
|
137
|
+
data: data
|
|
138
|
+
}, {
|
|
139
|
+
match: function match(n) {
|
|
140
|
+
return (0, _core.getNodeType)(n) === _elementType.EMBED_LINK;
|
|
141
|
+
},
|
|
142
|
+
at: editor.selection,
|
|
143
|
+
voids: true
|
|
144
|
+
});
|
|
134
145
|
};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
.sdoc-embed-link-container {
|
|
2
2
|
position: relative;
|
|
3
|
-
width: 100%;
|
|
4
|
-
height: 300px;
|
|
5
3
|
border: 1px solid #ccc;
|
|
6
4
|
margin: 5px 0;
|
|
5
|
+
width: 100%;
|
|
7
6
|
}
|
|
8
7
|
|
|
9
8
|
.sdoc-embed-link-container.isSelected {
|
|
@@ -40,6 +39,11 @@
|
|
|
40
39
|
z-index: 1;
|
|
41
40
|
}
|
|
42
41
|
|
|
42
|
+
.sdoc-embed-link-container.isSelected .image-resizer {
|
|
43
|
+
z-index: 1;
|
|
44
|
+
cursor: ns-resize;
|
|
45
|
+
}
|
|
46
|
+
|
|
43
47
|
.embed-link-zoom-out-container {
|
|
44
48
|
position: fixed;
|
|
45
49
|
inset: 0;
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.renderEmbedLink = renderEmbedLink;
|
|
9
9
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
13
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
@@ -23,13 +24,18 @@ var _helper = require("./helper");
|
|
|
23
24
|
var _hoverMenu = _interopRequireDefault(require("./hover-menu"));
|
|
24
25
|
require("./index.css");
|
|
25
26
|
var EmbedLink = function EmbedLink(_ref) {
|
|
27
|
+
var _element$data2;
|
|
26
28
|
var editor = _ref.editor,
|
|
27
29
|
element = _ref.element;
|
|
28
30
|
var EmbedLinkRef = (0, _react.useRef)();
|
|
31
|
+
var embedLinkContainerRef = (0, _react.useRef)(null);
|
|
29
32
|
var fullscreenRef = (0, _react.useRef)();
|
|
30
33
|
var scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
31
34
|
var isSelected = (0, _slateReact.useSelected)();
|
|
32
35
|
var readOnly = (0, _slateReact.useReadOnly)();
|
|
36
|
+
var resizerRef = (0, _react.useRef)(null);
|
|
37
|
+
var resizeStartYRef = (0, _react.useRef)(0);
|
|
38
|
+
var resizeStartHeightRef = (0, _react.useRef)(0);
|
|
33
39
|
var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
|
|
34
40
|
t = _useTranslation.t;
|
|
35
41
|
var _useState = (0, _react.useState)({
|
|
@@ -43,6 +49,14 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
43
49
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
44
50
|
isShowZoomOut = _useState4[0],
|
|
45
51
|
setIsShowZoomOut = _useState4[1];
|
|
52
|
+
var _useState5 = (0, _react.useState)(null),
|
|
53
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
54
|
+
movingHeight = _useState6[0],
|
|
55
|
+
setMovingHeight = _useState6[1];
|
|
56
|
+
var _useState7 = (0, _react.useState)(false),
|
|
57
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
58
|
+
isResizing = _useState8[0],
|
|
59
|
+
setIsResizing = _useState8[1];
|
|
46
60
|
var originalLink = element.link,
|
|
47
61
|
link_type = element.link_type;
|
|
48
62
|
var link = originalLink;
|
|
@@ -52,6 +66,76 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
52
66
|
var isValidUrl = (0, _react.useMemo)(function () {
|
|
53
67
|
return (0, _isUrl["default"])(link);
|
|
54
68
|
}, [link]);
|
|
69
|
+
var registerEvent = (0, _react.useCallback)(function (eventList) {
|
|
70
|
+
eventList.forEach(function (element) {
|
|
71
|
+
document.addEventListener(element.eventName, element.event);
|
|
72
|
+
});
|
|
73
|
+
}, []);
|
|
74
|
+
var getEmbedLinkHeight = (0, _react.useCallback)(function () {
|
|
75
|
+
var _element$data;
|
|
76
|
+
var height = movingHeight !== null && movingHeight !== void 0 ? movingHeight : element === null || element === void 0 ? void 0 : (_element$data = element.data) === null || _element$data === void 0 ? void 0 : _element$data.height;
|
|
77
|
+
var parsedHeight = Number(height);
|
|
78
|
+
if (parsedHeight > 0) {
|
|
79
|
+
return Math.min(Math.max(parsedHeight, _constants.MIN_EMBED_LINK_HEIGHT), _constants.MAX_EMBED_LINK_HEIGHT);
|
|
80
|
+
}
|
|
81
|
+
return _constants.DEFAULT_EMBED_LINK_HEIGHT;
|
|
82
|
+
}, [element === null || element === void 0 ? void 0 : (_element$data2 = element.data) === null || _element$data2 === void 0 ? void 0 : _element$data2.height, movingHeight]);
|
|
83
|
+
var onMouseMove = (0, _react.useCallback)(function (event) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
var changeY = event.clientY - resizeStartYRef.current;
|
|
87
|
+
var embedLinkHeight = resizeStartHeightRef.current + changeY;
|
|
88
|
+
embedLinkHeight = Math.min(Math.max(embedLinkHeight, _constants.MIN_EMBED_LINK_HEIGHT), _constants.MAX_EMBED_LINK_HEIGHT);
|
|
89
|
+
if (embedLinkContainerRef.current) {
|
|
90
|
+
embedLinkContainerRef.current.style.height = "".concat(embedLinkHeight, "px");
|
|
91
|
+
}
|
|
92
|
+
setMovingHeight(embedLinkHeight);
|
|
93
|
+
}, []);
|
|
94
|
+
var onResizeEnd = (0, _react.useCallback)(function (event) {
|
|
95
|
+
var _ref2, _embedLinkContainerRe;
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
event.stopPropagation();
|
|
98
|
+
unregisterEvent([{
|
|
99
|
+
'eventName': 'mousemove',
|
|
100
|
+
'event': onMouseMove
|
|
101
|
+
}, {
|
|
102
|
+
'eventName': 'mouseup',
|
|
103
|
+
'event': onResizeEnd
|
|
104
|
+
}]);
|
|
105
|
+
var resolvedHeight = (_ref2 = movingHeight !== null && movingHeight !== void 0 ? movingHeight : (_embedLinkContainerRe = embedLinkContainerRef.current) === null || _embedLinkContainerRe === void 0 ? void 0 : _embedLinkContainerRe.getBoundingClientRect().height) !== null && _ref2 !== void 0 ? _ref2 : getEmbedLinkHeight();
|
|
106
|
+
var finalHeight = Math.min(Math.max(Number(resolvedHeight) || _constants.DEFAULT_EMBED_LINK_HEIGHT, _constants.MIN_EMBED_LINK_HEIGHT), _constants.MAX_EMBED_LINK_HEIGHT);
|
|
107
|
+
var newData = (0, _objectSpread2["default"])({}, element.data || {});
|
|
108
|
+
delete newData.width;
|
|
109
|
+
newData.height = finalHeight;
|
|
110
|
+
(0, _helper.updateEmbedLink)(editor, newData);
|
|
111
|
+
|
|
112
|
+
// Reset hover menu position
|
|
113
|
+
setTimeout(function () {
|
|
114
|
+
setIsResizing(false);
|
|
115
|
+
}, 100);
|
|
116
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
117
|
+
}, [editor, element.data, getEmbedLinkHeight, movingHeight, onMouseMove]);
|
|
118
|
+
var unregisterEvent = (0, _react.useCallback)(function (eventList) {
|
|
119
|
+
eventList.forEach(function (element) {
|
|
120
|
+
document.removeEventListener(element.eventName, element.event);
|
|
121
|
+
});
|
|
122
|
+
}, []);
|
|
123
|
+
var onResizeStart = (0, _react.useCallback)(function (event) {
|
|
124
|
+
var _embedLinkContainerRe2;
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
event.stopPropagation();
|
|
127
|
+
setIsResizing(true);
|
|
128
|
+
resizeStartYRef.current = event.clientY;
|
|
129
|
+
var currentHeight = ((_embedLinkContainerRe2 = embedLinkContainerRef.current) === null || _embedLinkContainerRe2 === void 0 ? void 0 : _embedLinkContainerRe2.getBoundingClientRect().height) || getEmbedLinkHeight();
|
|
130
|
+
resizeStartHeightRef.current = currentHeight;
|
|
131
|
+
registerEvent([{
|
|
132
|
+
'eventName': 'mousemove',
|
|
133
|
+
'event': onMouseMove
|
|
134
|
+
}, {
|
|
135
|
+
'eventName': 'mouseup',
|
|
136
|
+
'event': onResizeEnd
|
|
137
|
+
}]);
|
|
138
|
+
}, [getEmbedLinkHeight, onMouseMove, onResizeEnd, registerEvent]);
|
|
55
139
|
var onDeleteEmbedLink = (0, _react.useCallback)(function () {
|
|
56
140
|
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
57
141
|
_slate.Transforms.removeNodes(editor, {
|
|
@@ -99,7 +183,9 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
99
183
|
resizeObserver.observe(scrollRef.current);
|
|
100
184
|
}
|
|
101
185
|
return function () {
|
|
102
|
-
observerRefValue
|
|
186
|
+
if (observerRefValue) {
|
|
187
|
+
observerRefValue.removeEventListener('scroll', handleScroll);
|
|
188
|
+
}
|
|
103
189
|
if (resizeObserver) {
|
|
104
190
|
resizeObserver.disconnect();
|
|
105
191
|
}
|
|
@@ -130,9 +216,14 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
130
216
|
};
|
|
131
217
|
}, [isShowZoomOut, setIsShowZoomOut]);
|
|
132
218
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
219
|
+
ref: embedLinkContainerRef,
|
|
133
220
|
className: (0, _classnames["default"])('sdoc-embed-link-container', {
|
|
134
221
|
'isSelected': isSelected
|
|
135
222
|
}),
|
|
223
|
+
style: {
|
|
224
|
+
height: getEmbedLinkHeight(),
|
|
225
|
+
maxHeight: _constants.MAX_EMBED_LINK_HEIGHT
|
|
226
|
+
},
|
|
136
227
|
onDoubleClick: handleDoubleClick,
|
|
137
228
|
scrolling: "no"
|
|
138
229
|
}, isValidUrl && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
@@ -144,10 +235,14 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
144
235
|
className: "iframe-overlay",
|
|
145
236
|
onDoubleClick: handleDoubleClick,
|
|
146
237
|
onClick: handleOnClick
|
|
238
|
+
}), !readOnly && isSelected && /*#__PURE__*/_react["default"].createElement("span", {
|
|
239
|
+
className: "image-resizer",
|
|
240
|
+
ref: resizerRef,
|
|
241
|
+
onMouseDown: onResizeStart
|
|
147
242
|
})), !isValidUrl && /*#__PURE__*/_react["default"].createElement("div", {
|
|
148
243
|
ref: EmbedLinkRef,
|
|
149
244
|
className: "sdoc-embed-link-tip"
|
|
150
|
-
}, t('Embed_link_invalid_tip'))), isSelected && !readOnly && !isShowZoomOut && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
245
|
+
}, t('Embed_link_invalid_tip'))), isSelected && !readOnly && !isShowZoomOut && !isResizing && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
151
246
|
isValidUrl: isValidUrl,
|
|
152
247
|
menuPosition: menuPosition,
|
|
153
248
|
onOpen: handleDoubleClick,
|
|
@@ -133,8 +133,9 @@ var LinkedPagesForm = function LinkedPagesForm(_ref) {
|
|
|
133
133
|
var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
134
134
|
var isFromSearch = arguments.length > 3 ? arguments[3] : undefined;
|
|
135
135
|
var page = wikiPageList.find(function (p) {
|
|
136
|
-
return p.id === item.id;
|
|
136
|
+
return (p === null || p === void 0 ? void 0 : p.id) === item.id;
|
|
137
137
|
});
|
|
138
|
+
if (!page) return null;
|
|
138
139
|
if (isFromSearch) {
|
|
139
140
|
page.isDir = false;
|
|
140
141
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.132",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "92ca8076d7b334e37a5971eae5f6f6e64c8dc56d"
|
|
76
76
|
}
|