@seafile/sdoc-editor 2.0.78 → 2.0.80

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.
Files changed (39) hide show
  1. package/dist/assets/css/plugin-editor.css +4 -0
  2. package/dist/basic-sdk/comment/components/comment-item-wrapper.js +2 -0
  3. package/dist/basic-sdk/constants/index.js +1 -3
  4. package/dist/basic-sdk/extension/commons/select-file-dialog/helpers.js +23 -5
  5. package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +5 -7
  6. package/dist/basic-sdk/extension/commons/wiki-file-insert-dialog/index.js +3 -4
  7. package/dist/basic-sdk/extension/constants/index.js +17 -1
  8. package/dist/basic-sdk/extension/plugins/ai/ai-module/helpers.js +3 -1
  9. package/dist/basic-sdk/extension/plugins/file-link/helpers.js +1 -1
  10. package/dist/basic-sdk/extension/plugins/file-link/render-elem.css +8 -0
  11. package/dist/basic-sdk/extension/plugins/file-link/render-elem.js +13 -5
  12. package/dist/basic-sdk/extension/plugins/image/helpers.js +3 -3
  13. package/dist/basic-sdk/extension/plugins/search-replace/popover/replace-all-confirm-modal.js +9 -3
  14. package/dist/basic-sdk/index.js +66 -0
  15. package/dist/components/doc-info/index.js +1 -1
  16. package/dist/components/doc-operations/more-operations.js +12 -15
  17. package/dist/components/doc-operations/plugins-operations.js +3 -4
  18. package/dist/components/doc-operations/presentation-operation/index.js +1 -2
  19. package/dist/components/doc-operations/revision-operations/changes-count/index.js +2 -3
  20. package/dist/components/doc-operations/revision-operations/index.js +24 -26
  21. package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js +2 -2
  22. package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/revision-operation/index.js +4 -5
  23. package/dist/components/doc-operations/revision-operations/view-changes/index.js +10 -9
  24. package/dist/{pages → components/error-boundary}/error-page.js +2 -2
  25. package/dist/layout/layout.js +9 -9
  26. package/dist/pages/published-revision-viewer.js +1 -1
  27. package/dist/pages/sdoc-wiki-editor.js +1 -1
  28. package/dist/pages/simple-editor.js +1 -1
  29. package/dist/pages/simple-viewer.js +1 -1
  30. package/dist/pages/wiki-viewer.js +1 -1
  31. package/dist/utils/index.js +1 -4
  32. package/package.json +1 -1
  33. package/dist/components/copy-image-error-svg/index.js +0 -64
  34. package/dist/utils/base64-to-unit8array.js +0 -21
  35. package/dist/utils/hotkey.js +0 -32
  36. package/dist/utils/is-punctuation-mark.js +0 -50
  37. /package/dist/{basic-sdk/assets → assets}/images/sdoc-freezed.png +0 -0
  38. /package/dist/{assets/css → components/error-boundary}/error-page.css +0 -0
  39. /package/dist/{pages/error-boundary.js → components/error-boundary/index.js} +0 -0
@@ -1,3 +1,7 @@
1
1
  .sdoc-editor-container .sdoc-editor-content.no-outline .sdoc-article-container {
2
2
  margin: 0 auto !important;
3
3
  }
4
+
5
+ html {
6
+ scrollbar-width: none;
7
+ }
@@ -68,6 +68,7 @@ const CommentItemWrapper = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
68
68
  }
69
69
  });
70
70
  closeComment && closeComment();
71
+ // eslint-disable-next-line react-hooks/exhaustive-deps
71
72
  }, [comment.detail, dispatch, editor]);
72
73
  const updateComment = (0, _react.useCallback)(async (commentId, newComment) => {
73
74
  await _context.default.updateComment(commentId, newComment);
@@ -149,6 +150,7 @@ const CommentItemWrapper = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
149
150
  updateScrollPosition && updateScrollPosition();
150
151
  }, 100);
151
152
  }
153
+ // eslint-disable-next-line react-hooks/exhaustive-deps
152
154
  }, [comment, commentsDetail, dispatch, editor, isClickedContextComment, setIsClickedContextComment, setIsCommentPanelVisible, updateScrollPosition]);
