@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.
- package/dist/comment/helper.js +10 -19
- 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/dist/hooks/use-selection-position.js +4 -4
- package/package.json +2 -2
package/dist/comment/helper.js
CHANGED
|
@@ -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 =
|
|
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
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
87
|
+
var headerHight = getWikiHeaderHeight();
|
|
88
|
+
resultY = minY - headerHight + scrollTop;
|
|
98
89
|
}
|
|
99
90
|
return resultY;
|
|
100
91
|
};
|
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", {
|
|
@@ -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
|
-
|
|
62
|
-
topPara =
|
|
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
|
-
|
|
77
|
-
selectionPosition.y =
|
|
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.
|
|
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": "
|
|
75
|
+
"gitHead": "8f442dff1b427f5f867707b43cc9c50917d34b6a"
|
|
76
76
|
}
|