@seafile/sdoc-editor 2.0.156 → 2.0.158

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.
@@ -168,6 +168,7 @@ var EditorComment = function EditorComment(_ref) {
168
168
  };
169
169
  var handleClickCommentedText = function handleClickCommentedText(event) {
170
170
  var parentDom = event.target.parentElement;
171
+ if (!parentDom) return;
171
172
  if (typeof parentDom.className !== 'string') return;
172
173
  if (parentDom !== null && parentDom !== void 0 && parentDom.className.split(/\s+/).some(function (cls) {
173
174
  return cls.startsWith('sdoc_comment');
@@ -101,48 +101,30 @@
101
101
  padding: 8px;
102
102
  }
103
103
 
104
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-editor__article {
105
- padding: calc(100vw / 794 * 40) calc(100vw / 794 * 60) !important;
106
- font-size: calc(100vw / 794 * 14.7) !important;
107
- }
108
-
109
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-checkbox-input {
110
- width: calc(100vw / 794 * 13) !important;
111
- }
112
-
113
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-code-block-pre {
114
- font-size: calc(100vw / 794 * 13.3) !important;
115
- }
116
-
117
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-title {
118
- font-size: calc(100vw / 794 * 33.7) !important;
119
- }
120
-
121
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-subtitle {
122
- font-size: calc(100vw / 794 * 20) !important;
123
- }
124
-
125
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-1 {
126
- font-size: calc(100vw / 794 * 26.7) !important;
127
- }
128
-
129
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-2 {
130
- font-size: calc(100vw / 794 * 21.3) !important;
131
- }
132
-
133
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-3 {
134
- font-size: calc(100vw / 794 * 18.7) !important;
104
+ .file-preview-panel-body .sdoc-article-container .sdoc-table-wrapper {
105
+ max-width: none !important;
135
106
  }
136
107
 
137
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-4 {
138
- font-size: calc(100vw / 794 * 16) !important;
108
+ .zoom-out-container {
109
+ position: fixed;
110
+ inset: 0;
111
+ background: rgba(0, 0, 0, 0.7);
112
+ display: flex;
113
+ justify-content: center;
114
+ align-items: center;
115
+ z-index: 9999;
139
116
  }
140
117
 
141
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-5,
142
- .file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-6 {
143
- font-size: calc(100vw / 794 * 14.7) !important;
118
+ .file-preview-zoom-out-container {
119
+ pointer-events: auto;
120
+ background: #fff;
121
+ border-radius: 12px;
122
+ max-width: 80%;
123
+ max-height: 80%;
124
+ overflow: auto;
144
125
  }
145
126
 
146
- .file-preview-panel-body .sdoc-article-container .sdoc-table-wrapper {
147
- max-width: none !important;
127
+ .file-preview-zoom-out-container .article {
128
+ padding: 40px;
129
+ pointer-events: none;
148
130
  }
@@ -10,6 +10,7 @@ var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/r
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
+ var _reactDom = _interopRequireDefault(require("react-dom"));
13
14
  var _slate = require("@seafile/slate");
14
15
  var _slateReact = require("@seafile/slate-react");
15
16
  var _fileLoading = _interopRequireDefault(require("../../../components/file-loading"));
@@ -35,29 +36,27 @@ var FilePreviewWrapper = function FilePreviewWrapper(_ref) {
35
36
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
36
37
  isReloading = _useState6[0],
37
38
  setIsReloading = _useState6[1];
38
- var readonlyEditor = (0, _react.useMemo)(function () {
39
- return (0, _slateReact.withReact)((0, _slate.createEditor)());
40
- }, [docUuid]);
39
+ var _useState7 = (0, _react.useState)(false),
40
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
41
+ isShowZoomOut = _useState8[0],
42
+ setIsShowZoomOut = _useState8[1];
41
43
  var _usePlugins = (0, _usePlugins2.usePlugins)(),
42
44
  closePlugin = _usePlugins.closePlugin;
43
45
  var filePreviewRef = (0, _react.useRef)();
46
+ var readonlyEditor = (0, _react.useMemo)(function () {
47
+ var editor = (0, _slateReact.withReact)((0, _slate.createEditor)());
48
+ editor.preview_docUuid = docUuid;
49
+ return editor;
50
+ }, [docUuid]);
44
51
  var fileTypeIcon = (0, _helpers.parcelFileTypeIcon)(title);
45
- var openFullscreen = function openFullscreen() {
46
- if (filePreviewRef.current.requestFullscreen) {
47
- // Chrome
48
- filePreviewRef.current.requestFullscreen();
49
- } else if (filePreviewRef.current.webkitRequestFullscreen) {
50
- // Safari
51
- filePreviewRef.current.webkitRequestFullscreen();
52
- } else if (filePreviewRef.current.msRequestFullscreen) {
53
- // IE11
54
- filePreviewRef.current.msRequestFullscreen();
55
- }
52
+ var openFullscreen = function openFullscreen(e) {
53
+ e.stopPropagation();
54
+ setIsShowZoomOut(true);
56
55
  };
57
56
  (0, _react.useEffect)(function () {
58
57
  var fetchFileContent = /*#__PURE__*/function () {
59
58
  var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee() {
60
- var token, tokenRes, result, _t;
59
+ var token, tokenRes, result, fileContentElements, _t;
61
60
  return (0, _regenerator2["default"])().w(function (_context) {
62
61
  while (1) switch (_context.p = _context.n) {
63
62
  case 0:
@@ -78,8 +77,9 @@ var FilePreviewWrapper = function FilePreviewWrapper(_ref) {
78
77
  return _context2["default"].getFileContentByDocUuidAndAccessToken(docUuid, token);
79
78
  case 3:
80
79
  result = _context.v;
80
+ fileContentElements = result.data.elements;
81
81
  setIsReloading(false);
82
- setFileContent(result.data.elements);
82
+ setFileContent(fileContentElements);
83
83
  setComponent(function () {
84
84
  return _readonlyArticle["default"];
85
85
  });
@@ -105,7 +105,20 @@ var FilePreviewWrapper = function FilePreviewWrapper(_ref) {
105
105
  fetchFileContent();
106
106
  }
107
107
  }, [docUuid]);
108
- return /*#__PURE__*/_react["default"].createElement("div", {
108
+ (0, _react.useEffect)(function () {
109
+ var handleKeyDown = function handleKeyDown(e) {
110
+ if (e.key === 'Escape') {
111
+ setIsShowZoomOut(false);
112
+ }
113
+ };
114
+ if (isShowZoomOut) {
115
+ document.addEventListener('keydown', handleKeyDown);
116
+ }
117
+ return function () {
118
+ document.removeEventListener('keydown', handleKeyDown);
119
+ };
120
+ }, [isShowZoomOut, setIsShowZoomOut]);
121
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
109
122
  className: "sdoc-file-preview-drawer"
110
123
  }, /*#__PURE__*/_react["default"].createElement("div", {
111
124
  className: "file-preview-panel-wrapper"
@@ -154,6 +167,27 @@ var FilePreviewWrapper = function FilePreviewWrapper(_ref) {
154
167
  key: docUuid,
155
168
  editor: readonlyEditor,
156
169
  slateValue: fileContent
157
- }))))));
170
+ })))))), isShowZoomOut && Component && (/*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement("div", {
171
+ className: "zoom-out-container",
172
+ onClick: function onClick() {
173
+ return setIsShowZoomOut(false);
174
+ }
175
+ }, /*#__PURE__*/_react["default"].createElement(_useScrollContext.ScrollContext.Provider, {
176
+ value: {
177
+ scrollRef: {
178
+ current: null
179
+ }
180
+ }
181
+ }, /*#__PURE__*/_react["default"].createElement("div", {
182
+ className: "file-preview-zoom-out-container",
183
+ ref: filePreviewRef,
184
+ onClick: function onClick(e) {
185
+ return e.stopPropagation();
186
+ }
187
+ }, /*#__PURE__*/_react["default"].createElement(Component, {
188
+ key: docUuid,
189
+ editor: readonlyEditor,
190
+ slateValue: fileContent
191
+ })))), document.body)));
158
192
  };
159
193
  var _default = exports["default"] = FilePreviewWrapper;
@@ -55,7 +55,7 @@ var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
55
55
  modalTitle = 'Select_video_file';
56
56
  break;
57
57
  case _constants.ELEMENT_TYPE.WHITEBOARD:
58
- modalTitle = 'Select_Excalidraw_file';
58
+ modalTitle = 'Link_Excalidraw_file';
59
59
  break;
60
60
  default:
61
61
  break;
@@ -10,6 +10,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactI18next = require("react-i18next");
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _tooltip = _interopRequireDefault(require("../../../../../components/tooltip"));
13
14
  var _commons = require("../../../../commons");
14
15
  var _helper = require("../../helper");
15
16
  var _calloutColorSelector = _interopRequireDefault(require("../callout-color-selector"));
@@ -29,6 +30,13 @@ function CalloutHoverMenu(_ref) {
29
30
  setIsShowIcon = _useState4[1];
30
31
  var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
31
32
  t = _useTranslation.t;
33
+ var _useState5 = (0, _react.useState)(false),
34
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
35
+ isShowTooltip = _useState6[0],
36
+ setIsShowTooltip = _useState6[1];
37
+ (0, _react.useEffect)(function () {
38
+ setIsShowTooltip(true);
39
+ }, []);
32
40
  var onColorSelectorToggle = (0, _react.useCallback)(function (event) {
33
41
  event.stopPropagation();
34
42
  if (!isShowColorSelector) {
@@ -62,22 +70,32 @@ function CalloutHoverMenu(_ref) {
62
70
  className: "sdoc-callout-hover-menu",
63
71
  style: popoverPosition
64
72
  }, /*#__PURE__*/_react["default"].createElement("div", {
73
+ id: "select_callout_color",
65
74
  className: firstItemClass,
66
75
  onClick: onColorSelectorToggle
67
76
  }, /*#__PURE__*/_react["default"].createElement("span", {
68
77
  className: "sdocfont sdoc-callout-color mr-1"
69
78
  }), /*#__PURE__*/_react["default"].createElement("span", {
70
79
  className: "sdocfont sdoc-drop-down"
71
- })), /*#__PURE__*/_react["default"].createElement("div", {
80
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
81
+ target: "select_callout_color",
82
+ placement: "top",
83
+ fade: true
84
+ }, t('Background_color')), /*#__PURE__*/_react["default"].createElement("div", {
72
85
  className: "callout-menu-divider"
73
86
  }), /*#__PURE__*/_react["default"].createElement("div", {
87
+ id: "select_callout_icon",
74
88
  className: secondItemClass,
75
89
  onClick: onIconToggle
76
90
  }, /*#__PURE__*/_react["default"].createElement("span", {
77
91
  className: "sdocfont sdoc-callout-icon mr-1"
78
92
  }), /*#__PURE__*/_react["default"].createElement("span", {
79
93
  className: "sdocfont sdoc-drop-down"
80
- })), isShowColorSelector && /*#__PURE__*/_react["default"].createElement(_calloutColorSelector["default"], {
94
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
95
+ target: "select_callout_icon",
96
+ placement: "top",
97
+ fade: true
98
+ }, t('Icon')), isShowColorSelector && /*#__PURE__*/_react["default"].createElement(_calloutColorSelector["default"], {
81
99
  editor: editor,
82
100
  element: element,
83
101
  onCloseSelector: onCloseSelector
@@ -13,6 +13,7 @@ var _slate = require("@seafile/slate");
13
13
  var _slateReact = require("@seafile/slate-react");
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _toast = _interopRequireDefault(require("../../../../components/toast"));
16
+ var _tooltip = _interopRequireDefault(require("../../../../components/tooltip"));
16
17
  var _commons = require("../../../commons");
17
18
  var _constants = require("../../../constants");
18
19
  var _core = require("../../../core");
@@ -31,6 +32,13 @@ var FileLinkHoverMenu = function FileLinkHoverMenu(_ref) {
31
32
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
32
33
  isShowDisplayStylePopover = _useState2[0],
33
34
  setIsShowDisplayStylePopover = _useState2[1];
35
+ var _useState3 = (0, _react.useState)(false),
36
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
37
+ isShowTooltip = _useState4[0],
38
+ setIsShowTooltip = _useState4[1];
39
+ (0, _react.useEffect)(function () {
40
+ setIsShowTooltip(true);
41
+ }, []);
34
42
  var onCopy = (0, _react.useCallback)(function (e) {
35
43
  e.stopPropagation();
36
44
  (0, _helpers.onCopyFileLinkNode)(editor, element);
@@ -82,29 +90,43 @@ var FileLinkHoverMenu = function FileLinkHoverMenu(_ref) {
82
90
  }, t('Open_link')))), !readOnly && /*#__PURE__*/_react["default"].createElement("span", {
83
91
  className: "op-group-item"
84
92
  }, /*#__PURE__*/_react["default"].createElement("span", {
93
+ id: "copy_link",
85
94
  role: "button",
86
95
  className: "op-item",
87
96
  onClick: onCopy
88
97
  }, /*#__PURE__*/_react["default"].createElement("i", {
89
98
  className: "sdocfont sdoc-copy icon-font"
90
- })), /*#__PURE__*/_react["default"].createElement("span", {
99
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
100
+ target: "copy_link",
101
+ placement: "top",
102
+ fade: true
103
+ }, t('Copy')), /*#__PURE__*/_react["default"].createElement("span", {
104
+ id: "select_style",
91
105
  role: "button",
92
106
  className: (0, _classnames["default"])('op-item', {
93
107
  'link-style-icon-active': isShowDisplayStylePopover
94
108
  }),
95
- onClick: onShowProver,
96
- id: id
109
+ onClick: onShowProver
97
110
  }, /*#__PURE__*/_react["default"].createElement("i", {
98
111
  className: (0, _classnames["default"])('icon-font mr-1', _constants2.FILE_LINK_TYPE_CONFIG[selectedType].icon)
99
112
  }), /*#__PURE__*/_react["default"].createElement("i", {
100
113
  className: "sdocfont sdoc-drop-down icon-font"
101
- })), /*#__PURE__*/_react["default"].createElement("span", {
114
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
115
+ target: "select_style",
116
+ placement: "top",
117
+ fade: true
118
+ }, t('Select_style')), /*#__PURE__*/_react["default"].createElement("span", {
119
+ id: "delete_link",
102
120
  role: "button",
103
121
  className: "op-item",
104
122
  onClick: onUnwrapFileLinkNode
105
123
  }, /*#__PURE__*/_react["default"].createElement("i", {
106
124
  className: "sdocfont sdoc-unlink icon-font"
107
- })))), isShowDisplayStylePopover && /*#__PURE__*/_react["default"].createElement("div", {
125
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
126
+ target: "delete_link",
127
+ placement: "top",
128
+ fade: true
129
+ }, t('Remove_link')))), isShowDisplayStylePopover && /*#__PURE__*/_react["default"].createElement("div", {
108
130
  className: "sdoc-file-display-style-popover sdoc-dropdown-menu"
109
131
  }, newFileLinkTypes.map(function (fileLinkType) {
110
132
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -180,6 +180,14 @@ var getImageURL = exports.getImageURL = function getImageURL(data, editor) {
180
180
  if (isImageUrlIsFromCopy(url)) return url;
181
181
  var serviceUrl = _context2["default"].getSetting('serviceUrl');
182
182
  var assetsUrl = _context2["default"].getSetting('assetsUrl');
183
+
184
+ // If in sdoc link preview
185
+ var docUuid = editor.preview_docUuid;
186
+ if (docUuid) {
187
+ var baseUrl = assetsUrl.split('/');
188
+ baseUrl[baseUrl.length - 1] = docUuid;
189
+ assetsUrl = baseUrl.join('/');
190
+ }
183
191
  return (0, _urlJoin["default"])(serviceUrl, assetsUrl, url);
184
192
  };
185
193
  var hasSdocImages = exports.hasSdocImages = function hasSdocImages(originSdocUuid, fragmentData) {
@@ -1,14 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
8
10
  var _react = _interopRequireWildcard(require("react"));
9
11
  var _reactDom = require("react-dom");
10
12
  var _reactI18next = require("react-i18next");
11
13
  var _slateReact = require("@seafile/slate-react");
14
+ var _tooltip = _interopRequireDefault(require("../../../../components/tooltip"));
12
15
  var _helpers = require("../helpers");
13
16
  require("./index.css");
14
17
  var LinkHover = function LinkHover(_ref) {
@@ -20,6 +23,13 @@ var LinkHover = function LinkHover(_ref) {
20
23
  var readOnly = (0, _slateReact.useReadOnly)();
21
24
  var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
22
25
  t = _useTranslation.t;
26
+ var _useState = (0, _react.useState)(false),
27
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
28
+ isShowTooltip = _useState2[0],
29
+ setIsShowTooltip = _useState2[1];
30
+ (0, _react.useEffect)(function () {
31
+ setIsShowTooltip(true);
32
+ }, []);
23
33
  var onMouseDown = (0, _react.useCallback)(function (event) {
24
34
  event.stopPropagation();
25
35
  if (!(0, _helpers.isWeChat)()) {
@@ -41,17 +51,27 @@ var LinkHover = function LinkHover(_ref) {
41
51
  }, t('Open_link')), !readOnly && /*#__PURE__*/_react["default"].createElement("div", {
42
52
  className: "link-op-icons d-flex"
43
53
  }, /*#__PURE__*/_react["default"].createElement("span", {
54
+ id: "edit-link",
44
55
  role: "button",
45
56
  className: "link-op-icon",
46
57
  onClick: onEditLink
47
58
  }, /*#__PURE__*/_react["default"].createElement("i", {
48
59
  className: "sdocfont sdoc-rename"
49
- })), /*#__PURE__*/_react["default"].createElement("span", {
60
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
61
+ target: "edit-link",
62
+ placement: "top",
63
+ fade: true
64
+ }, t('Edit_link')), /*#__PURE__*/_react["default"].createElement("span", {
65
+ id: "delete-link",
50
66
  role: "button",
51
67
  className: "link-op-icon",
52
68
  onClick: onDeleteLink
53
69
  }, /*#__PURE__*/_react["default"].createElement("i", {
54
70
  className: "sdocfont sdoc-unlink"
55
- })))), document.body));
71
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
72
+ target: "delete-link",
73
+ placement: "top",
74
+ fade: true
75
+ }, t('Remove_link')))), document.body));
56
76
  };
57
77
  var _default = exports["default"] = LinkHover;
@@ -41,7 +41,7 @@
41
41
  background: #f1f1f1;
42
42
  }
43
43
 
44
- .sdoc-link-hover-menu-container .op-group-item:last-child .op-item {
44
+ .sdoc-link-hover-menu-container .op-group-item:not(:first-child) .op-item {
45
45
  margin-left: 8px;
46
46
  }
47
47
 
@@ -13,9 +13,9 @@ var _slate = require("@seafile/slate");
13
13
  var _slateReact = require("@seafile/slate-react");
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _toast = _interopRequireDefault(require("../../../../components/toast"));
16
+ var _tooltip = _interopRequireDefault(require("../../../../components/tooltip"));
16
17
  var _constants = require("../../../../constants");
17
18
  var _usePlugins2 = require("../../../../hooks/use-plugins");
18
- var _outline = require("../../../../outline");
19
19
  var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
20
20
  var _commons = require("../../../commons");
21
21
  var _constants2 = require("../constants");
@@ -36,6 +36,13 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
36
36
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
37
37
  isShowDisplayStylePopover = _useState2[0],
38
38
  setIsShowDisplayStylePopover = _useState2[1];
39
+ var _useState3 = (0, _react.useState)(false),
40
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
41
+ isShowTooltip = _useState4[0],
42
+ setIsShowTooltip = _useState4[1];
43
+ (0, _react.useEffect)(function () {
44
+ setIsShowTooltip(true);
45
+ }, []);
39
46
  var onCopy = (0, _react.useCallback)(function (e) {
40
47
  e.stopPropagation();
41
48
  (0, _helpers.onCopySdocLinkNode)(editor, element);
@@ -47,6 +54,7 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
47
54
  // eslint-disable-next-line react-hooks/exhaustive-deps
48
55
  }, []);
49
56
  var onShowProver = (0, _react.useCallback)(function (e) {
57
+ e.stopPropagation();
50
58
  setIsShowDisplayStylePopover(true);
51
59
  }, []);
52
60
  var onSelect = (0, _react.useCallback)(function (event, value) {
@@ -102,29 +110,44 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
102
110
  }, t('Open_link')))), !readOnly && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
