@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.
- package/dist/constants/index.js +2 -1
- package/dist/editor/wiki-editor.js +5 -0
- package/dist/extension/plugins/search-replace/helper.js +23 -1
- package/dist/extension/plugins/search-replace/menu/index.css +4 -0
- package/dist/extension/plugins/search-replace/popover/index.css +6 -0
- package/dist/extension/plugins/search-replace/popover/index.js +13 -2
- package/package.json +2 -2
package/dist/constants/index.js
CHANGED
|
@@ -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
|
});
|
|
@@ -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.
|
|
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": "
|
|
75
|
+
"gitHead": "86fe08615af2e429b778e9075e7331b4dad5f77f"
|
|
76
76
|
}
|