@seafile/seafile-editor 2.0.34-beta → 2.0.34-beta2
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/components/index.js +8 -1
- package/dist/components/link-verified-dialog/index.css +32 -0
- package/dist/components/link-verified-dialog/index.js +66 -0
- package/dist/components/modal-header/index.js +2 -2
- package/dist/extension/plugins/definition/render-elem/index.css +4 -1
- package/dist/extension/plugins/definition/render-elem/index.js +17 -9
- package/dist/extension/plugins/link-reference/render-elem/index.js +7 -1
- package/dist/extension/plugins/text-style/render-elem.js +0 -1
- package/dist/slate-convert/md-to-slate/index.js +0 -1
- package/dist/slate-convert/md-to-slate/transform.js +0 -1
- package/package.json +2 -1
- package/public/locales/en/seafile-editor.json +4 -1
package/dist/components/index.js
CHANGED
|
@@ -10,6 +10,12 @@ Object.defineProperty(exports, "BrowserTip", {
|
|
|
10
10
|
return _browserTip.default;
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
+
Object.defineProperty(exports, "LinkVerifiedDialog", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _linkVerifiedDialog.default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
13
19
|
Object.defineProperty(exports, "LongTextModal", {
|
|
14
20
|
enumerable: true,
|
|
15
21
|
get: function () {
|
|
@@ -24,4 +30,5 @@ Object.defineProperty(exports, "ModalHeader", {
|
|
|
24
30
|
});
|
|
25
31
|
var _longtextModal = _interopRequireDefault(require("./longtext-modal"));
|
|
26
32
|
var _browserTip = _interopRequireDefault(require("./browser-tip"));
|
|
27
|
-
var _modalHeader = _interopRequireDefault(require("./modal-header"));
|
|
33
|
+
var _modalHeader = _interopRequireDefault(require("./modal-header"));
|
|
34
|
+
var _linkVerifiedDialog = _interopRequireDefault(require("./link-verified-dialog"));
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
.sf-link-verified-dialog {
|
|
2
|
+
width: 448px;
|
|
3
|
+
max-width: 448px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.sf-link-verified-dialog .modal-content {
|
|
7
|
+
border-radius: 16px;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sf-link-verified-dialog .modal-header {
|
|
11
|
+
align-items: center;
|
|
12
|
+
padding: 10px 8px 10px 16px;
|
|
13
|
+
border-bottom: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.sf-link-verified-dialog .modal-body {
|
|
17
|
+
padding-top: 4px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.sf-link-verified-dialog .sf-tip-default {
|
|
21
|
+
color: #666;
|
|
22
|
+
font-size: 14px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.sf-link-verified-dialog .sf-verify-link {
|
|
26
|
+
word-break: break-all;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.sf-link-verified-dialog .modal-footer {
|
|
30
|
+
border-top: 0;
|
|
31
|
+
padding: 0 16px 16px;
|
|
32
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactstrap = require("reactstrap");
|
|
11
|
+
var _reactI18next = require("react-i18next");
|
|
12
|
+
var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard"));
|
|
13
|
+
var _modalHeader = _interopRequireDefault(require("../modal-header"));
|
|
14
|
+
var _constants = require("../../constants");
|
|
15
|
+
require("./index.css");
|
|
16
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
17
|
+
|
|
18
|
+
const LinkVerifiedDialog = _ref => {
|
|
19
|
+
let {
|
|
20
|
+
onToggle,
|
|
21
|
+
link
|
|
22
|
+
} = _ref;
|
|
23
|
+
const {
|
|
24
|
+
t
|
|
25
|
+
} = (0, _reactI18next.useTranslation)(_constants.TRANSLATE_NAMESPACE);
|
|
26
|
+
const copyLink = (0, _react.useCallback)(() => {
|
|
27
|
+
(0, _copyToClipboard.default)(link);
|
|
28
|
+
onToggle && onToggle();
|
|
29
|
+
}, [link, onToggle]);
|
|
30
|
+
const openLink = (0, _react.useCallback)(() => {
|
|
31
|
+
window.open(link);
|
|
32
|
+
onToggle && onToggle();
|
|
33
|
+
}, [link, onToggle]);
|
|
34
|
+
const {
|
|
35
|
+
host,
|
|
36
|
+
protocol,
|
|
37
|
+
pathname
|
|
38
|
+
} = new URL(link);
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
|
|
40
|
+
isOpen: true,
|
|
41
|
+
centered: true,
|
|
42
|
+
toggle: onToggle,
|
|
43
|
+
className: "sf-link-verified-dialog",
|
|
44
|
+
zIndex: 1071
|
|
45
|
+
}, /*#__PURE__*/_react.default.createElement(_modalHeader.default, {
|
|
46
|
+
toggle: onToggle
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
48
|
+
className: "mr-2"
|
|
49
|
+
}, t('This_link_is_not_verified'))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
50
|
+
className: "sf-tip-default mb-5"
|
|
51
|
+
}, t('This_link_is_not_verified_tip')), /*#__PURE__*/_react.default.createElement("div", {
|
|
52
|
+
className: "sf-verify-link"
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
54
|
+
className: "sf-tip-default"
|
|
55
|
+
}, protocol), /*#__PURE__*/_react.default.createElement("span", null, host), /*#__PURE__*/_react.default.createElement("span", {
|
|
56
|
+
className: "sf-tip-default"
|
|
57
|
+
}, pathname))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
58
|
+
onClick: copyLink,
|
|
59
|
+
className: "m-0 mr-2"
|
|
60
|
+
}, t('Copy_link')), /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
61
|
+
color: "primary",
|
|
62
|
+
className: "m-0",
|
|
63
|
+
onClick: openLink
|
|
64
|
+
}, t('Open_link'))));
|
|
65
|
+
};
|
|
66
|
+
var _default = exports.default = LinkVerifiedDialog;
|
|
@@ -16,10 +16,10 @@ function ModalHeader(_ref) {
|
|
|
16
16
|
let close = null;
|
|
17
17
|
if (toggle) {
|
|
18
18
|
close = /*#__PURE__*/_react.default.createElement("span", {
|
|
19
|
-
|
|
19
|
+
className: "sf-editor-close-icon",
|
|
20
20
|
onClick: toggle
|
|
21
21
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
22
|
-
|
|
22
|
+
className: "iconfont icon-x",
|
|
23
23
|
"aria-hidden": "true"
|
|
24
24
|
}));
|
|
25
25
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var
|
|
11
|
-
var _slateReact = require("slate-react");
|
|
9
|
+
var _components = require("../../../../components");
|
|
12
10
|
require("./index.css");
|
|
13
11
|
/* eslint-disable react-hooks/rules-of-hooks */
|
|
14
12
|
|
|
@@ -18,19 +16,29 @@ const renderDefinition = (_ref, editor) => {
|
|
|
18
16
|
children,
|
|
19
17
|
element
|
|
20
18
|
} = _ref;
|
|
21
|
-
const [
|
|
19
|
+
const [isShowConfirmDialog, setIsShowConfirmDialog] = (0, _react.useState)(false);
|
|
22
20
|
const onHrefClick = (0, _react.useCallback)(event => {
|
|
23
21
|
event.preventDefault();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
if (element.url.startsWith(window.location.origin)) {
|
|
23
|
+
window.open(element.url);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
setIsShowConfirmDialog(true);
|
|
27
|
+
}, [element.url]);
|
|
28
|
+
const onToggle = (0, _react.useCallback)(() => {
|
|
29
|
+
setIsShowConfirmDialog(!isShowConfirmDialog);
|
|
30
|
+
}, [isShowConfirmDialog]);
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", Object.assign({
|
|
28
32
|
"data-url": element.url,
|
|
29
33
|
"data-id": element.id,
|
|
30
34
|
className: "sf-virtual-definition"
|
|
31
35
|
}, attributes), /*#__PURE__*/_react.default.createElement("span", null, element.identifier + '. '), /*#__PURE__*/_react.default.createElement("a", {
|
|
32
36
|
href: element.url,
|
|
37
|
+
"data-url": element.url,
|
|
33
38
|
onClick: onHrefClick
|
|
34
|
-
}, children))
|
|
39
|
+
}, children)), isShowConfirmDialog && /*#__PURE__*/_react.default.createElement(_components.LinkVerifiedDialog, {
|
|
40
|
+
link: element.url,
|
|
41
|
+
onToggle: onToggle
|
|
42
|
+
}));
|
|
35
43
|
};
|
|
36
44
|
var _default = exports.default = renderDefinition;
|
|
@@ -21,7 +21,13 @@ const renderLinkReference = (_ref, editor) => {
|
|
|
21
21
|
const doms = (0, _core.getNodesByType)(editor.children, _elementTypes.DEFINITION);
|
|
22
22
|
const dom = doms.find(d => d.identifier === element.identifier);
|
|
23
23
|
if (!dom) return;
|
|
24
|
-
|
|
24
|
+
const selector = `[data-id="${dom.id}"]`;
|
|
25
|
+
const definitionDom = document.querySelector(selector);
|
|
26
|
+
if (!definitionDom) return;
|
|
27
|
+
definitionDom.scrollIntoView({
|
|
28
|
+
behavior: 'smooth',
|
|
29
|
+
block: 'center'
|
|
30
|
+
});
|
|
25
31
|
}, [element, editor]);
|
|
26
32
|
return /*#__PURE__*/_react.default.createElement("sup", Object.assign({
|
|
27
33
|
onClick: onClick,
|
|
@@ -17,7 +17,6 @@ const renderText = (props, editor) => {
|
|
|
17
17
|
text,
|
|
18
18
|
...rest
|
|
19
19
|
} = leaf;
|
|
20
|
-
console.log(leaf);
|
|
21
20
|
let markedChildren = /*#__PURE__*/_react.default.cloneElement(children);
|
|
22
21
|
if (leaf[_constants.TEXT_STYLE_MAP.BOLD]) {
|
|
23
22
|
markedChildren = /*#__PURE__*/_react.default.createElement("strong", null, markedChildren);
|
|
@@ -101,7 +101,6 @@ const applyMarkForInlineItem = function (result, item) {
|
|
|
101
101
|
}
|
|
102
102
|
if (type === 'linkReference') {
|
|
103
103
|
var _item$children$;
|
|
104
|
-
console.log('linkReference: ', item);
|
|
105
104
|
textNode['type'] = _elementTypes.LINK_REFERENCE;
|
|
106
105
|
textNode['identifier'] = item.identifier;
|
|
107
106
|
textNode['referenceType'] = item.referenceType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/seafile-editor",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.34beta2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"@seafile/react-image-lightbox": "4.0.2",
|
|
89
89
|
"classnames": "2.3.2",
|
|
90
|
+
"copy-to-clipboard": "3.3.1",
|
|
90
91
|
"deep-copy": "1.4.2",
|
|
91
92
|
"deepmerge": "4.3.1",
|
|
92
93
|
"is-url": "^1.2.4",
|
|
@@ -235,5 +235,8 @@
|
|
|
235
235
|
"Horizontal_align": "Horizontal align",
|
|
236
236
|
"Underline": "Underline",
|
|
237
237
|
"Row_number": "Row number",
|
|
238
|
-
"Column_number": "Column number"
|
|
238
|
+
"Column_number": "Column number",
|
|
239
|
+
"This_link_is_not_verified": "This link is not verified",
|
|
240
|
+
"This_link_is_not_verified_tip": "Before continuing, please ensure you trust this link. If you do not trust the URL, do not open the link to access the site.",
|
|
241
|
+
"Copy_link": "Copy link"
|
|
239
242
|
}
|