@seafile/seafile-editor 2.0.36 → 2.0.37-beta

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.
@@ -35,7 +35,7 @@ const LinkVerifiedDialog = _ref => {
35
35
  host,
36
36
  protocol,
37
37
  pathname
38
- } = new URL(link);
38
+ } = new URL(encodeURIComponent(link));
39
39
  return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
40
40
  isOpen: true,
41
41
  toggle: onToggle,
@@ -21,7 +21,8 @@ function SlateViewer(_ref) {
21
21
  value,
22
22
  isShowOutline,
23
23
  scrollRef: externalScrollRef,
24
- onLinkClick
24
+ onLinkClick,
25
+ options
25
26
  } = _ref;
26
27
  const scrollRef = (0, _react.useRef)(null);
27
28
  const {
@@ -69,7 +70,10 @@ function SlateViewer(_ref) {
69
70
  }, /*#__PURE__*/_react.default.createElement(_extension.SetNodeToDecorations, null), /*#__PURE__*/_react.default.createElement(_slateReact.Editable, {
70
71
  readOnly: true,
71
72
  decorate: decorate,
72
- renderElement: _extension.renderElement,
73
+ renderElement: props => (0, _extension.renderElement)({
74
+ options,
75
+ ...props
76
+ }),
73
77
  renderLeaf: _extension.renderLeaf
74
78
  }))))))));
75
79
  }
@@ -14,9 +14,13 @@ const renderDefinition = (_ref, editor) => {
14
14
  let {
15
15
  attributes,
16
16
  children,
17
- element
17
+ element,
18
+ option
18
19
  } = _ref;
19
20
  const [isShowConfirmDialog, setIsShowConfirmDialog] = (0, _react.useState)(false);
21
+ const {
22
+ render
23
+ } = option || {};
20
24
  const onHrefClick = (0, _react.useCallback)(event => {
21
25
  event.preventDefault();
22
26
  if (element.url.startsWith(window.location.origin)) {
@@ -24,10 +28,21 @@ const renderDefinition = (_ref, editor) => {
24
28
  return;
25
29
  }
26
30
  setIsShowConfirmDialog(true);
27
- }, [element.url]);
31
+ }, [element]);
28
32
  const onToggle = (0, _react.useCallback)(() => {
29
33
  setIsShowConfirmDialog(!isShowConfirmDialog);
30
34
  }, [isShowConfirmDialog]);
35
+ if ( /*#__PURE__*/(0, _react.isValidElement)(render)) {
36
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/(0, _react.cloneElement)(render, {
37
+ element,
38
+ onClick: onHrefClick,
39
+ attributes,
40
+ editor
41
+ }), isShowConfirmDialog && /*#__PURE__*/_react.default.createElement(_components.LinkVerifiedDialog, {
42
+ link: element.url,
43
+ onToggle: onToggle
44
+ }));
45
+ }
31
46
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", Object.assign({
32
47
  "data-url": element.url,
33
48
  "data-id": element.id,
@@ -15,8 +15,12 @@ const renderLinkReference = (_ref, editor) => {
15
15
  let {
16
16
  attributes,
17
17
  children,
18
- element
18
+ element,
19
+ option
19
20
  } = _ref;
21
+ const {
22
+ render
23
+ } = option || {};
20
24
  const onClick = (0, _react.useCallback)(() => {
21
25
  const doms = (0, _core.getNodesByType)(editor.children, _elementTypes.DEFINITION);
22
26
  const dom = doms.find(d => d.identifier === element.identifier);
@@ -29,6 +33,14 @@ const renderLinkReference = (_ref, editor) => {
29
33
  block: 'center'
30
34
  });
31
35
  }, [element, editor]);
