@seafile/sdoc-editor 3.0.74 → 3.0.76
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/link/hover/index.js +7 -0
- package/dist/extension/plugins/link/render-elem.js +17 -0
- package/dist/extension/plugins/video/render-elem.js +1 -0
- package/dist/extension/plugins/whiteboard/hover-menu/index.js +8 -5
- package/dist/extension/plugins/whiteboard/index.css +9 -0
- package/dist/extension/plugins/whiteboard/render-elem.js +17 -3
- package/package.json +2 -2
|
@@ -12,6 +12,8 @@ var _reactDom = require("react-dom");
|
|
|
12
12
|
var _reactI18next = require("react-i18next");
|
|
13
13
|
var _slate = require("@seafile/slate");
|
|
14
14
|
var _slateReact = require("@seafile/slate-react");
|
|
15
|
+
var _isUrl = _interopRequireDefault(require("is-url"));
|
|
16
|
+
var _toast = _interopRequireDefault(require("../../../../components/toast"));
|
|
15
17
|
var _tooltip = _interopRequireDefault(require("../../../../components/tooltip"));
|
|
16
18
|
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
17
19
|
var _helpers = require("../helpers");
|
|
@@ -35,6 +37,11 @@ var LinkHover = function LinkHover(_ref) {
|
|
|
35
37
|
setIsShowTooltip(true);
|
|
36
38
|
}, []);
|
|
37
39
|
var onMouseDown = (0, _react.useCallback)(function (event) {
|
|
40
|
+
if (!(0, _isUrl["default"])(element.href)) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
_toast["default"].danger('The_link_is_invalid');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
38
45
|
event.stopPropagation();
|
|
39
46
|
if (!(0, _helpers.isWeChat)()) {
|
|
40
47
|
window.open(element.href);
|
|
@@ -14,6 +14,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/es
|
|
|
14
14
|
var _react = _interopRequireDefault(require("react"));
|
|
15
15
|
var _slate = require("@seafile/slate");
|
|
16
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
17
|
+
var _isUrl = _interopRequireDefault(require("is-url"));
|
|
18
|
+
var _toast = _interopRequireDefault(require("../../../components/toast"));
|
|
17
19
|
var _constants = require("../../../constants");
|
|
18
20
|
var _useScrollContext = require("../../../hooks/use-scroll-context");
|
|
19
21
|
var _commonUtils = require("../../../utils/common-utils");
|
|
@@ -111,6 +113,20 @@ var Link = /*#__PURE__*/function (_React$Component) {
|
|
|
111
113
|
var editor = _this.props.editor;
|
|
112
114
|
(0, _helpers.unWrapLinkNode)(editor);
|
|
113
115
|
});
|
|
116
|
+
(0, _defineProperty2["default"])(_this, "onOpenLink", function (event) {
|
|
117
|
+
var element = _this.props.element;
|
|
118
|
+
if (!(0, _isUrl["default"])(element.href)) {
|
|
119
|
+
event.preventDefault();
|
|
120
|
+
_toast["default"].danger('The_link_is_invalid');
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (!(0, _helpers.isWeChat)()) {
|
|
124
|
+
window.open(element.href, '_blank', 'noopener,noreferrer');
|
|
125
|
+
} else {
|
|
126
|
+
// eslint-disable-next-line no-restricted-globals
|
|
127
|
+
location.href = element.href;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
114
130
|
(0, _defineProperty2["default"])(_this, "openDialog", function () {
|
|
115
131
|
var element = _this.props.element;
|
|
116
132
|
_this.eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
@@ -155,6 +171,7 @@ var Link = /*#__PURE__*/function (_React$Component) {
|
|
|
155
171
|
}, attributes), /*#__PURE__*/_react["default"].createElement("a", {
|
|
156
172
|
href: element.href,
|
|
157
173
|
title: (_element$children$ = element.children[0]) === null || _element$children$ === void 0 ? void 0 : _element$children$.text,
|
|
174
|
+
onClick: this.onOpenLink,
|
|
158
175
|
target: "_blank",
|
|
159
176
|
rel: "noreferrer"
|
|
160
177
|
}, children));
|
|
@@ -192,6 +192,7 @@ var Video = function Video(_ref) {
|
|
|
192
192
|
scrollRef.current && scrollRef.current.addEventListener('scroll', onScroll);
|
|
193
193
|
observerRefValue = scrollRef.current;
|
|
194
194
|
resizeObserver = new ResizeObserver(function (entries) {
|
|
195
|
+
// eslint-disable-next-line no-unused-vars
|
|
195
196
|
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
196
197
|
_step;
|
|
197
198
|
try {
|
|
@@ -13,7 +13,8 @@ var _tooltip = _interopRequireDefault(require("../../../../components/tooltip"))
|
|
|
13
13
|
var _commons = require("../../../commons");
|
|
14
14
|
require("./index.css");
|
|
15
15
|
var WhiteboardHoverMenu = function WhiteboardHoverMenu(_ref) {
|
|
16
|
-
var
|
|
16
|
+
var isValidUrl = _ref.isValidUrl,
|
|
17
|
+
menuPosition = _ref.menuPosition,
|
|
17
18
|
onOpen = _ref.onOpen,
|
|
18
19
|
openFullscreen = _ref.openFullscreen,
|
|
19
20
|
onDeleteWhiteboard = _ref.onDeleteWhiteboard;
|
|
@@ -31,14 +32,16 @@ var WhiteboardHoverMenu = function WhiteboardHoverMenu(_ref) {
|
|
|
31
32
|
style: menuPosition
|
|
32
33
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
33
34
|
className: "hover-menu-container"
|
|
34
|
-
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
35
|
+
}, isValidUrl && /*#__PURE__*/_react["default"].createElement("span", {
|
|
35
36
|
className: "op-group-item"
|
|
36
37
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
37
38
|
id: "sdoc_whiteboard_open",
|
|
38
39
|
role: "button",
|
|
39
40
|
className: "op-item",
|
|
40
41
|
onClick: onOpen
|
|
41
|
-
}, /*#__PURE__*/_react["default"].createElement("span",
|
|
42
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
43
|
+
className: "mr-1"
|
|
44
|
+
}, t('Open')))), /*#__PURE__*/_react["default"].createElement("span", {
|
|
42
45
|
className: "op-group-item"
|
|
43
46
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
44
47
|
id: "sdoc_whiteboard_delete",
|
|
@@ -51,7 +54,7 @@ var WhiteboardHoverMenu = function WhiteboardHoverMenu(_ref) {
|
|
|
51
54
|
target: "sdoc_whiteboard_delete",
|
|
52
55
|
placement: "top",
|
|
53
56
|
fade: true
|
|
54
|
-
}, t('Delete')))), /*#__PURE__*/_react["default"].createElement("span", {
|
|
57
|
+
}, t('Delete')))), isValidUrl && /*#__PURE__*/_react["default"].createElement("span", {
|
|
55
58
|
className: "op-group-item"
|
|
56
59
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
57
60
|
id: "sdoc_whiteboard_full_screen_mode",
|
|
@@ -59,7 +62,7 @@ var WhiteboardHoverMenu = function WhiteboardHoverMenu(_ref) {
|
|
|
59
62
|
className: "op-item",
|
|
60
63
|
onClick: openFullscreen
|
|
61
64
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
62
|
-
className: "sdocfont sdoc-fullscreen"
|
|
65
|
+
className: "sdocfont sdoc-fullscreen icon-font"
|
|
63
66
|
}), showTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
|
|
64
67
|
target: "sdoc_whiteboard_full_screen_mode",
|
|
65
68
|
placement: "top",
|
|
@@ -10,9 +10,11 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
|
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
13
|
+
var _reactI18next = require("react-i18next");
|
|
13
14
|
var _slate = require("@seafile/slate");
|
|
14
15
|
var _slateReact = require("@seafile/slate-react");
|
|
15
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
17
|
+
var _isUrl = _interopRequireDefault(require("is-url"));
|
|
16
18
|
var _constants = require("../../../constants");
|
|
17
19
|
var _context = _interopRequireDefault(require("../../../context"));
|
|
18
20
|
var _useScrollContext = require("../../../hooks/use-scroll-context");
|
|
@@ -33,6 +35,8 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
33
35
|
var scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
34
36
|
var isSelected = (0, _slateReact.useSelected)();
|
|
35
37
|
var readOnly = (0, _slateReact.useReadOnly)();
|
|
38
|
+
var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
|
|
39
|
+
t = _useTranslation.t;
|
|
36
40
|
var _useState = (0, _react.useState)({
|
|
37
41
|
top: '',
|
|
38
42
|
left: ''
|
|
@@ -44,7 +48,11 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
44
48
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
45
49
|
isShowZoomOut = _useState4[0],
|
|
46
50
|
setIsShowZoomOut = _useState4[1];
|
|
51
|
+
var isValidUrl = (0, _react.useMemo)(function () {
|
|
52
|
+
return (0, _isUrl["default"])(link);
|
|
53
|
+
}, [link]);
|
|
47
54
|
(0, _react.useEffect)(function () {
|
|
55
|
+
if (!isValidUrl) return;
|
|
48
56
|
var handleMessage = function handleMessage(event) {
|
|
49
57
|
var _event$data;
|
|
50
58
|
if (((_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.type) === 'checkSdocParent') {
|
|
@@ -86,7 +94,7 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
86
94
|
window.removeEventListener('message', handleMessage);
|
|
87
95
|
unsubscribeResizeArticle();
|
|
88
96
|
};
|
|
89
|
-
}, []);
|
|
97
|
+
}, [isValidUrl]);
|
|
90
98
|
var onDeleteWhiteboard = (0, _react.useCallback)(function () {
|
|
91
99
|
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
92
100
|
_slate.Transforms.removeNodes(editor, {
|
|
@@ -97,6 +105,7 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
97
105
|
}, [editor, element]);
|
|
98
106
|
var handleDoubleClick = function handleDoubleClick(event) {
|
|
99
107
|
event.preventDefault();
|
|
108
|
+
if (!isValidUrl) return;
|
|
100
109
|
var siteRoot = _context["default"].getSetting('siteRoot');
|
|
101
110
|
var url = "".concat(siteRoot, "lib/").concat(repo_id, "/file").concat(file_path);
|
|
102
111
|
window.open(url, '_blank');
|
|
@@ -116,6 +125,7 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
116
125
|
scrollRef.current.addEventListener('scroll', handleScroll);
|
|
117
126
|
observerRefValue = scrollRef.current;
|
|
118
127
|
resizeObserver = new ResizeObserver(function (entries) {
|
|
128
|
+
// eslint-disable-next-line no-unused-vars
|
|
119
129
|
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
120
130
|
_step;
|
|
121
131
|
try {
|
|
@@ -172,7 +182,7 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
172
182
|
scrolling: "no"
|
|
173
183
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
174
184
|
className: "sdoc-whiteboard-title"
|
|
175
|
-
}, title), /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
185
|
+
}, title), isValidUrl && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
176
186
|
className: "sdoc-whiteboard-element",
|
|
177
187
|
title: title,
|
|
178
188
|
src: link,
|
|
@@ -181,7 +191,11 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
181
191
|
className: "iframe-overlay",
|
|
182
192
|
onDoubleClick: handleDoubleClick,
|
|
183
193
|
onClick: handleOnClick
|
|
184
|
-
})),
|
|
194
|
+
})), !isValidUrl && /*#__PURE__*/_react["default"].createElement("div", {
|
|
195
|
+
ref: whiteboardRef,
|
|
196
|
+
className: "sdoc-whiteboard-tip"
|
|
197
|
+
}, t('Whiteboard_link_invalid_tip'))), isSelected && !readOnly && !isShowZoomOut && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
198
|
+
isValidUrl: isValidUrl,
|
|
185
199
|
menuPosition: menuPosition,
|
|
186
200
|
onOpen: handleDoubleClick,
|
|
187
201
|
openFullscreen: openFullscreen,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.76",
|
|
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": "505f9405730c95e54e8b47fc131ad5a3bf959eeb"
|
|
76
76
|
}
|