@seafile/sdoc-editor 3.0.120 → 3.0.121

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.
@@ -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", {
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.121",
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": "86fe08615af2e429b778e9075e7331b4dad5f77f"
76
76
  }