36
+ if (render && /*#__PURE__*/(0, _react.isValidElement)(render)) {
37
+ return /*#__PURE__*/(0, _react.cloneElement)(render, {
38
+ element,
39
+ onClick,
40
+ attributes,
41
+ editor
42
+ });
43
+ }
32
44
  return /*#__PURE__*/_react.default.createElement("sup", Object.assign({
33
45
  onClick: onClick,
34
46
  className: "sf-virtual-link-reference",
@@ -10,10 +10,18 @@ var _react = _interopRequireDefault(require("react"));
10
10
  var _slateReact = require("slate-react");
11
11
  var ElementType = _interopRequireWildcard(require("../constants/element-types"));
12
12
  var _plugins = require("../plugins");
13
- const SlateElement = props => {
14
- const {
13
+ const SlateElement = _ref => {
14
+ let {
15
+ element,
16
+ options,
17
+ ...params
18
+ } = _ref;
19
+ const option = options ? options[element.type] : null;
20
+ const props = {
21
+ ...params,
22
+ option,
15
23
  element
16
- } = props;
24
+ };
17
25
  const editor = (0, _slateReact.useSlateStatic)();
18
26
  switch (element.type) {
19
27
  case ElementType.BLOCKQUOTE:
package/dist/index.js CHANGED
@@ -10,6 +10,12 @@ Object.defineProperty(exports, "BrowserTip", {
10
10
  return _components.BrowserTip;
11
11
  }
12
12
  });
13
+ Object.defineProperty(exports, "ELementTypes", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _extension.ELementTypes;
17
+ }
18
+ });
13
19
  Object.defineProperty(exports, "EXTERNAL_EVENTS", {
14
20
  enumerable: true,
15
21
  get: function () {
@@ -145,4 +151,5 @@ var _slateConvert = require("./slate-convert");
145
151
  var _replaceSlateNodes = require("./utils/replace-slate-nodes");
146
152
  var _getPreviewContent = _interopRequireDefault(require("./utils/get-preview-content"));
147
153
  var _getBrowserInfo = _interopRequireDefault(require("./utils/get-browser-Info"));
148
- var _components = require("./components");
154
+ var _components = require("./components");
155
+ var _extension = require("./extension");
@@ -11,6 +11,23 @@ var _loading = _interopRequireDefault(require("../containers/loading"));
11
11
  var _slateConvert = require("../slate-convert");
12
12
  var _useMathjax = _interopRequireDefault(require("../hooks/use-mathjax"));
13
13
  var _slateViewer = _interopRequireDefault(require("../editors/slate-viewer"));
14
+ /**
15
+ *
16
+ * @param {
17
+ * options: {
18
+ * loading: {
19
+ * render: Custom loading renderer,
20
+ * ... // others
21
+ * },
22
+ * [ELementTypes.LINK_REFERENCE]: {
23
+ * render: Custom LinkReference renderer
24
+ * },
25
+ * ... // others
26
+ * }
27
+ * }
28
+ * @returns SlateViewer
29
+ */
30
+
14
31
  function MarkdownViewer(_ref) {
15
32
  let {
16
33
  isFetching,
@@ -19,7 +36,8 @@ function MarkdownViewer(_ref) {
19
36
  isShowOutline,
20
37
  scrollRef,
21
38
  onLinkClick,
22
- beforeRenderCallback
39
+ beforeRenderCallback,
40
+ options
23
41
  } = _ref;
24
42
  const [richValue, setRichValue] = (0, _react.useState)([]);
25
43
  const [isLoading, setIsLoading] = (0, _react.useState)(true);
@@ -39,6 +57,7 @@ function MarkdownViewer(_ref) {
39
57
  // eslint-disable-next-line react-hooks/exhaustive-deps
40
58
  }, [isFetching, value]);
41
59
  const props = {
60
+ options,
42
61
  isSupportFormula: !!mathJaxSource,
43
62
  value: richValue,
44
63
  isShowOutline: isShowOutline,
@@ -46,6 +65,13 @@ function MarkdownViewer(_ref) {
46
65
  onLinkClick: onLinkClick
47
66
  };
48
67
  if (isFetching || isLoading || isLoadingMathJax) {
68
+ const loadingOption = (options === null || options === void 0 ? void 0 : options.loading) || {};
69
+ const {
70
+ render
71
+ } = loadingOption || {};
72
+ if (render && /*#__PURE__*/(0, _react.isValidElement)(render)) {
73
+ return /*#__PURE__*/(0, _react.cloneElement)(render);
74
+ }
49
75
  return /*#__PURE__*/_react.default.createElement(_loading.default, null);
50
76
  }
51
77
  return /*#__PURE__*/_react.default.createElement(_slateViewer.default, props);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "2.0.36",
3
+ "version": "2.0.37beta",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {