@seafile/sdoc-editor 3.0.120 → 3.0.122

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.
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useCursorPosition = exports.updateElementsAttrs = exports.updateCommentedElementsAttrs = exports.getSelectionRange = exports.getSelectedElemIds = exports.getPrimaryElementId = exports.getElementCommentCountTop = exports.getDomById = exports.getCursorPosition = exports.getCommentedTextsByElementId = exports.getAvatarUrl = exports.commentContainerWikiTransfer = void 0;
7
+ exports.useCursorPosition = exports.updateElementsAttrs = exports.updateCommentedElementsAttrs = exports.getWikiHeaderHeight = exports.getSelectionRange = exports.getSelectedElemIds = exports.getPrimaryElementId = exports.getElementCommentCountTop = exports.getDomById = exports.getCursorPosition = exports.getCommentedTextsByElementId = exports.getAvatarUrl = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
10
10
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
@@ -57,23 +57,13 @@ var getAvatarUrl = exports.getAvatarUrl = function getAvatarUrl() {
57
57
  var avatarUrl = "".concat(server, "/media/avatars/default.png");
58
58
  return avatarUrl;
59
59
  };
60
- var commentContainerWikiTransfer = exports.commentContainerWikiTransfer = function commentContainerWikiTransfer(result, value) {
61
- var newResult;
62
- var isWikiTitleIcon = document.querySelector('.wiki-page-icon-wrapper');
63
- var isWikiTitleCover = document.getElementById('wiki-page-cover');
64
- if (isWikiTitleIcon && !isWikiTitleCover) {
65
- // 90 is icon height in wiki
66
- newResult = result - value - 90;
67
- } else if (!isWikiTitleIcon && isWikiTitleCover) {
68
- // 203 is icon height in wiki
69
- newResult = result - value - 203;
70
- } else if (isWikiTitleIcon && isWikiTitleCover) {
71
- // 205 is icon and cover height in wiki
72
- newResult = result - value - 205;
73
- } else {
74
- newResult = result - value;
75
- }
76
- return newResult;
60
+ var getWikiHeaderHeight = exports.getWikiHeaderHeight = function getWikiHeaderHeight() {
61
+ var pageCover = window.document.getElementById('wiki-page-cover');
62
+ var pageCoverHeight = (pageCover === null || pageCover === void 0 ? void 0 : pageCover.offsetHeight) || 0;
63
+ var pageTitle = window.document.getElementById('wiki-page-title');
64
+ var pageTitleHeight = (pageTitle === null || pageTitle === void 0 ? void 0 : pageTitle.offsetHeight) || 0;
65
+ var topNavHeight = 44;
66
+ return pageCoverHeight + pageTitleHeight + topNavHeight;
77
67
  };
78
68
  var getElementCommentCountTop = exports.getElementCommentCountTop = function getElementCommentCountTop(editor, element, scrollTop) {
79
69
  var minY;
@@ -94,7 +84,8 @@ var getElementCommentCountTop = exports.getElementCommentCountTop = function get
94
84
  resultY = minY - 100 + scrollTop; // 100: header height(56) + toolbar height(37)
95
85
  if (editor.editorType === _constants.WIKI_EDITOR) {
96
86
  // 55 is basic top title height in wiki
97
- resultY = commentContainerWikiTransfer(resultY, 55);
87
+ var headerHight = getWikiHeaderHeight();
88
+ resultY = minY - headerHight + scrollTop;
98
89
  }
99
90
  return resultY;
100
91
  };
@@ -80,7 +80,8 @@ var INTERNAL_EVENT = exports.INTERNAL_EVENT = {
80
80
  GENERATE_EXDRAW_READ_ONLY_LINK: 'generate_exdraw_read_only_link',
81
81
  TRANSFER_PREVIEW_FILE_ID: 'transfer_preview_file_id',
82
82
  FILE_METADATA_COMPONENT: 'file_metadata_component',
83
- ADD_WIKI_LIBRARY_TOGGLE: 'add_wiki_library_click'
83
+ ADD_WIKI_LIBRARY_TOGGLE: 'add_wiki_library_click',
84
+ ON_OPEN_FORMULA_DIALOG: 'on_open_formula_dialog'
84
85
  };
85
86
  var PAGE_EDIT_AREA_WIDTH = exports.PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
86
87
  var COMMENT_EDITOR_EDIT_AREA_WIDTH = exports.COMMENT_EDITOR_EDIT_AREA_WIDTH = 364;
@@ -20,6 +20,7 @@ var _extension = require("../extension");
20
20
  var _insertElementDialog = _interopRequireDefault(require("../extension/commons/insert-element-dialog"));
21
21
  var _constants2 = require("../extension/constants");
22
22
  var _helpers = require("../extension/plugins/ai/ai-module/helpers");
23
+ var _menu = _interopRequireDefault(require("../extension/plugins/search-replace/menu"));
23
24
  var _useColorContext = require("../hooks/use-color-context");
24
25
  var _useMathjax = _interopRequireDefault(require("../hooks/use-mathjax"));
25
26
  var _useScrollContext = require("../hooks/use-scroll-context");
@@ -189,6 +190,10 @@ var WikiEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
189
190
  showComment: showComment
190
191
  })), /*#__PURE__*/_react["default"].createElement(_wikiOutline["default"], {
191
192
  doc: slateValue
193
+ }), /*#__PURE__*/_react["default"].createElement(_menu["default"], {
194
+ editor: validEditor,
195
+ className: "wiki-search-and-replace",
196
+ readonly: isWikiReadOnly
192
197
  }))))), /*#__PURE__*/_react["default"].createElement(_insertElementDialog["default"], {
193
198
  editor: validEditor
194
199
  }));