153
155
  const insertReply = (0, _react.useCallback)(async (commentId, replies) => {
154
156
  const elementId = (0, _helper.getPrimaryElementId)(comment.detail);
@@ -25,7 +25,7 @@ Object.defineProperty(exports, "PLUGIN_DISPLAY_TYPE", {
25
25
  return _plugin.PLUGIN_DISPLAY_TYPE;
26
26
  }
27
27
  });
28
- exports.Z_INDEX = exports.WIKI_OUTLINE = exports.WIKI_EDITOR_EDIT_AREA_WIDTH = exports.WIKI_EDITOR = exports.SDOC_STORAGE = exports.REVISION_DIFF_VALUE = exports.REVISION_DIFF_KEY = exports.REBASE_TYPES = exports.REBASE_TYPE = exports.REBASE_ORIGIN = exports.REBASE_MARK_KEY = exports.REBASE_MARKS = void 0;
28
+ exports.Z_INDEX = exports.WIKI_OUTLINE = exports.WIKI_EDITOR_EDIT_AREA_WIDTH = exports.WIKI_EDITOR = exports.SDOC_STORAGE = exports.REBASE_TYPES = exports.REBASE_TYPE = exports.REBASE_ORIGIN = exports.REBASE_MARK_KEY = exports.REBASE_MARKS = void 0;
29
29
  var _keyCodes = _interopRequireDefault(require("./key-codes"));
30
30
  var _plugin = require("./plugin");
31
31
  var _Z_INDEX = _interopRequireWildcard(require("./z-index"));
@@ -76,8 +76,6 @@ const INTERNAL_EVENT = exports.INTERNAL_EVENT = {
76
76
  CREATE_WIKI_PAGE: 'create_wiki_page',
77
77
  IMAGE_COLUMN_TOGGLE: 'Image_column_toggle'
78
78
  };
79
- const REVISION_DIFF_KEY = exports.REVISION_DIFF_KEY = 'diff';
80
- const REVISION_DIFF_VALUE = exports.REVISION_DIFF_VALUE = '1';
81
79
  const PAGE_EDIT_AREA_WIDTH = exports.PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
82
80
  const COMMENT_EDITOR_EDIT_AREA_WIDTH = exports.COMMENT_EDITOR_EDIT_AREA_WIDTH = 364;
83
81
  const WIKI_EDITOR_EDIT_AREA_WIDTH = exports.WIKI_EDITOR_EDIT_AREA_WIDTH = 714;
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getVideoFileIcon = exports.getSdocFileIcon = exports.addDataToTree = void 0;
7
+ exports.parcelFileTypeIcon = exports.getSdocFileIcon = exports.getFileTypeIcon = exports.addDataToTree = void 0;
8
8
  var _context = _interopRequireDefault(require("../../../context"));
9
+ var _constants = require("../../constants");
9
10
  const addDataToTree = (treeData, indexId, childrenData, path) => {
10
11
  for (let i = 0; i < treeData.length; i++) {
11
12
  var _treeData$i;
@@ -29,8 +30,25 @@ const getSdocFileIcon = () => {
29
30
  return `${server}/media/img/file/256/sdoc.png`;
30
31
  };
31
32
  exports.getSdocFileIcon = getSdocFileIcon;
32
- const getVideoFileIcon = () => {
33
- const server = _context.default.getSetting('serviceUrl');
34
- return `${server}/media/img/file/256/video.png`;
33
+ const getFileTypeIcon = fileType => {
34
+ const imgResource = ['css', 'draw', 'excel', 'md', 'music', 'pdf', 'pic', 'ppt', 'psd', 'sdoc', 'txt', 'video', 'zip', 'word'];
35
+ if (imgResource.includes(fileType)) {
36
+ const server = _context.default.getSetting('serviceUrl');
37
+ return `${server}/media/img/file/256/${fileType}.png`;
38
+ } else {
39
+ return false;
40
+ }
41
+ };
42
+ exports.getFileTypeIcon = getFileTypeIcon;
43
+ const parcelFileTypeIcon = fileName => {
44
+ var _Object$entries$find;
45
+ const newFileType = fileName.split('.').pop();
46
+ const fileExtType = (_Object$entries$find = Object.entries(_constants.FILEEXT_TYPE).find(_ref => {
47
+ let [, extensions] = _ref;
48
+ return extensions.includes(newFileType);
49
+ })) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[0];
50
+ const fileTypeResult = fileExtType ? _constants.FILEEXT_TYPE_MAP[fileExtType] : newFileType;
51
+ const fileTypeIcon = getFileTypeIcon(fileTypeResult);
52
+ return fileTypeIcon;
35
53
  };
36
- exports.getVideoFileIcon = getVideoFileIcon;
54
+ exports.parcelFileTypeIcon = parcelFileTypeIcon;
@@ -125,6 +125,8 @@ const LocalFiles = _ref => {
125
125
  indexId,
126
126
  name
127
127
  } = item;
128
+ // Get file type icon
129
+ const fileTypeIcon = (0, _helpers.parcelFileTypeIcon)(name);
128
130
  const result = (_item$fullpath = item.fullpath) === null || _item$fullpath === void 0 ? void 0 : _item$fullpath.split('/').filter(Boolean);
129
131
  item.fullpath && result.pop();
130
132
  const folderPath = item.fullpath && result.join('/');
@@ -166,15 +168,11 @@ const LocalFiles = _ref => {
166
168
  className: "sdoc-file-icon-container"
167
169
  }, /*#__PURE__*/_react.default.createElement("i", {
168
170
  className: (0, _classnames.default)('sdoc-file-icon', {
169
- 'sdocfont sdoc-link-file': fileType === 'file'
171
+ 'sdocfont sdoc-link-file': !fileTypeIcon
170
172
  })
171
- }), fileType === 'sdoc' && /*#__PURE__*/_react.default.createElement("img", {
173
+ }), fileTypeIcon && /*#__PURE__*/_react.default.createElement("img", {
172
174
  className: "sdoc-file-img",
173
- src: (0, _helpers.getSdocFileIcon)(),
174
- alt: ""
175
- }), fileType === 'video' && /*#__PURE__*/_react.default.createElement("img", {
176
- className: "video-file-img",
177
- src: (0, _helpers.getVideoFileIcon)(),
175
+ src: fileTypeIcon,
178
176
  alt: ""
179
177
  })), /*#__PURE__*/_react.default.createElement("span", {
180
178
  className: "sdoc-file-name"
@@ -12,8 +12,7 @@ var _slate = require("@seafile/slate");
12
12
  var _slateReact = require("@seafile/slate-react");
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
14
14
  var _lodash = _interopRequireDefault(require("lodash.throttle"));
15
- var _constants = require("../../../../constants");
16
- var _constants2 = require("../../../constants");
15
+ var _constants = require("../../../constants");
17
16
  var _commonUtils = require("../../../utils/common-utils");
18
17
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
19
18
  var _localStorageUtils = _interopRequireDefault(require("../../../utils/local-storage-utils"));
@@ -137,7 +136,7 @@ const WikiFileLinkInsertDialog = _ref => {
137
136
  document.addEventListener('click', onClick);
138
137
  document.addEventListener('keydown', onKeydown);
139
138
  sdocScrollContainer.addEventListener('scroll', onScroll);
140
- const unsubscribeCloseDialog = eventBus.subscribe(_constants2.INTERNAL_EVENT.CLOSE_FILE_INSET_DIALOG, closeDialog);
139
+ const unsubscribeCloseDialog = eventBus.subscribe(_constants.INTERNAL_EVENT.CLOSE_FILE_INSET_DIALOG, closeDialog);
141
140
  return () => {
142
141
  sdocScrollContainer.removeEventListener('scroll', onScroll);
143
142
  document.removeEventListener('click', onClick);
@@ -212,7 +211,7 @@ const WikiFileLinkInsertDialog = _ref => {
212
211
  (0, _helpers.removeTempInput)(editor, element);
213
212
  const eventBus = _eventBus.default.getInstance();
214
213
  const createName = newFileName.trim() || t('New_page');
215
- eventBus.dispatch(_constants.EXTERNAL_EVENT.CREATE_WIKI_PAGE, {
214
+ eventBus.dispatch(_constants.INTERNAL_EVENT.CREATE_WIKI_PAGE, {
216
215
  newFileName: createName
217
216
  });
218
217
  }, [editor, element, newFileName, t]);
@@ -114,7 +114,7 @@ Object.defineProperty(exports, "DIFF_TYPE", {
114
114
  return _diffView.DIFF_TYPE;
115
115
  }
116
116
  });
117
- exports.ELEMENT_TYPE = void 0;
117
+ exports.FILEEXT_TYPE_MAP = exports.FILEEXT_TYPE = exports.ELEMENT_TYPE = void 0;
118
118
  Object.defineProperty(exports, "FILE_LINK", {
119
119
  enumerable: true,
120
120
  get: function () {
@@ -525,6 +525,22 @@ const FILE_TYPE = exports.FILE_TYPE = {
525
525
  [_elementType.SDOC_LINK]: 'sdoc',
526
526
  [_elementType.VIDEO]: 'video'
527
527
  };
528
+ const FILEEXT_TYPE = exports.FILEEXT_TYPE = {
529
+ VIDEO: ['mp4', 'ogv', 'webm', 'mov'],
530
+ MUSIC: ['mp3', 'oga', 'ogg', 'wav', 'flac', 'opus'],
531
+ SPREADSHEET: ['xls', 'xlsx', 'ods', 'fods'],
532
+ MARKDOWN: ['markdown', 'md'],
533
+ EXCALIDRAW: ['exdraw'],
534
+ DOCUMENT: ['doc', 'docx', 'docxf', 'oform', 'ppt', 'pptx', 'odt', 'fodt', 'odp', 'fodp', 'odg']
535
+ };
536
+ const FILEEXT_TYPE_MAP = exports.FILEEXT_TYPE_MAP = {
537
+ VIDEO: 'video',
538
+ MUSIC: 'music',
539
+ SPREADSHEET: 'excel',
540
+ MARKDOWN: 'md',
541
+ EXCALIDRAW: 'draw',
542
+ DOCUMENT: 'word'
543
+ };
528
544
  const SUPPORTED_SIDE_OPERATION_TYPE = exports.SUPPORTED_SIDE_OPERATION_TYPE = [_elementType.PARAGRAPH, _elementType.SUBTITLE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CHECK_LIST_ITEM, _elementType.CODE_BLOCK, _elementType.TABLE, _elementType.BLOCKQUOTE, _elementType.CALL_OUT, _elementType.IMAGE_BLOCK, _elementType.VIDEO];
529
545
  const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP = {
530
546
  [_elementType.PARAGRAPH]: [_elementType.CALL_OUT],
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.removeMarks = exports.markdownTableRenderer = exports.insertHtmlTransferredNodes = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
7
9
  var _slate = require("@seafile/slate");
8
10
  var _constants = require("../../../constants");
9
11
  var _core = require("../../../core");
@@ -28,7 +30,7 @@ const removeMarks = editor => {
28
30
  exports.removeMarks = removeMarks;
29
31
  const markdownTableRenderer = searchResult => {
30
32
  if (!searchResult) return '';
31
- return /*#__PURE__*/React.createElement("div", {
33
+ return /*#__PURE__*/_react.default.createElement("div", {
32
34
  className: "md-rendered-html",
33
35
  dangerouslySetInnerHTML: {
34
36
  __html: searchResult
@@ -34,7 +34,7 @@ const generateFileNode = (uuid, text) => {
34
34
  type: _constants.FILE_LINK,
35
35
  doc_uuid: uuid,
36
36
  title: text,
37
- display_type: _constants.INSERT_FILE_DISPLAY_TYPE[0],
37
+ display_type: _constants.INSERT_FILE_DISPLAY_TYPE[1],
38
38
  children: [{
39
39
  id: _slugid.default.nice(),
40
40
  text: text || ''
@@ -31,6 +31,14 @@
31
31
  transform: translateY(-50%);
32
32
  }
33
33
 
34
+ .sdoc-file-link-render .sdoc-file-link-icon .file-link-img {
35
+ width: 20px;
36
+ }
37
+
38
+ .sdoc-file-card-link .sdoc-file-link-icon .file-link-img {
39
+ width: 28px;
40
+ }
41
+
34
42
  .sdoc-file-card-link .sdoc-file-text-link {
35
43
  position: absolute;
36
44
  left: 42px;
@@ -10,9 +10,10 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _slateReact = require("@seafile/slate-react");
11
11
  var _classnames = _interopRequireDefault(require("classnames"));
12
12
  var _useScrollContext = require("../../../hooks/use-scroll-context");
13
+ var _helpers = require("../../commons/select-file-dialog/helpers");
13
14
  var _constants = require("../../constants");
14
15
  var _constants2 = require("./constants");
15
- var _helpers = require("./helpers");
16
+ var _helpers2 = require("./helpers");
16
17
  var _hoverMenu = _interopRequireDefault(require("./hover-menu"));
17
18
  require("./render-elem.css");
18
19
  const FileLink = _ref => {
@@ -28,6 +29,9 @@ const FileLink = _ref => {
28
29
  const [isShowInsertHoverMenu, setIsShowInsertHoverMenu] = (0, _react.useState)(false);
29
30
  const [menuPosition, setMenuPosition] = (0, _react.useState)({});
30
31
  const isSelected = (0, _slateReact.useSelected)();
32
+
33
+ // Get file type icon
34
+ const fileTypeIcon = (0, _helpers.parcelFileTypeIcon)(element.title);
31
35
  const registerEventHandle = (0, _react.useCallback)(() => {
32
36
  document.addEventListener('click', onHideInsertHoverMenu);
33
37
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -79,7 +83,7 @@ const FileLink = _ref => {
79
83
  }, [isShowInsertHoverMenu]);
80
84
  const onClickFile = (0, _react.useCallback)(e => {
81
85
  if (readOnly) {
82
- window.open((0, _helpers.getUrl)(element.doc_uuid));
86
+ window.open((0, _helpers2.getUrl)(element.doc_uuid));
83
87
  return;
84
88
  }
85
89
  if (isShowInsertHoverMenu) {
@@ -99,7 +103,7 @@ const FileLink = _ref => {
99
103
  }, []);
100
104
  const onUnwrapFileLinkNode = (0, _react.useCallback)(event => {
101
105
  event.stopPropagation();
102
- (0, _helpers.unwrapLinkNode)(editor, element);
106
+ (0, _helpers2.unwrapLinkNode)(editor, element);
103
107
  // eslint-disable-next-line react-hooks/exhaustive-deps
104
108
  }, []);
105
109
  let style = {};
@@ -130,13 +134,17 @@ const FileLink = _ref => {
130
134
  }, [_constants2.FILE_LINK_TYPE.ICON_LINK, _constants2.FILE_LINK_TYPE.CARD_LINK].includes(element.display_type) && /*#__PURE__*/_react.default.createElement("span", {
131
135
  className: "sdoc-file-link-icon",
132
136
  style: style
133
- }, /*#__PURE__*/_react.default.createElement("i", {
137
+ }, !fileTypeIcon && /*#__PURE__*/_react.default.createElement("i", {
134
138
  className: "sdocfont sdoc-link-file"
139
+ }), fileTypeIcon && /*#__PURE__*/_react.default.createElement("img", {
140
+ className: "file-link-img",
141
+ src: fileTypeIcon,
142
+ alt: ""
135
143
  })), /*#__PURE__*/_react.default.createElement("span", {
136
144
  className: "sdoc-file-text-link",
137
145
  style: style
138
146
  }, /*#__PURE__*/_react.default.createElement("a", {
139
- href: (0, _helpers.getUrl)(element.doc_uuid),
147
+ href: (0, _helpers2.getUrl)(element.doc_uuid),
140
148
  onClick: e => e.preventDefault(),
141
149
  onDragStart: e => e.preventDefault(),
142
150
  title: element.title
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.updateImage = exports.selectImageWhenSelectPartial = exports.resetCursor = exports.removeImageBlockNode = exports.queryCopyMoveProgressView = exports.isInsertImageMenuDisabled = exports.isImageUrlIsFromUpload = exports.isImageUrlIsFromCopy = exports.insertImageFiles = exports.insertImage = exports.hasSdocImages = exports.handleBase64Image = exports.getSingleImageFromFragment = exports.getImageURL = exports.getImageData = exports.getDigitalSignImgUrl = exports.getColumnByKey = exports.generateImageNode = exports.generateImageInfos = void 0;
8
8
  var _slate = require("@seafile/slate");
9
9
  var _slateReact = require("@seafile/slate-react");
10
- var _dtableUtils = require("dtable-utils");
11
10
  var _slugid = _interopRequireDefault(require("slugid"));
12
11
  var _urlJoin = _interopRequireDefault(require("url-join"));
13
12
  var _constants = require("../../../constants");
@@ -165,11 +164,12 @@ const getImageURL = (data, editor) => {
165
164
  const {
166
165
  type
167
166
  } = column || {};
168
- if (type === _dtableUtils.CellType.IMAGE) {
167
+ // TODO: Plugin contants, image digital-sign
168
+ if (type === 'image') {
169
169
  const imgUrl = editor.getColumnCellValue(column_key) || '';
170
170
  const firstSrc = imgUrl.split(',')[0];
171
171
  return firstSrc;
172
- } else if (type === _dtableUtils.CellType.DIGITAL_SIGN) {
172
+ } else if (type === 'digital-sign') {
173
173
  const partUrl = editor.getColumnCellValue(column_key) || '';
174
174
  const imgUrl = getDigitalSignImgUrl(partUrl);
175
175
  return imgUrl;
@@ -8,7 +8,6 @@ exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _reactI18next = require("react-i18next");
10
10
  var _reactstrap = require("reactstrap");
11
- var _modalHeader = _interopRequireDefault(require("../../../../../components/modal-header"));
12
11
  const ReplaceAllConfirmModal = _ref => {
13
12
  let {
14
13
  isOpen,
@@ -29,10 +28,17 @@ const ReplaceAllConfirmModal = _ref => {
29
28
  originalWord,
30
29
  replacedWord
31
30
  });
31
+ const close = /*#__PURE__*/_react.default.createElement("span", {
32
+ className: "sdoc-add-link-close-icon",
33
+ onClick: handleCancel
34
+ }, /*#__PURE__*/_react.default.createElement("i", {
35
+ className: "sdocfont sdoc-sm-close",
36
+ "aria-hidden": "true"
37
+ }));
32
38
  return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
33
39
  isOpen: isOpen
34
- }, /*#__PURE__*/_react.default.createElement(_modalHeader.default, {
35
- toggle: handleCancel
40
+ }, /*#__PURE__*/_react.default.createElement(_reactstrap.ModalHeader, {
41
+ close: close
36
42
  }, t('Tip')), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, `${modalContent}`), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react.default.createElement("button", {
37
43
  onClick: handleCancel,
38
44
  className: "btn btn-secondary"
@@ -16,24 +16,60 @@ Object.defineProperty(exports, "DiffViewer", {
16
16
  return _views.DiffViewer;
17
17
  }
18
18
  });
19
+ Object.defineProperty(exports, "DropdownMenuItem", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _dropdownMenuItem.default;
23
+ }
24
+ });
19
25
  Object.defineProperty(exports, "EventBus", {
20
26
  enumerable: true,
21
27
  get: function () {
22
28
  return _eventBus.default;
23
29
  }
24
30
  });
31
+ Object.defineProperty(exports, "FULL_WIDTH_MODE", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _constants.FULL_WIDTH_MODE;
35
+ }
36
+ });
25
37
  Object.defineProperty(exports, "FileLoading", {
26
38
  enumerable: true,
27
39
  get: function () {
28
40
  return _fileLoading.default;
29
41
  }
30
42
  });
43
+ Object.defineProperty(exports, "INTERNAL_EVENT", {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _constants.INTERNAL_EVENT;
47
+ }
48
+ });
31
49
  Object.defineProperty(exports, "Loading", {
32
50
  enumerable: true,
33
51
  get: function () {
34
52
  return _loading.default;
35
53
  }
36
54
  });
55
+ Object.defineProperty(exports, "LocalStorage", {
56
+ enumerable: true,
57
+ get: function () {
58
+ return _localStorageUtils.default;
59
+ }
60
+ });
61
+ Object.defineProperty(exports, "MenuShortcutPrompt", {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _menuShortcutIndicator.default;
65
+ }
66
+ });
67
+ Object.defineProperty(exports, "PLUGIN_BTN_POSITION", {
68
+ enumerable: true,
69
+ get: function () {
70
+ return _constants.PLUGIN_BTN_POSITION;
71
+ }
72
+ });
37
73
  Object.defineProperty(exports, "PluginsProvider", {
38
74
  enumerable: true,
39
75
  get: function () {
@@ -94,6 +130,30 @@ Object.defineProperty(exports, "deserializeHtml", {
94
130
  return _slateConvert.deserializeHtml;
95
131
  }
96
132
  });
133
+ Object.defineProperty(exports, "getMergedChanges", {
134
+ enumerable: true,
135
+ get: function () {
136
+ return _diff.getMergedChanges;
137
+ }
138
+ });
139
+ Object.defineProperty(exports, "getRebase", {
140
+ enumerable: true,
141
+ get: function () {
142
+ return _rebase.getRebase;
143
+ }
144
+ });
145
+ Object.defineProperty(exports, "getTopLevelChanges", {
146
+ enumerable: true,
147
+ get: function () {
148
+ return _diff.getTopLevelChanges;
149
+ }
150
+ });
151
+ Object.defineProperty(exports, "hasConflict", {
152
+ enumerable: true,
153
+ get: function () {
154
+ return _rebase.hasConflict;
155
+ }
156
+ });
97
157
  Object.defineProperty(exports, "isMac", {
98
158
  enumerable: true,
99
159
  get: function () {
@@ -146,13 +206,19 @@ var _fileLoading = _interopRequireDefault(require("./components/file-loading"));
146
206
  var _loading = _interopRequireDefault(require("./components/loading"));
147
207
  var _toast = _interopRequireDefault(require("./components/toast"));
148
208
  var _tooltip = _interopRequireDefault(require("./components/tooltip"));
209
+ var _constants = require("./constants");
149
210
  var _context = _interopRequireDefault(require("./context"));
150
211
  var _revisionEditor = _interopRequireDefault(require("./editor/revision-editor"));
151
212
  var _sdocEditor = _interopRequireDefault(require("./editor/sdoc-editor"));
213
+ var _dropdownMenuItem = _interopRequireDefault(require("./extension/commons/dropdown-menu-item"));
214
+ var _menuShortcutIndicator = _interopRequireDefault(require("./extension/commons/menu-shortcut-indicator"));
152
215
  var _useCollaborators = require("./hooks/use-collaborators");
153
216
  var _usePlugins = require("./hooks/use-plugins");
154
217
  var _outline = _interopRequireDefault(require("./outline"));
155
218
  var _slateConvert = require("./slate-convert");
156
219
  var _commonUtils = require("./utils/common-utils");
220
+ var _diff = require("./utils/diff");
157
221
  var _eventBus = _interopRequireDefault(require("./utils/event-bus"));
222
+ var _localStorageUtils = _interopRequireDefault(require("./utils/local-storage-utils"));
223
+ var _rebase = require("./utils/rebase");
158
224
  var _views = require("./views");
@@ -9,8 +9,8 @@ exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _revisionAvatar = _interopRequireDefault(require("../../assets/images/revision-avatar.png"));
12
+ var _sdocFreezed = _interopRequireDefault(require("../../assets/images/sdoc-freezed.png"));
12
13
  var _basicSdk = require("../../basic-sdk");
13
- var _sdocFreezed = _interopRequireDefault(require("../../basic-sdk/assets/images/sdoc-freezed.png"));
14
14
  var _constants = require("../../constants");
15
15
  var _utils = require("../../utils");
16
16
  var _draftDropdown = _interopRequireDefault(require("../draft-dropdown"));
@@ -12,17 +12,14 @@ var _reactI18next = require("react-i18next");
12
12
  var _reactstrap = require("reactstrap");
13
13
  var _printJs = _interopRequireDefault(require("@seafile/print-js"));
14
14
  var _basicSdk = require("../../basic-sdk");
15
- var _constants = require("../../basic-sdk/constants");
16
- var _menuShortcutIndicator = _interopRequireDefault(require("../../basic-sdk/extension/commons/menu-shortcut-indicator"));
17
- var _localStorageUtils = _interopRequireDefault(require("../../basic-sdk/utils/local-storage-utils"));
18
- var _constants2 = require("../../constants");
15
+ var _constants = require("../../constants");
19
16
  const MoreOperations = _ref => {
20
17
  let {
21
18
  isStarred,
22
19
  t
23
20
  } = _ref;
24
21
  const [isDropdownOpen, setIsDropdownOpen] = (0, _react.useState)(false);
25
- const [isFullWidthMode, setIsFullWidthMode] = (0, _react.useState)(_localStorageUtils.default.getItem(_constants.FULL_WIDTH_MODE));
22
+ const [isFullWidthMode, setIsFullWidthMode] = (0, _react.useState)(_basicSdk.LocalStorage.getItem(_basicSdk.FULL_WIDTH_MODE));
26
23
  const parentFolderURL = _basicSdk.context.getSetting('parentFolderURL');
27
24
  const isPro = _basicSdk.context.getSetting('isPro');
28
25
  const isFreezed = _basicSdk.context.getSetting('isFreezed');
@@ -34,7 +31,7 @@ const MoreOperations = _ref => {
34
31
  const id = 'sdoc_more_operation';
35
32
  (0, _react.useEffect)(() => {
36
33
  const eventBus = _basicSdk.EventBus.getInstance();
37
- const unSubscribe = eventBus.subscribe(_constants.INTERNAL_EVENT.ON_PRINT, handlePrint);
34
+ const unSubscribe = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.ON_PRINT, handlePrint);
38
35
  return () => {
39
36
  unSubscribe();
40
37
  };
@@ -60,11 +57,11 @@ const MoreOperations = _ref => {
60
57
  }, [cssUrls]);
61
58
  const onFreezeDocument = (0, _react.useCallback)(() => {
62
59
  const eventBus = _basicSdk.EventBus.getInstance();
63
- eventBus.dispatch(_constants2.EXTERNAL_EVENT.FREEZE_DOCUMENT);
60
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.FREEZE_DOCUMENT);
64
61
  }, []);
65
62
  const unFreeze = (0, _react.useCallback)(() => {
66
63
  const eventBus = _basicSdk.EventBus.getInstance();
67
- eventBus.dispatch(_constants2.EXTERNAL_EVENT.UNFREEZE);
64
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.UNFREEZE);
68
65
  }, []);
69
66
  const handleClickHistory = (0, _react.useCallback)(event => {
70
67
  if (docPerm !== 'rw' || !historyURL) return;
@@ -79,28 +76,28 @@ const MoreOperations = _ref => {
79
76
  }, []);
80
77
  const onSwitchMode = (0, _react.useCallback)(() => {
81
78
  const newMode = !isFullWidthMode;
82
- _localStorageUtils.default.setItem(_constants.FULL_WIDTH_MODE, newMode);
79
+ _basicSdk.LocalStorage.setItem(_basicSdk.FULL_WIDTH_MODE, newMode);
83
80
  const eventBus = _basicSdk.EventBus.getInstance();
84
- eventBus.dispatch(_constants.INTERNAL_EVENT.RESIZE_ARTICLE);
81
+ eventBus.dispatch(_basicSdk.INTERNAL_EVENT.RESIZE_ARTICLE);
85
82
  setIsFullWidthMode(newMode);
86
83
  }, [isFullWidthMode]);
87
84
  const toggleStar = (0, _react.useCallback)(() => {
88
85
  const eventBus = _basicSdk.EventBus.getInstance();
89
- eventBus.dispatch(_constants2.EXTERNAL_EVENT.TOGGLE_STAR);
86
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.TOGGLE_STAR);
90
87
  }, []);
91
88
  const onShareToggle = (0, _react.useCallback)(() => {
92
89
  const eventBus = _basicSdk.EventBus.getInstance();
93
- eventBus.dispatch(_constants2.EXTERNAL_EVENT.SHARE_SDOC);
90
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.SHARE_SDOC);
94
91
  }, []);
95
92
  const onInternalLinkClick = (0, _react.useCallback)(() => {
96
93
  const eventBus = _basicSdk.EventBus.getInstance();
97
94
  if (isSdocRevision) {
98
- eventBus.dispatch(_constants2.EXTERNAL_EVENT.INTERNAL_LINK_CLICK, {
95
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.INTERNAL_LINK_CLICK, {
99
96
  internalLink: window.location.href
100
97
  });
101
98
  return;
102
99
  }
103
- eventBus.dispatch(_constants2.EXTERNAL_EVENT.INTERNAL_LINK_CLICK);
100
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.INTERNAL_LINK_CLICK);
104
101
  }, [isSdocRevision]);
105
102
  return /*#__PURE__*/_react.default.createElement(_reactstrap.Dropdown, {
106
103
  className: `sdoc-operator-folder ${mobileLogin ? 'mobile-login' : ''}`,
@@ -133,7 +130,7 @@ const MoreOperations = _ref => {
133
130
  onClick: handlePrint
134
131
  }, /*#__PURE__*/_react.default.createElement("div", {
135
132
  className: "sdoc-dropdown-print-container"
136
- }, /*#__PURE__*/_react.default.createElement("div", null, t('Print')), /*#__PURE__*/_react.default.createElement(_menuShortcutIndicator.default, {
133
+ }, /*#__PURE__*/_react.default.createElement("div", null, t('Print')), /*#__PURE__*/_react.default.createElement(_basicSdk.MenuShortcutPrompt, {
137
134
  shortcuts: printShortcutTexts
138
135
  }))), isPro && isFreezed && /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
139
136
  className: "sdoc-dropdown-menu-item",
@@ -10,8 +10,6 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _classnames = _interopRequireDefault(require("classnames"));
12
12
  var _basicSdk = require("../../basic-sdk");
13
- var _constants = require("../../basic-sdk/constants");
14
- var _mouseEvent = require("../../basic-sdk/utils/mouse-event");
15
13
  const PluginsOperations = () => {
16
14
  const {
17
15
  plugins,
@@ -25,11 +23,12 @@ const PluginsOperations = () => {
25
23
  'sdoc-comment': 'sdoc_comment'
26
24
  };
27
25
  const onClick = (0, _react.useCallback)((event, pluginName) => {
28
- (0, _mouseEvent.eventStopPropagation)(event);
26
+ event.stopPropagation();
27
+ event.nativeEvent && event.nativeEvent.stopImmediatePropagation && event.nativeEvent.stopImmediatePropagation();
29
28
  updateDisplayPlugin(pluginName);
30
29
  }, [updateDisplayPlugin]);
31
30
  if (plugins.length === 0) return null;
32
- return plugins.filter(plugin => !plugin.position || plugin.position === _constants.PLUGIN_BTN_POSITION.DEFAULT).map(plugin => {
31
+ return plugins.filter(plugin => !plugin.position || plugin.position === _basicSdk.PLUGIN_BTN_POSITION.DEFAULT).map(plugin => {
33
32
  const {
34
33
  name,
35
34
  icon
@@ -8,7 +8,6 @@ exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactI18next = require("react-i18next");
10
10
  var _basicSdk = require("../../../basic-sdk");
11
- var _constants = require("../../../basic-sdk/constants");
12
11
  const PresentationOperation = () => {
13
12
  const {
14
13
  t
@@ -16,7 +15,7 @@ const PresentationOperation = () => {
16
15
  const id = 'sdoc_presentation';
17
16
  const onPresentationToggle = (0, _react.useCallback)(() => {
18
17
  const eventBus = _basicSdk.EventBus.getInstance();
19
- eventBus.dispatch(_constants.INTERNAL_EVENT.TOGGLE_PRESENTATION_MODE, {
18
+ eventBus.dispatch(_basicSdk.INTERNAL_EVENT.TOGGLE_PRESENTATION_MODE, {
20
19
  isShowFullScreen: true
21
20
  });
22
21
  const node = document.querySelector('.sdoc-editor-container');
@@ -8,7 +8,6 @@ exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactI18next = require("react-i18next");
10
10
  var _basicSdk = require("../../../../basic-sdk");
11
- var _diff = require("../../../../basic-sdk/utils/diff");
12
11
  require("./index.css");
13
12
  const ChangesCount = _ref => {
14
13
  let {
@@ -33,8 +32,8 @@ const ChangesCount = _ref => {
33
32
  }, 100);
34
33
  }).then(() => {
35
34
  if (allChanges.changes.length !== 0) {
36
- const topLevelChanges = (0, _diff.getTopLevelChanges)(allChanges.changes);
37
- const changes = (0, _diff.getMergedChanges)(topLevelChanges, allChanges.value);
35
+ const topLevelChanges = (0, _basicSdk.getTopLevelChanges)(allChanges.changes);
36
+ const changes = (0, _basicSdk.getMergedChanges)(topLevelChanges, allChanges.value);
38
37
  setChanges(changes);
39
38
  }
40
39
  });
@@ -9,9 +9,7 @@ exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _basicSdk = require("../../../basic-sdk");
12
- var _constants = require("../../../basic-sdk/constants");
13
- var _rebase = require("../../../basic-sdk/utils/rebase");
14
- var _constants2 = require("../../../constants");
12
+ var _constants = require("../../../constants");
15
13
  var _hooks = require("../../../hooks");
16
14
  var _tipDialog = _interopRequireDefault(require("../../tip-dialog"));
17
15
  var _changesCount = _interopRequireDefault(require("./changes-count"));
@@ -56,9 +54,9 @@ const RevisionOperations = _ref => {
56
54
  setShowTip(true);
57
55
  const {
58
56
  value
59
- } = (0, _rebase.getRebase)(masterContent, baseContent, revisionContent);
57
+ } = (0, _basicSdk.getRebase)(masterContent, baseContent, revisionContent);
60
58
  setMergeValue(value);
61
- setTipType(_constants2.TIP_TYPE.SOURCE_DOCUMENT_CHANGED);
59
+ setTipType(_constants.TIP_TYPE.SOURCE_DOCUMENT_CHANGED);
62
60
  }).catch(error => {
63
61
  if (typeof error === 'string') {
64
62
  _basicSdk.toaster.danger(t(error));
@@ -72,16 +70,16 @@ const RevisionOperations = _ref => {
72
70
  }, []);
73
71
  const onDocumentReplaced = (0, _react.useCallback)(() => {
74
72
  if (isShowTip) return;
75
- setTipType(_constants2.TIP_TYPE.HAS_BEEN_REPLACED);
73
+ setTipType(_constants.TIP_TYPE.HAS_BEEN_REPLACED);
76
74
  setShowTip(true);
77
75
  }, [isShowTip]);
78
76
  const hasPublishRevision = (0, _react.useCallback)(() => {
79
77
  handleRevisionPublished();
80
- _basicSdk.toaster.success(t(_constants2.TIP_CONTENT[_constants2.TIP_TYPE.HAS_BEEN_PUBLISHED]));
78
+ _basicSdk.toaster.success(t(_constants.TIP_CONTENT[_constants.TIP_TYPE.HAS_BEEN_PUBLISHED]));
81
79
  }, [handleRevisionPublished, t]);
82
80
  const onDocumentRemoved = (0, _react.useCallback)(() => {
83
81
  if (isShowTip) return;
84
- setTipType(_constants2.TIP_TYPE.HAS_BEEN_REMOVED);
82
+ setTipType(_constants.TIP_TYPE.HAS_BEEN_REMOVED);
85
83
  setShowTip(true);
86
84
  }, [isShowTip]);
87
85
  const onError = (0, _react.useCallback)(() => {
@@ -91,12 +89,12 @@ const RevisionOperations = _ref => {
91
89
  }, []);
92
90
  (0, _react.useEffect)(() => {
93
91
  const eventBus = _basicSdk.EventBus.getInstance();
94
- const unsubscribeMergeDocument = eventBus.subscribe(_constants.INTERNAL_EVENT.DOCUMENT_REPLACED, onDocumentReplaced);
95
- const unsubscribeMergeDocumentError = eventBus.subscribe(_constants.INTERNAL_EVENT.DOCUMENT_REPLACED_ERROR, onError);
96
- const unsubscribePublishDocument = eventBus.subscribe(_constants.INTERNAL_EVENT.PUBLISH_DOCUMENT, hasPublishRevision);
97
- const unsubscribePublishDocumentError = eventBus.subscribe(_constants.INTERNAL_EVENT.PUBLISH_DOCUMENT_ERROR, onError);
98
- const unsubscribeRemoveDocument = eventBus.subscribe(_constants.INTERNAL_EVENT.REMOVE_DOCUMENT, onDocumentRemoved);
99
- const unsubscribeRemoveDocumentError = eventBus.subscribe(_constants.INTERNAL_EVENT.REMOVE_DOCUMENT_ERROR, onError);
92
+ const unsubscribeMergeDocument = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.DOCUMENT_REPLACED, onDocumentReplaced);
93
+ const unsubscribeMergeDocumentError = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.DOCUMENT_REPLACED_ERROR, onError);
94
+ const unsubscribePublishDocument = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.PUBLISH_DOCUMENT, hasPublishRevision);
95
+ const unsubscribePublishDocumentError = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.PUBLISH_DOCUMENT_ERROR, onError);
96
+ const unsubscribeRemoveDocument = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.REMOVE_DOCUMENT, onDocumentRemoved);
97
+ const unsubscribeRemoveDocumentError = eventBus.subscribe(_basicSdk.INTERNAL_EVENT.REMOVE_DOCUMENT_ERROR, onError);
100
98
  return () => {
101
99
  unsubscribeMergeDocument();
102
100
  unsubscribeMergeDocumentError();
@@ -117,8 +115,8 @@ const RevisionOperations = _ref => {
117
115
  // The trick here is to send one more api request in order to use the same information box.
118
116
  loadDocument().then(revisionContent => {
119
117
  // Prevent users from switching if document contains conflicting content
120
- if ((0, _rebase.hasConflict)(revisionContent.elements)) {
121
- setTipType(_constants2.TIP_TYPE.HAS_CONFLICT_BEFORE_VIEW_CHANGES);
118
+ if ((0, _basicSdk.hasConflict)(revisionContent.elements)) {
119
+ setTipType(_constants.TIP_TYPE.HAS_CONFLICT_BEFORE_VIEW_CHANGES);
122
120
  setShowTip(true);
123
121
  } else {
124
122
  handleViewChangesToggle(isShowChanges);
@@ -137,7 +135,7 @@ const RevisionOperations = _ref => {
137
135
  // publish revision
138
136
  const publishRevision = (0, _react.useCallback)(() => {
139
137
  setShowTip(true);
140
- setTipType(_constants2.TIP_TYPE.CHECKING);
138
+ setTipType(_constants.TIP_TYPE.CHECKING);
141
139
  const revisionPromise = loadDocument();
142
140
  const baseVersionPromise = _basicSdk.context.getRevisionBaseVersionContent();
143
141
  const originVersionPromise = _basicSdk.context.getSeadocOriginFileContent();
@@ -145,18 +143,18 @@ const RevisionOperations = _ref => {
145
143
  const [revisionContent, baseRes, masterRes] = results;
146
144
  const baseContent = JSON.parse(baseRes.data.content);
147
145
  const masterContent = JSON.parse(masterRes.data.content);
148
- if ((0, _rebase.hasConflict)(revisionContent.elements)) {
149
- setTipType(_constants2.TIP_TYPE.HAS_CONFLICT_BEFORE_PUBLISH);
146
+ if ((0, _basicSdk.hasConflict)(revisionContent.elements)) {
147
+ setTipType(_constants.TIP_TYPE.HAS_CONFLICT_BEFORE_PUBLISH);
150
148
  return;
151
149
  }
152
150
  const {
153
151
  canMerge,
154
152
  isNeedReplaceMaster,
155
153
  value
156
- } = (0, _rebase.getRebase)(masterContent, baseContent, revisionContent);
154
+ } = (0, _basicSdk.getRebase)(masterContent, baseContent, revisionContent);
157
155
  // change to HAS_BEEN_PUBLISHED
158
156
  if (canMerge && isNeedReplaceMaster) {
159
- setTipType(_constants2.TIP_TYPE.PUBLISHING);
157
+ setTipType(_constants.TIP_TYPE.PUBLISHING);
160
158
  _basicSdk.context.publishRevision().then(res => {
161
159
  setShowTip(false);
162
160
  setTipType('');
@@ -168,13 +166,13 @@ const RevisionOperations = _ref => {
168
166
 
169
167
  // change to DELETE_NO_CHANGES_REVISION
170
168
  if (canMerge && !isNeedReplaceMaster) {
171
- setTipType(_constants2.TIP_TYPE.DELETE_NO_CHANGES_REVISION);
169
+ setTipType(_constants.TIP_TYPE.DELETE_NO_CHANGES_REVISION);
172
170
  return;
173
171
  }
174
172
 
175
173
  // change to MERGE
176
174
  setMergeValue(value);
177
- setTipType(_constants2.TIP_TYPE.MERGE);
175
+ setTipType(_constants.TIP_TYPE.MERGE);
178
176
  }).catch(error => {
179
177
  if (typeof error === 'string') {
180
178
  _basicSdk.toaster.danger(t(error));
@@ -186,11 +184,11 @@ const RevisionOperations = _ref => {
186
184
 
187
185
  // confirm publish
188
186
  const onSubmit = (0, _react.useCallback)(() => {
189
- if (tipType === _constants2.TIP_TYPE.HAS_BEEN_PUBLISHED) {
187
+ if (tipType === _constants.TIP_TYPE.HAS_BEEN_PUBLISHED) {
190
188
  // nothing todo
191
189
  return;
192
190
  }
193
- if (tipType === _constants2.TIP_TYPE.DELETE_NO_CHANGES_REVISION) {
191
+ if (tipType === _constants.TIP_TYPE.DELETE_NO_CHANGES_REVISION) {
194
192
  _basicSdk.context.deleteSdocRevision().then(res => {
195
193
  // update current location
196
194
  const originFileURL = _basicSdk.context.getSetting('originFileURL');
@@ -200,7 +198,7 @@ const RevisionOperations = _ref => {
200
198
  });
201
199
  return;
202
200
  }
203
- if (tipType === _constants2.TIP_TYPE.MERGE || tipType === _constants2.TIP_TYPE.SOURCE_DOCUMENT_CHANGED) {
201
+ if (tipType === _constants.TIP_TYPE.MERGE || tipType === _constants.TIP_TYPE.SOURCE_DOCUMENT_CHANGED) {
204
202
  const {
205
203
  username
206
204
  } = _basicSdk.context.getUserInfo();
@@ -11,7 +11,6 @@ var _reactI18next = require("react-i18next");
11
11
  var _reactstrap = require("reactstrap");
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var _basicSdk = require("../../../../../basic-sdk");
14
- var _mouseEvent = require("../../../../../basic-sdk/utils/mouse-event");
15
14
  var _constants = require("../../../../../constants");
16
15
  var _model = require("../../../../../model");
17
16
  var _utils = require("../../../../../utils");
@@ -72,7 +71,8 @@ const RevisionsDialog = _ref => {
72
71
  // eslint-disable-next-line react-hooks/exhaustive-deps
73
72
  }, [revisions, page, perPage]);
74
73
  const openRevision = (0, _react.useCallback)((event, revisionId) => {
75
- (0, _mouseEvent.eventStopPropagation)(event);
74
+ event.stopPropagation();
75
+ event.nativeEvent && event.nativeEvent.stopImmediatePropagation && event.nativeEvent.stopImmediatePropagation();
76
76
  if (event.target.className.includes('sdoc-revision-operation-toggle')) return;
77
77
  const url = `${siteRoot}lib/${repoID}/revisions/${revisionId}/`;
78
78
  window.open(url, '_blank');
@@ -1,6 +1,5 @@
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
@@ -8,8 +7,7 @@ Object.defineProperty(exports, "__esModule", {
8
7
  exports.default = void 0;
9
8
  var _react = _interopRequireWildcard(require("react"));
10
9
  var _reactstrap = require("reactstrap");
11
- var _dropdownMenuItem = _interopRequireDefault(require("../../../../../../basic-sdk/extension/commons/dropdown-menu-item"));
12
- var _mouseEvent = require("../../../../../../basic-sdk/utils/mouse-event");
10
+ var _basicSdk = require("../../../../../../basic-sdk");
13
11
  require("./index.css");
14
12
  const RevisionOperation = _ref => {
15
13
  let {
@@ -29,7 +27,8 @@ const RevisionOperation = _ref => {
29
27
  updateOperatingRevision(nextPopoverShow ? revision.id : '');
30
28
  }, [isPopoverShow, updateOperatingRevision, revision]);
31
29
  const deleteRevision = (0, _react.useCallback)(event => {
32
- (0, _mouseEvent.eventStopPropagation)(event);
30
+ event.stopPropagation();
31
+ event.nativeEvent && event.nativeEvent.stopImmediatePropagation && event.nativeEvent.stopImmediatePropagation();
33
32
  onDeleteOtherRevision();
34
33
  popoverRef.current.toggle();
35
34
  }, [onDeleteOtherRevision]);
@@ -56,7 +55,7 @@ const RevisionOperation = _ref => {
56
55
  ref: popoverRef
57
56
  }, /*#__PURE__*/_react.default.createElement("div", {
58
57
  className: "sdoc-dropdown-menu-container"
59
- }, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
58
+ }, /*#__PURE__*/_react.default.createElement(_basicSdk.DropdownMenuItem, {
60
59
  onClick: deleteRevision,
61
60
  menuConfig: {
62
61
  iconClass: 'sdocfont sdoc-delete',
@@ -5,13 +5,14 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.default = exports.REVISION_DIFF_VALUE = exports.REVISION_DIFF_KEY = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _basicSdk = require("../../../../basic-sdk");
12
- var _constants = require("../../../../basic-sdk/constants");
13
12
  var _switch = _interopRequireDefault(require("../../../switch"));
14
13
  require("./index.css");
14
+ const REVISION_DIFF_KEY = exports.REVISION_DIFF_KEY = 'diff';
15
+ const REVISION_DIFF_VALUE = exports.REVISION_DIFF_VALUE = '1';
15
16
  const ViewChanges = _ref => {
16
17
  let {
17
18
  isShowChanges,
@@ -23,9 +24,9 @@ const ViewChanges = _ref => {
23
24
  (0, _react.useEffect)(() => {
24
25
  const url = new URL(window.location.href);
25
26
  const searchParams = new URLSearchParams(url.search);
26
- if (!searchParams.has(_constants.REVISION_DIFF_KEY)) return;
27
- const firstLoadValue = searchParams.get(_constants.REVISION_DIFF_KEY);
28
- if (firstLoadValue === _constants.REVISION_DIFF_VALUE) {
27
+ if (!searchParams.has(REVISION_DIFF_KEY)) return;
28
+ const firstLoadValue = searchParams.get(REVISION_DIFF_KEY);
29
+ if (firstLoadValue === REVISION_DIFF_VALUE) {
29
30
  propsOnViewChangesToggle(true);
30
31
  }
31
32
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -36,7 +37,7 @@ const ViewChanges = _ref => {
36
37
  const searchParams = new URLSearchParams(url.search);
37
38
  let newParamsString = '';
38
39
  for (const item of searchParams.entries()) {
39
- if (item[0] !== _constants.REVISION_DIFF_KEY) {
40
+ if (item[0] !== REVISION_DIFF_KEY) {
40
41
  if (newParamsString) {
41
42
  newParamsString = newParamsString + `&${item[0]}=${item[1]}`;
42
43
  } else {
@@ -44,11 +45,11 @@ const ViewChanges = _ref => {
44
45
  }
45
46
  }
46
47
  }
47
- if (!searchParams.has(_constants.REVISION_DIFF_KEY) && nextIsShowChanges) {
48
+ if (!searchParams.has(REVISION_DIFF_KEY) && nextIsShowChanges) {
48
49
  if (newParamsString) {
49
- newParamsString = newParamsString + `&${_constants.REVISION_DIFF_KEY}=${_constants.REVISION_DIFF_VALUE}`;
50
+ newParamsString = newParamsString + `&${REVISION_DIFF_KEY}=${REVISION_DIFF_VALUE}`;
50
51
  } else {
51
- newParamsString = `${_constants.REVISION_DIFF_KEY}=${_constants.REVISION_DIFF_VALUE}`;
52
+ newParamsString = `${REVISION_DIFF_KEY}=${REVISION_DIFF_VALUE}`;
52
53
  }
53
54
  }
54
55
  const validPathName = url.pathname.endsWith('/') ? url.pathname : url.pathname + '/';
@@ -8,8 +8,8 @@ exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactI18next = require("react-i18next");
10
10
  var _reactstrap = require("reactstrap");
11
- var _basicSdk = require("../basic-sdk");
12
- require("../assets/css/error-page.css");
11
+ var _basicSdk = require("../../basic-sdk");
12
+ require("./error-page.css");
13
13
  function ErrorPage(_ref) {
14
14
  let {
15
15
  t
@@ -16,28 +16,28 @@ const Layout = _ref => {
16
16
  className,
17
17
  ...restProps
18
18
  } = _ref;
19
- const cacheHistoryfiles = () => {
19
+ const cacheHistoryFiles = () => {
20
20
  const isPublished = _basicSdk.context.getSetting('isPublished') || false;
21
21
  const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision') || false;
22
22
  if (isPublished) return;
23
23
  if (isSdocRevision) return;
24
24
  const docUuid = _basicSdk.context.getSetting('docUuid');
25
25
  const docName = _basicSdk.context.getSetting('docName');
26
- const rencentFiles = _localStorageUtils.default.getItem('sdoc-recent-files', []);
26
+ const recentFiles = _localStorageUtils.default.getItem('sdoc-recent-files', []);
27
27
  let arr = [];
28
28
  const newFile = {
29
29
  doc_uuid: docUuid,
30
30
  name: docName
31
31
  };
32
- if (rencentFiles.length > 0) {
33
- const isExist = rencentFiles.find(item => item.doc_uuid === docUuid);
32
+ if (recentFiles.length > 0) {
33
+ const isExist = recentFiles.find(item => item.doc_uuid === docUuid);
34
34
  if (isExist) return;
35
35
  if (!isExist) {
36
- let newRencentFiles = rencentFiles.slice(0);
37
- if (rencentFiles.length === 10) {
38
- newRencentFiles.shift();
36
+ let newRecentFiles = recentFiles.slice(0);
37
+ if (recentFiles.length === 10) {
38
+ newRecentFiles.shift();
39
39
  }
40
- arr = [newFile, ...newRencentFiles];
40
+ arr = [newFile, ...newRecentFiles];
41
41
  }
42
42
  } else {
43
43
  arr.push(newFile);
@@ -53,7 +53,7 @@ const Layout = _ref => {
53
53
  element && element.scrollIntoView(true);
54
54
  }
55
55
  }, 500);
56
- cacheHistoryfiles();
56
+ cacheHistoryFiles();
57
57
  // eslint-disable-next-line react-hooks/exhaustive-deps
58
58
  }, []);
59
59
  return /*#__PURE__*/_react.default.createElement("div", Object.assign({
@@ -11,9 +11,9 @@ var _reactI18next = require("react-i18next");
11
11
  var _basicSdk = require("../basic-sdk");
12
12
  var _docInfo = _interopRequireDefault(require("../components/doc-info"));
13
13
  var _docOperations = _interopRequireDefault(require("../components/doc-operations"));
14
+ var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
14
15
  var _layout = _interopRequireWildcard(require("../layout"));
15
16
  var _utils = require("../utils");
16
- var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
17
17
  require("../assets/css/simple-editor.css");
18
18
  const PublishedRevisionViewer = () => {
19
19
  _basicSdk.context.initApi();
@@ -14,7 +14,7 @@ var _wikiEditor = _interopRequireDefault(require("../basic-sdk/editor/wiki-edito
14
14
  var _extension = require("../basic-sdk/extension");
15
15
  var _nodeId = _interopRequireDefault(require("../basic-sdk/node-id"));
16
16
  var _socket = require("../basic-sdk/socket");
17
- var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
17
+ var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
18
18
  require("../assets/css/simple-viewer.css");
19
19
  const SdocWikiEditor = _ref => {
20
20
  let {
@@ -12,10 +12,10 @@ var _basicSdk = require("../basic-sdk");
12
12
  var _views = require("../basic-sdk/views");
13
13
  var _docInfo = _interopRequireDefault(require("../components/doc-info"));
14
14
  var _docOperations = _interopRequireDefault(require("../components/doc-operations"));
15
+ var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
15
16
  var _hooks = require("../hooks");
16
17
  var _layout = _interopRequireWildcard(require("../layout"));
17
18
  var _utils = require("../utils");
18
- var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
19
19
  require("../assets/css/simple-editor.css");
20
20
  const SimpleEditor = _ref => {
21
21
  let {
@@ -9,8 +9,8 @@ exports.default = void 0;
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _basicSdk = require("../basic-sdk");
12
+ var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
12
13
  var _layout = _interopRequireWildcard(require("../layout"));
13
- var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
14
14
  require("../assets/css/simple-viewer.css");
15
15
  class SimpleViewer extends _react.default.Component {
16
16
  constructor(props) {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _basicSdk = require("../basic-sdk");
10
- var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
10
+ var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
11
11
  require("../assets/css/simple-viewer.css");
12
12
  const WikiViewer = _ref => {
13
13
  let {
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
@@ -11,11 +10,9 @@ Object.defineProperty(exports, "DateUtils", {
11
10
  return _dateUtils.default;
12
11
  }
13
12
  });
14
- exports.resetWebTitle = exports.getImageFileNameWithTimestamp = exports.getErrorMsg = exports.getDirPath = exports.Hotkey = void 0;
13
+ exports.resetWebTitle = exports.getImageFileNameWithTimestamp = exports.getErrorMsg = exports.getDirPath = void 0;
15
14
  var _basicSdk = require("../basic-sdk");
16
15
  var _dateUtils = _interopRequireDefault(require("./date-utils"));
17
- var Hotkey = _interopRequireWildcard(require("./hotkey"));
18
- exports.Hotkey = Hotkey;
19
16
  const getDirPath = path => {
20
17
  let dir = path.slice(0, path.lastIndexOf('/'));
21
18
  if (dir === '') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.78",
3
+ "version": "2.0.80",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _classnames = _interopRequireDefault(require("classnames"));
10
- const Svg = _ref => {
11
- let {
12
- t,
13
- isSelected,
14
- imageRef
15
- } = _ref;
16
- return /*#__PURE__*/_react.default.createElement("svg", {
17
- xmlns: "http://www.w3.org/2000/svg",
18
- viewBox: "0 0 360 360",
19
- preserveAspectRatio: "xMinYMin meet",
20
- className: (0, _classnames.default)('sdoc-image-placeholder-wrapper', {
21
- 'image-selected': isSelected
22
- }),
23
- ref: imageRef,
24
- draggable: false
25
- }, /*#__PURE__*/_react.default.createElement("rect", {
26
- width: "100%",
27
- height: "100%",
28
- fill: "#f0f0f0"
29
- }), /*#__PURE__*/_react.default.createElement("g", {
30
- className: "sdoc-image-content-wrapper",
31
- transform: "translate(180, 180) scale(1)"
32
- }, /*#__PURE__*/_react.default.createElement("g", {
33
- className: "sdoc-image-title",
34
- transform: "translate(0, 0)"
35
- }, /*#__PURE__*/_react.default.createElement("foreignObject", {
36
- x: "-85",
37
- y: "-16",
38
- width: "20",
39
- height: "28"
40
- }, /*#__PURE__*/_react.default.createElement("div", {
41
- className: "sdocfont sdoc-exclamation-circle"
42
- })), /*#__PURE__*/_react.default.createElement("text", {
43
- className: "sdoc-image-tip-title",
44
- transform: "translate(-55, 4)",
45
- fontSize: "20",
46
- fill: "red",
47
- fontFamily: "Arial, sans-serif"
48
- }, t('Image_copy_error'))), /*#__PURE__*/_react.default.createElement("text", {
49
- className: "sdoc-image-tip-content",
50
- transform: "translate(0, 35)",
51
- fontSize: "12",
52
- textAnchor: "middle",
53
- fill: "black",
54
- fontFamily: "Arial, sans-serif"
55
- }, t('Image_cannot_be_copied_Please_download_the_source_image')), /*#__PURE__*/_react.default.createElement("text", {
56
- className: "sdoc-image-tip-content",
57
- transform: "translate(0, 55)",
58
- fontSize: "12",
59
- textAnchor: "middle",
60
- fill: "black",
61
- fontFamily: "Arial, sans-serif"
62
- }, t('And_select_insert_-_image_to_upload'))));
63
- };
64
- var _default = exports.default = Svg;
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- const base64ToUnit8Array = base64 => {
8
- const arr = base64.split(',');
9
- const mime = arr[0].match(/:(.*?);/)[1];
10
- const bstr = atob(arr[1]);
11
- let n = bstr.length;
12
- const u8arr = new Uint8Array(n);
13
- while (n--) {
14
- u8arr[n] = bstr.charCodeAt(n);
15
- }
16
- return {
17
- u8arr,
18
- mime
19
- };
20
- };
21
- var _default = exports.default = base64ToUnit8Array;
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.isSpace = exports.isShiftModEnter = exports.isShiftEnter = exports.isOptPageup = exports.isOptPagedown = exports.isModZ = exports.isModUp = exports.isModSlash = exports.isModShiftZ = exports.isModShiftG = exports.isModShiftDot = exports.isModShiftComma = exports.isModSemicolon = exports.isModS = exports.isModRight = exports.isModP = exports.isModLeft = exports.isModL = exports.isModG = exports.isModF = exports.isModDown = exports.isModDot = exports.isModComma = exports.isModBackslash = void 0;
8
- var _isHotkey = _interopRequireDefault(require("is-hotkey"));
9
- const isModS = exports.isModS = (0, _isHotkey.default)('mod+s');
10
- const isModZ = exports.isModZ = (0, _isHotkey.default)('mod+z');
11
- const isModL = exports.isModL = (0, _isHotkey.default)('mod+l');
12
- const isModF = exports.isModF = (0, _isHotkey.default)('mod+f');
13
- const isModP = exports.isModP = (0, _isHotkey.default)('mod+p');
14
- const isModG = exports.isModG = (0, _isHotkey.default)('mod+g');
15
- const isModDot = exports.isModDot = (0, _isHotkey.default)('mod+.');
16
- const isModComma = exports.isModComma = (0, _isHotkey.default)('mod+,');
17
- const isModSlash = exports.isModSlash = (0, _isHotkey.default)('mod+/');
18
- const isModBackslash = exports.isModBackslash = (0, _isHotkey.default)('mod+\'');
19
- const isModSemicolon = exports.isModSemicolon = (0, _isHotkey.default)('mod+;');
20
- const isModUp = exports.isModUp = (0, _isHotkey.default)('mod+up');
21
- const isModDown = exports.isModDown = (0, _isHotkey.default)('mod+down');
22
- const isModLeft = exports.isModLeft = (0, _isHotkey.default)('mod+left');
23
- const isModRight = exports.isModRight = (0, _isHotkey.default)('mod+right');
24
- const isModShiftZ = exports.isModShiftZ = (0, _isHotkey.default)('mod+shift+z');
25
- const isModShiftG = exports.isModShiftG = (0, _isHotkey.default)('mod+shift+g');
26
- const isModShiftDot = exports.isModShiftDot = (0, _isHotkey.default)('mod+shift+.');
27
- const isModShiftComma = exports.isModShiftComma = (0, _isHotkey.default)('mod+shift+,');
28
- const isShiftEnter = exports.isShiftEnter = (0, _isHotkey.default)('shift+enter');
29
- const isShiftModEnter = exports.isShiftModEnter = (0, _isHotkey.default)('shift+mod+enter');
30
- const isOptPageup = exports.isOptPageup = (0, _isHotkey.default)('opt+pageup');
31
- const isOptPagedown = exports.isOptPagedown = (0, _isHotkey.default)('opt+pagedown');
32
- const isSpace = exports.isSpace = (0, _isHotkey.default)('space');
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- const isChPunctuation = char => {
8
- // \u2014|\u2018|\u2019|\u201c|\u201d|
9
- // \u2026|
10
- // \u2039|\u203a
11
- // \u3001|\u3002|\u3008|\u3009|\u300a|\u300b|\u300c|\u300d|\u300e|\u300f
12
- // \u3010|\u3011|\u3014|\u3015|\u301c|\u301d|\u301e
13
- // \ufe43|\ufe44|\ufe4f
14
- // \uffe5 (¥)
15
- const reg = /[\u2014|\u2018|\u2019|\u201c|\u201d|\u2026|\u2039|\u203a|\u3001|\u3002|\u3008|\u3009|\u300a|\u300b|\u300c|\u300d|\u300e|\u300f|\u3010|\u3011|\u3014|\u3015|\u301c|\u301d|\u301e]/;
16
- if (reg.test(char)) {
17
- return true;
18
- } else {
19
- return false;
20
- }
21
- };
22
- function isEnHalfWidthPunctuation(char) {
23
- // Distribution of half-width punctuation points in unicode: 0x0021~0x007e
24
- // https://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF
25
- const reg = /[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/;
26
- if (reg.test(char)) {
27
- return true;
28
- } else {
29
- return false;
30
- }
31
- }
32
- function isEnFullWidthPunctuation(char) {
33
- // 0xff01~0xff5e
34
- // https://en.wikibooks.org/wiki/Unicode/Character_reference/F000-FFFF
35
- const reg = /[\uff01-\uff0f\uff1a-\uff1f\uff20\uff3b-\uff3f\uff40\uff5b-\uff5f]/;
36
- if (reg.test(char)) {
37
- return true;
38
- } else {
39
- return false;
40
- }
41
- }
42
- const isLastCharPunctuation = value => {
43
- if (typeof value !== 'string' || !value) return false;
44
- const lastChar = value.slice(-1);
45
- if (isChPunctuation(lastChar)) return true;
46
- if (isEnHalfWidthPunctuation(lastChar)) return true;
47
- if (isEnFullWidthPunctuation(lastChar)) return true;
48
- return false;
49
- };
50
- var _default = exports.default = isLastCharPunctuation;