@seafile/sdoc-editor 1.0.222 → 1.0.224

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.
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
@@ -9,7 +10,9 @@ var _react = _interopRequireWildcard(require("react"));
9
10
  var _reactDom = require("react-dom");
10
11
  var _reactI18next = require("react-i18next");
11
12
  var _slateReact = require("@seafile/slate-react");
13
+ var _isUrl = _interopRequireDefault(require("is-url"));
12
14
  var _helpers = require("../helpers");
15
+ var _toast = _interopRequireDefault(require("../../../../../components/toast"));
13
16
  require("./index.css");
14
17
  const LinkHover = _ref => {
15
18
  let {
@@ -24,6 +27,11 @@ const LinkHover = _ref => {
24
27
  t
25
28
  } = (0, _reactI18next.useTranslation)('sdoc-editor');
26
29
  const onMouseDown = (0, _react.useCallback)(event => {
30
+ if (!(0, _isUrl.default)(element.href)) {
31
+ event.preventDefault();
32
+ _toast.default.danger(t('The_link_is_invalid'));
33
+ return;
34
+ }
27
35
  event.stopPropagation();
28
36
  if (!(0, _helpers.isWeChat)()) {
29
37
  window.open(element.href);
@@ -31,7 +39,7 @@ const LinkHover = _ref => {
31
39
  // eslint-disable-next-line no-restricted-globals
32
40
  location.href = element.href;
33
41
  }
34
- }, [element.href]);
42
+ }, [element.href, t]);
35
43
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement("div", {
36
44
  id: "link-op-menu",
37
45
  className: "link-op-menu",
@@ -8,6 +8,8 @@ exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _slate = require("@seafile/slate");
11
+ var _reactI18next = require("react-i18next");
12
+ var _isUrl = _interopRequireDefault(require("is-url"));
11
13
  var _helpers = require("./helpers");
12
14
  var _hover = _interopRequireDefault(require("./hover"));
13
15
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
@@ -15,6 +17,7 @@ var _constants = require("../../../constants");
15
17
  var _constants2 = require("../../constants");
16
18
  var _InlineBugFixWrapper = _interopRequireDefault(require("../../commons/Inline-bug-fix-wrapper"));
17
19
  var _useScrollContext = require("../../../hooks/use-scroll-context");
20
+ var _toast = _interopRequireDefault(require("../../../../components/toast"));
18
21
  class Link extends _react.default.Component {
19
22
  constructor(props) {
20
23
  super(props);
@@ -74,6 +77,22 @@ class Link extends _react.default.Component {
74
77
  } = this.props;
75
78
  (0, _helpers.unWrapLinkNode)(editor);
76
79
  });
80
+ (0, _defineProperty2.default)(this, "onOpenLink", event => {
81
+ const {
82
+ element
83
+ } = this.props;
84
+ if (!(0, _isUrl.default)(element.href)) {
85
+ event.preventDefault();
86
+ _toast.default.danger('The_link_is_invalid');
87
+ return;
88
+ }
89
+ if (!(0, _helpers.isWeChat)()) {
90
+ window.open(element.href, '_blank', 'noopener,noreferrer');
91
+ } else {
92
+ // eslint-disable-next-line no-restricted-globals
93
+ location.href = element.href;
94
+ }
95
+ });
77
96
  (0, _defineProperty2.default)(this, "openDialog", () => {
78
97
  const {
79
98
  element
@@ -114,6 +133,7 @@ class Link extends _react.default.Component {
114
133
  }, attributes), /*#__PURE__*/_react.default.createElement("a", {
115
134
  href: element.href,
116
135
  title: element.title,
136
+ onClick: this.onOpenLink,
117
137
  target: "_blank",
118
138
  rel: "noreferrer"
119
139
  }, children));
@@ -136,8 +156,9 @@ class Link extends _react.default.Component {
136
156
  }
137
157
  }
138
158
  (0, _defineProperty2.default)(Link, "contextType", _useScrollContext.ScrollContext);
159
+ const SdocLink = (0, _reactI18next.withTranslation)('sdoc-editor')(Link);
139
160
  const renderLink = (props, editor, readonly) => {
140
- return /*#__PURE__*/_react.default.createElement(Link, Object.assign({}, props, {
161
+ return /*#__PURE__*/_react.default.createElement(SdocLink, Object.assign({}, props, {
141
162
  editor: editor,
142
163
  readonly: readonly
143
164
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "1.0.222",
3
+ "version": "1.0.224",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -11,7 +11,7 @@
11
11
  "@seafile/slate-history": "0.86.2",
12
12
  "@seafile/slate-hyperscript": "0.81.7",
13
13
  "@seafile/slate-react": "0.92.7",
14
- "axios": "^1.7.4",
14
+ "axios": "^1.8.2",
15
15
  "classnames": "2.3.2",
16
16
  "copy-to-clipboard": "^3.3.3",
17
17
  "dayjs": "1.10.7",
@@ -614,5 +614,6 @@
614
614
  "Image_cannot_be_copied_Please_download_the_source_image": "Image cannot be copied. Please download the source image,",
615
615
  "And_select_insert_-_image_to_upload": "and select 「insert」 - 「image」 to upload.",
616
616
  "Image_copy_error": "Image copy error",
617
- "Image_is_uploading": "Image is uploading..."
617
+ "Image_is_uploading": "Image is uploading...",
618
+ "The_link_is_invalid": "The link is invalid."
618
619
  }
@@ -614,5 +614,6 @@
614
614
  "Image_cannot_be_copied_Please_download_the_source_image": "此照片不支持复制,请下载原图",
615
615
  "And_select_insert_-_image_to_upload": "后点击工具栏「插入」- 「照片」上传",
616
616
  "Image_copy_error": "图片复制错误",
617
- "Image_is_uploading": "图片正在上传..."
617
+ "Image_is_uploading": "图片正在上传...",
618
+ "The_link_is_invalid": "该链接无效。"
618
619
  }