@@ -4,13 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.scrollIntoView = exports.handleReplaceKeyword = exports.getHighlightInfos = exports.drawHighlights = exports.clearCanvas = void 0;
7
+ exports.scrollIntoView = exports.isRangeInNotAllowedType = exports.isNotAllowed = exports.handleReplaceKeyword = exports.getHighlightInfos = exports.drawHighlights = exports.clearCanvas = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
11
11
  var _slate = require("@seafile/slate");
12
12
  var _slateReact = require("@seafile/slate-react");
13
13
  var _constants = require("../../constants");
14
+ var _elementType = require("../../constants/element-type");
14
15
  var _constant = require("./constant");
15
16
  // Check the node iff contains text or inline node
16
17
  var isInlineContainer = function isInlineContainer(editor, node) {
@@ -196,6 +197,26 @@ var getHighlightInfos = exports.getHighlightInfos = function getHighlightInfos(e
196
197
  });
197
198
  return rangeList;
198
199
  };
200
+ var isPointInLink = function isPointInLink(editor, point) {
201
+ var linkEntry = _slate.Editor.above(editor, {
202
+ at: point,
203
+ match: function match(node) {
204
+ return _slate.Element.isElement(node) && [_constants.FILE_LINK, _elementType.WIKI_LINK, _constants.SDOC_LINK].includes(node.type);
205
+ }
206
+ });
207
+ return !!linkEntry;
208
+ };
209
+ var isRangeInNotAllowedType = exports.isRangeInNotAllowedType = function isRangeInNotAllowedType(editor, range) {
210
+ if (!range) return true;
211
+ return isPointInLink(editor, range === null || range === void 0 ? void 0 : range.anchor) || isPointInLink(editor, range === null || range === void 0 ? void 0 : range.focus);
212
+ };
213
+ var isNotAllowed = exports.isNotAllowed = function isNotAllowed(editor, range) {
214
+ var domRange = range[0].domRange;
215
+ var slateRange = _slateReact.ReactEditor.toSlateRange(editor, domRange, {
216
+ exactMatch: true
217
+ });
218
+ return isRangeInNotAllowedType(editor, slateRange);
219
+ };
199
220
  var handleReplaceKeyword = exports.handleReplaceKeyword = function handleReplaceKeyword(editor, highlightInfos, replacedContent) {
200
221
  if (!highlightInfos || !highlightInfos.length) return;
201
222
  // Delete from backward avoiding the range changed
@@ -204,6 +225,7 @@ var handleReplaceKeyword = exports.handleReplaceKeyword = function handleReplace
204
225
  var slateRange = _slateReact.ReactEditor.toSlateRange(editor, domRange, {
205
226
  exactMatch: true
206
227
  });
228
+ if (isRangeInNotAllowedType(editor, slateRange)) return;
207
229
  _slate.Transforms.insertText(editor, replacedContent, {
208
230
  at: _slate.Editor.end(editor, slateRange)
209
231
  });
@@ -12,3 +12,7 @@
12
12
  .sdoc-find-search-highlight-canvas {
13
13
  position: absolute;
14
14
  }
15
+
16
+ .wiki-search-and-replace {
17
+ display: none;
18
+ }
@@ -7,6 +7,12 @@
7
7
  border: 1px solid #ebebeb;
8
8
  }
9
9
 