103
111
  className: "op-group-item"
104
112
  }, /*#__PURE__*/_react["default"].createElement("span", {
113
+ id: "sdoc_link_copy",
105
114
  role: "button",
106
115
  className: "op-item",
107
116
  onClick: onCopy
108
117
  }, /*#__PURE__*/_react["default"].createElement("i", {
109
118
  className: "sdocfont sdoc-copy icon-font"
110
- })), /*#__PURE__*/_react["default"].createElement("span", {
119
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
120
+ target: "sdoc_link_copy",
121
+ placement: "top",
122
+ fade: true
123
+ }, t('Copy')), /*#__PURE__*/_react["default"].createElement("span", {
124
+ id: "display_sdoc_link",
111
125
  role: "button",
112
126
  className: "op-item ".concat(isShowDisplayStylePopover ? 'link-style-icon-active' : ''),
113
- onClick: onShowProver,
114
- id: id
127
+ onClick: onShowProver
115
128
  }, /*#__PURE__*/_react["default"].createElement("i", {
116
129
  className: (0, _classnames["default"])('icon-font mr-1', _constants2.SDOC_LINK_TYPE_CONFIG[selectedType].icon)
117
130
  }), /*#__PURE__*/_react["default"].createElement("i", {
118
131
  className: "sdocfont sdoc-drop-down icon-font"
119
- }))), /*#__PURE__*/_react["default"].createElement("span", {
132
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
133
+ target: "display_sdoc_link",
134
+ placement: "top",
135
+ fade: true
136
+ }, t('Select_style'))), /*#__PURE__*/_react["default"].createElement("span", {
120
137
  className: "op-group-item"
121
138
  }, /*#__PURE__*/_react["default"].createElement("span", {
139
+ id: "delete_sdoc_link",
122
140
  role: "button",
123
141
  className: 'op-item',
124
142
  onClick: onUnwrapFileLinkNode
125
143
  }, /*#__PURE__*/_react["default"].createElement("i", {
126
144
  className: "sdocfont sdoc-unlink icon-font"
127
- })), /*#__PURE__*/_react["default"].createElement("span", {
145
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
146
+ target: "delete_sdoc_link",
147
+ placement: "top",
148
+ fade: true
149
+ }, t('Remove_link')), /*#__PURE__*/_react["default"].createElement("span", {
150
+ id: "sdoc_link_preview",
128
151
  role: "button",
129
152
  className: "op-item",
130
153
  onClick: function onClick() {
@@ -132,7 +155,11 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
132
155
  }
133
156
  }, /*#__PURE__*/_react["default"].createElement("i", {
134
157
  className: "sdocfont eye icon-font"
135
- }))))), isShowDisplayStylePopover && /*#__PURE__*/_react["default"].createElement("div", {
158
+ })), isShowTooltip && /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
159
+ target: "sdoc_link_preview",
160
+ placement: "top",
161
+ fade: true
162
+ }, t('Preview'))))), isShowDisplayStylePopover && /*#__PURE__*/_react["default"].createElement("div", {
136
163
  className: "sdoc-file-display-style-popover sdoc-dropdown-menu"
137
164
  }, newSdocFileTypes.map(function (sdocLinkType) {
138
165
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -13,12 +13,15 @@ var _react = _interopRequireWildcard(require("react"));
13
13
  var _slate = require("@seafile/slate");
14
14
  var _slateReact = require("@seafile/slate-react");
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
+ var _constants = require("../../../../constants");
17
+ var _usePlugins2 = require("../../../../hooks/use-plugins");
16
18
  var _useScrollContext = require("../../../../hooks/use-scroll-context");
17
- var _constants = require("../../../constants");
19
+ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
20
+ var _constants2 = require("../../../constants");
18
21
  var _elementType = require("../../../constants/element-type");
19
22
  var _core = require("../../../core");
20
23
  var _helpers = require("../../wiki-link/helpers");
21
- var _constants2 = require("../constants");
24
+ var _constants3 = require("../constants");
22
25
  var _helpers2 = require("../helpers");
23
26
  var _hoverMenu = _interopRequireDefault(require("../hover-menu"));
24
27
  require("./render-elem.css");
@@ -41,6 +44,8 @@ var SdocFileLink = function SdocFileLink(_ref) {
41
44
  setMenuPosition = _useState4[1];
42
45
  var readOnly = (0, _slateReact.useReadOnly)();
43
46
  var isSelected = (0, _slateReact.useSelected)();
47
+ var _usePlugins = (0, _usePlugins2.usePlugins)(),
48
+ updateDisplayPlugin = _usePlugins.updateDisplayPlugin;
44
49
  var registerEventHandle = (0, _react.useCallback)(function () {
45
50
  document.addEventListener('click', onHideInsertHoverMenu);
46
51
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -120,8 +125,21 @@ var SdocFileLink = function SdocFileLink(_ref) {
120
125
  return;
121
126
  }
122
127
  }
123
- if (isShowInsertHoverMenu) {
128
+ if (isShowInsertHoverMenu && element.type === _elementType.SDOC_LINK) {
124
129
  e.stopPropagation();
130
+ updateDisplayPlugin('sdoc-file-preview', true);
131
+ var doc_uuid = element.doc_uuid,
132
+ title = element.title,
133
+ type = element.type;
134
+ var eventBus = _eventBus["default"].getInstance();
135
+ eventBus.dispatch(_constants.INTERNAL_EVENT.TRANSFER_PREVIEW_FILE_ID, {
136
+ doc_uuid: doc_uuid,
137
+ title: title,
138
+ type: type
139
+ });
140
+ setTimeout(function () {
141
+ onHideInsertHoverMenu();
142
+ }, 0);
125
143
  }
126
144
  var path = _slateReact.ReactEditor.findPath(editor, element);
127
145
  var focusPoint = _slate.Editor.end(editor, path);
@@ -145,9 +163,9 @@ var SdocFileLink = function SdocFileLink(_ref) {
145
163
  }, []);
146
164
  var style = {};
147
165
  if (element.add) {
148
- style = (0, _objectSpread2["default"])({}, _constants.ADDED_STYLE);
166
+ style = (0, _objectSpread2["default"])({}, _constants2.ADDED_STYLE);
149
167
  } else if (element["delete"]) {
150
- style = (0, _objectSpread2["default"])({}, _constants.DELETED_STYLE);
168
+ style = (0, _objectSpread2["default"])({}, _constants2.DELETED_STYLE);
151
169
  }
152
170
  if (style.computed_background_color) {
153
171
  style['backgroundColor'] = style.computed_background_color;
@@ -158,12 +176,12 @@ var SdocFileLink = function SdocFileLink(_ref) {
158
176
  return /*#__PURE__*/_react["default"].createElement("span", Object.assign({}, attributes, {
159
177
  "data-id": element.id,
160
178
  contentEditable: false,
161
- className: "sdoc-file-render ".concat(isSelected ? 'sdoc-file-link-selected' : '', " ").concat(element.display_type === _constants2.SDOC_LINK_TYPE.CARD_LINK ? 'sdoc-file-card-link' : ''),
179
+ className: "sdoc-file-render ".concat(isSelected ? 'sdoc-file-link-selected' : '', " ").concat(element.display_type === _constants3.SDOC_LINK_TYPE.CARD_LINK ? 'sdoc-file-card-link' : ''),
162
180
  onClick: onClickFile,
163
- style: element.display_type === _constants2.SDOC_LINK_TYPE.CARD_LINK ? style : {}
181
+ style: element.display_type === _constants3.SDOC_LINK_TYPE.CARD_LINK ? style : {}
164
182
  }), /*#__PURE__*/_react["default"].createElement("span", {
165
183
  ref: sdocFileRef
166
- }, [_constants2.SDOC_LINK_TYPE.ICON_LINK, _constants2.SDOC_LINK_TYPE.CARD_LINK].includes(element.display_type) && /*#__PURE__*/_react["default"].createElement("span", {
184
+ }, [_constants3.SDOC_LINK_TYPE.ICON_LINK, _constants3.SDOC_LINK_TYPE.CARD_LINK].includes(element.display_type) && /*#__PURE__*/_react["default"].createElement("span", {
167
185
  className: "sdoc-file-link-icon",
168
186
  style: style
169
187
  }, element.type !== _elementType.WIKI_LINK && /*#__PURE__*/_react["default"].createElement("img", {
@@ -176,7 +194,7 @@ var SdocFileLink = function SdocFileLink(_ref) {
176
194
  className: "sf3-font sf3-font-file"
177
195
  })))), /*#__PURE__*/_react["default"].createElement("span", {
178
196
  className: (0, _classnames["default"])('sdoc-file-text-link', {
179
- 'sdoc-no-file-link-icon': ![_constants2.SDOC_LINK_TYPE.ICON_LINK, _constants2.SDOC_LINK_TYPE.CARD_LINK].includes(element.display_type)
197
+ 'sdoc-no-file-link-icon': ![_constants3.SDOC_LINK_TYPE.ICON_LINK, _constants3.SDOC_LINK_TYPE.CARD_LINK].includes(element.display_type)
180
198
  }),
181
199
  style: style
182
200
  }, /*#__PURE__*/_react["default"].createElement("a", {
@@ -171,11 +171,19 @@ var insertVideo = exports.insertVideo = function insertVideo(editor, videoFiles,
171
171
  }
172
172
  (0, _core.focusEditor)(editor, videoEndSelection);
173
173
  };
174
- var getVideoURL = exports.getVideoURL = function getVideoURL(data) {
174
+ var getVideoURL = exports.getVideoURL = function getVideoURL(data, editor) {
175
175
  var url = data.src;
176
176
  if (url && url.startsWith('http')) return url;
177
177
  var serviceUrl = _context["default"].getSetting('serviceUrl');
178
178
  var assetsUrl = _context["default"].getSetting('assetsUrl');
179
+
180
+ // If in sdoc link preview
181
+ var docUuid = editor.preview_docUuid;
182
+ if (docUuid) {
183
+ var baseUrl = assetsUrl.split('/');
184
+ baseUrl[baseUrl.length - 1] = docUuid;
185
+ assetsUrl = baseUrl.join('/');
186
+ }
179
187
  return (0, _urlJoin["default"])(serviceUrl, assetsUrl, url);
180
188
  };
181
189
  var formatFileSize = exports.formatFileSize = function formatFileSize(size) {
@@ -68,6 +68,6 @@ var VideoMenu = function VideoMenu(_ref) {
68
68
  }, t('Add_video_link')), /*#__PURE__*/_react["default"].createElement("div", {
69
69
  className: "sdoc-dropdown-menu-item",
70
70
  onClick: openSelectVideoFileDialog
71
- }, t('Link_Seafile_video_file')))));
71
+ }, t('Link_video_file')))));
72
72
  };
73
73
  var _default = exports["default"] = VideoMenu;
@@ -104,7 +104,7 @@ var Video = function Video(_ref) {
104
104
  }, !isEmbeddableLink && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("video", {
105
105
  className: "sdoc-video-element",
106
106
  ref: videoRef,
107
- src: (0, _helpers.getVideoURL)(data),
107
+ src: (0, _helpers.getVideoURL)(data, editor),
108
108
  controls: true,
109
109
  controlsList: readonly && 'nofullscreen',
110
110
  onClick: onClickVideo,
@@ -126,7 +126,7 @@ var Video = function Video(_ref) {
126
126
  title: data.src,
127
127
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
128
128
  allowFullScreen: true,
129
- src: (0, _helpers.getVideoURL)(data),
129
+ src: (0, _helpers.getVideoURL)(data, editor),
130
130
  onLoad: handleVideoLoad,
131
131
  style: {
132
132
  width: '100%',
@@ -51,7 +51,7 @@ var WhiteboardMenu = function WhiteboardMenu(_ref) {
51
51
  }, /*#__PURE__*/_react["default"].createElement("div", {
52
52
  className: "sdoc-dropdown-menu-item",
53
53
  onClick: openSelectWhiteboardFileDialog
54
- }, t('Select_Excalidraw_file')), /*#__PURE__*/_react["default"].createElement("div", {
54
+ }, t('Link_Excalidraw_file')), /*#__PURE__*/_react["default"].createElement("div", {
55
55
  className: "sdoc-dropdown-menu-item",
56
56
  onClick: onCreateFile
57
57
  }, t('New_Excalidraw_file')))));
@@ -64,6 +64,8 @@ var SocketClient = /*#__PURE__*/(0, _createClass2["default"])(function SocketCli
64
64
  });
65
65
  (0, _defineProperty2["default"])(this, "onDisconnected", function (data) {
66
66
  if (data === 'ping timeout') {
67
+ var time = new Date().toLocaleString();
68
+ (0, _debug.clientDebug)('Current time is: %s', time);
67
69
  (0, _debug.clientDebug)('Disconnected due to ping timeout, trying to reconnect...');
68
70
  _this.socket.connect(function (err) {
69
71
  if (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.156",
3
+ "version": "2.0.158",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "a5b608dd21479169503bb2fee3fb86a4ee6809d2"
74
+ "gitHead": "e4be651720eddbc08ae7d0f06ede189ec389d42d"
75
75
  }