10
+ .sdoc-search-replace-popover-container.in-wiki {
11
+ z-index: 1000;
12
+ right: 0px;
13
+ left: unset !important;
14
+ }
15
+
10
16
  .sdoc-search-replace-popover-container .sdoc-search-replace-popover-title {
11
17
  display: flex;
12
18
  justify-content: space-between;
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactDom = require("react-dom");
12
12
  var _reactI18next = require("react-i18next");
13
13
  var _reactstrap = require("reactstrap");
14
+ var _classnames = _interopRequireDefault(require("classnames"));
14
15
  var _isHotkey = _interopRequireDefault(require("is-hotkey"));
15
16
  var _constants = require("../../../../constants");
16
17
  var _context = _interopRequireDefault(require("../../../../context"));
@@ -80,6 +81,14 @@ var SearchReplacePopover = function SearchReplacePopover(_ref) {
80
81
  }, []);
81
82
  var isOwnReplacePermission = (0, _react.useMemo)(function () {
82
83
  if (readonly) return false;
84
+ var isWiki = _context["default"].getSetting('isWiki');
85
+ if (isWiki) {
86
+ var _isPublished = _context["default"].getSetting('publishUrl');
87
+ var isLocked = _context["default"].getSetting('isLocked');
88
+ if (_isPublished || isLocked) return false;
89
+ var wikiPerm = _context["default"].getSetting('permission');
90
+ if (wikiPerm === 'rw') return true;
91
+ }
83
92
  var isFreezed = _context["default"].getSetting('isFreezed');
84
93
  if (isFreezed) return false;
85
94
  var isPublished = _context["default"].getSetting('isPublished');
@@ -185,7 +194,9 @@ var SearchReplacePopover = function SearchReplacePopover(_ref) {
185
194
  if ((0, _isHotkey["default"])('enter+shift', e)) handleLast();
186
195
  };
187
196
  return /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
188
- className: "sdoc-search-replace-popover-container",
197
+ className: (0, _classnames["default"])('sdoc-search-replace-popover-container', {
198
+ 'in-wiki': editor.editorType === _constants.WIKI_EDITOR
199
+ }),
189
200
  onMouseDown: handleStartMove,
190
201
  onMouseMove: handleMouseMove,
191
202
  onMouseUp: handleFinishMove,
@@ -237,7 +248,7 @@ var SearchReplacePopover = function SearchReplacePopover(_ref) {
237
248
  onClick: handleNext,
238
249
  className: "btn btn-secondary"
239
250
  }, t('Next')), /*#__PURE__*/_react["default"].createElement("button", {
240
- disabled: !highlightInfos.length || !isOwnReplacePermission,
251
+ disabled: !highlightInfos.length || !isOwnReplacePermission || (0, _helper.isNotAllowed)(editor, highlightInfos[currentSelectIndex]),
241
252
  onClick: handleReplace,
242
253
  className: "btn btn-primary"
243
254
  }, t('Replace')), /*#__PURE__*/_react["default"].createElement("button", {
@@ -58,8 +58,8 @@ var useCommentListPosition = exports.useCommentListPosition = function useCommen
58
58
  var topPara;
59
59
  topPara = rect.bottom - headerHeight + 10 + scrollTop;
60
60
  if (editor.editorType === _constants.WIKI_EDITOR) {
61
- // 55 is basic top title height in wiki
62
- topPara = (0, _helper.commentContainerWikiTransfer)(topPara, 55);
61
+ var wikiHeaderHight = (0, _helper.getWikiHeaderHeight)();
62
+ topPara = rect.bottom - wikiHeaderHight + 10 + scrollTop;
63
63
  }
64
64
  var rightPara = editorArticleRight - rect.left - 300; // 300 is comment container's width
65
65
  return {
@@ -73,8 +73,8 @@ var useCommentListPosition = exports.useCommentListPosition = function useCommen
73
73
  if (selectionPosition && selectionPosition.y !== 0) {
74
74
  selectionPosition.y = selectionPosition.y - headerHeight + scrollTop;
75
75
  if (editor.editorType === _constants.WIKI_EDITOR) {
76
- // 47 is top nav bar height in wiki
77
- selectionPosition.y = (0, _helper.commentContainerWikiTransfer)(selectionPosition.y, 47);
76
+ var _wikiHeaderHight = (0, _helper.getWikiHeaderHeight)();
77
+ selectionPosition.y = selectionPosition.y - _wikiHeaderHight + scrollTop;
78
78
  }
79
79
  }
80
80
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.120",
3
+ "version": "3.0.122",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "323a2cf12fe18fa5dfb316b6c3865f50ad3b76ea"
75
+ "gitHead": "8f442dff1b427f5f867707b43cc9c50917d34b6a"
76
76
  }