@seafile/sdoc-editor 2.0.69 → 2.0.71
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/basic-sdk/comment/comment-decorate.js +17 -17
- package/dist/basic-sdk/comment/components/comment-context-menu/index.css +16 -0
- package/dist/basic-sdk/comment/components/comment-context-menu/index.js +38 -0
- package/dist/basic-sdk/comment/components/comment-context-menu/menu-item.js +57 -0
- package/dist/basic-sdk/comment/components/comment-editor.js +5 -2
- package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +17 -1
- package/dist/basic-sdk/comment/components/comment-item-wrapper.js +85 -30
- package/dist/basic-sdk/comment/components/comment-list.css +34 -0
- package/dist/basic-sdk/comment/components/comment-list.js +96 -20
- package/dist/basic-sdk/comment/components/editor-comment.js +117 -57
- package/dist/basic-sdk/comment/components/elements-comment-count/index.js +15 -3
- package/dist/basic-sdk/comment/components/global-comment/index.css +25 -0
- package/dist/basic-sdk/comment/helper.js +111 -2
- package/dist/basic-sdk/comment/reducer/comment-reducer.js +2 -3
- package/dist/basic-sdk/constants/index.js +2 -1
- package/dist/basic-sdk/editor/sdoc-editor.js +4 -4
- package/dist/basic-sdk/extension/commons/color-menu/index.js +3 -3
- package/dist/basic-sdk/extension/commons/file-insert-dialog/index.js +5 -4
- package/dist/basic-sdk/extension/commons/wiki-file-insert-dialog/index.js +5 -4
- package/dist/basic-sdk/extension/core/queries/index.js +2 -3
- package/dist/basic-sdk/extension/core/utils/index.js +1 -29
- package/dist/basic-sdk/extension/plugins/ai/ai-icon/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/ai/ai-module/helpers.js +4 -0
- package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/header/placeholder.js +33 -0
- package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -2
- package/dist/basic-sdk/extension/plugins/multi-column/helper.js +1 -1
- package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +2 -1
- package/dist/basic-sdk/extension/plugins/table/menu/color-selector-popover/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +2 -1
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +28 -4
- package/dist/basic-sdk/hooks/use-selection-position.js +51 -30
- package/dist/basic-sdk/layout/article-container.js +1 -1
- package/dist/basic-sdk/layout/editor-content.js +1 -1
- package/dist/basic-sdk/node-id/helpers.js +26 -2
- package/dist/basic-sdk/node-id/index.js +37 -2
- package/dist/basic-sdk/right-panel/index.js +4 -4
- package/dist/basic-sdk/utils/common-utils.js +43 -0
- package/dist/basic-sdk/utils/default-mode.js +1 -1
- package/dist/basic-sdk/utils/document-utils.js +16 -2
- package/dist/basic-sdk/utils/full-width-mode.js +1 -1
- package/dist/basic-sdk/views/published-revision-diff-viewer.js +1 -1
- package/dist/basic-sdk/views/revision-diff-viewer.js +1 -1
- package/dist/basic-sdk/views/sdoc-diff-viewer.js +1 -1
- package/dist/basic-sdk/views/sdoc-viewer.js +2 -2
- package/dist/basic-sdk/views/sdoc-wiki-viewer.js +2 -2
- package/dist/components/doc-operations/more-operations.js +1 -1
- package/dist/layout/layout.js +3 -3
- package/dist/pages/simple-viewer.js +1 -1
- package/dist/plugin-module/layout/editor-content.js +1 -1
- package/dist/plugin-module/views/plugin-viewer.js +2 -2
- package/dist/utils/index.js +2 -61
- package/package.json +1 -1
- package/public/locales/en/sdoc-editor.json +2 -1
- package/public/locales/zh_CN/sdoc-editor.json +2 -1
- package/dist/plugin-module/assets/css/sdoc-wiki-viewer.css +0 -28
- /package/dist/{assets → basic-sdk/assets}/css/diff-viewer.css +0 -0
- /package/dist/{utils → basic-sdk/utils}/local-storage-utils.js +0 -0
|
@@ -12,7 +12,7 @@ var _reactstrap = require("reactstrap");
|
|
|
12
12
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
13
|
var _tooltip = _interopRequireDefault(require("../../../../../../components/tooltip"));
|
|
14
14
|
var _context = _interopRequireDefault(require("../../../../../../context"));
|
|
15
|
-
var _localStorageUtils = _interopRequireDefault(require("
|
|
15
|
+
var _localStorageUtils = _interopRequireDefault(require("../../../../../utils/local-storage-utils"));
|
|
16
16
|
var _objectUtils = _interopRequireDefault(require("../../../../../utils/object-utils"));
|
|
17
17
|
var _constants = require("../../../../constants");
|
|
18
18
|
var _helpers = require("../../helpers");
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactI18next = require("react-i18next");
|
|
8
|
+
const Placeholder = props => {
|
|
9
|
+
const {
|
|
10
|
+
title,
|
|
11
|
+
top = 5
|
|
12
|
+
} = props;
|
|
13
|
+
const {
|
|
14
|
+
t
|
|
15
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
16
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
17
|
+
contentEditable: "false",
|
|
18
|
+
suppressContentEditableWarning: true,
|
|
19
|
+
style: {
|
|
20
|
+
position: 'absolute',
|
|
21
|
+
top: `${top}px`,
|
|
22
|
+
color: 'rgba(191,191,191,1)',
|
|
23
|
+
pointerEvents: 'none',
|
|
24
|
+
width: '100%',
|
|
25
|
+
maxWidth: '100%',
|
|
26
|
+
display: 'block',
|
|
27
|
+
userSelect: 'none',
|
|
28
|
+
textDecoration: 'none',
|
|
29
|
+
left: '1px'
|
|
30
|
+
}
|
|
31
|
+
}, t(title));
|
|
32
|
+
};
|
|
33
|
+
var _default = exports.default = Placeholder;
|
|
@@ -8,8 +8,8 @@ exports.renderTitle = exports.renderSubtitle = exports.renderHeader = void 0;
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _slate = require("@seafile/slate");
|
|
10
10
|
var _constants = require("../../constants");
|
|
11
|
-
var _core = require("../../core");
|
|
12
11
|
var _helper = require("../paragraph/helper");
|
|
12
|
+
var _placeholder = _interopRequireDefault(require("./placeholder"));
|
|
13
13
|
const renderTitle = (props, editor) => {
|
|
14
14
|
const {
|
|
15
15
|
element,
|
|
@@ -82,7 +82,7 @@ const renderHeader = (props, editor) => {
|
|
|
82
82
|
position: isShowPlaceHolder ? 'relative' : '',
|
|
83
83
|
...style
|
|
84
84
|
}
|
|
85
|
-
}), isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(
|
|
85
|
+
}), isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(_placeholder.default, {
|
|
86
86
|
title: 'Header',
|
|
87
87
|
top: 0
|
|
88
88
|
}), children);
|
|
@@ -8,9 +8,9 @@ exports.updateColumnWidthOnDeletion = exports.updateColumnWidth = exports.insert
|
|
|
8
8
|
var _slate = require("@seafile/slate");
|
|
9
9
|
var _slateReact = require("@seafile/slate-react");
|
|
10
10
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
11
|
-
var _localStorageUtils = _interopRequireDefault(require("../../../../utils/local-storage-utils"));
|
|
12
11
|
var _constants = require("../../../constants");
|
|
13
12
|
var _fullWidthMode = require("../../../utils/full-width-mode");
|
|
13
|
+
var _localStorageUtils = _interopRequireDefault(require("../../../utils/local-storage-utils"));
|
|
14
14
|
var _constants2 = require("../../constants");
|
|
15
15
|
var _core = require("../../core");
|
|
16
16
|
var _constants3 = require("./constants");
|
|
@@ -11,6 +11,7 @@ var _slateReact = require("@seafile/slate-react");
|
|
|
11
11
|
var _constants = require("../../../constants");
|
|
12
12
|
var _constants2 = require("../../constants");
|
|
13
13
|
var _core = require("../../core");
|
|
14
|
+
var _placeholder = _interopRequireDefault(require("../header/placeholder"));
|
|
14
15
|
var _helper = require("./helper");
|
|
15
16
|
const PLACEHOLDER = 'Enter_text_or_press_forward_slash_to_insert_element';
|
|
16
17
|
const Paragraph = _ref => {
|
|
@@ -66,7 +67,7 @@ const Paragraph = _ref => {
|
|
|
66
67
|
...style
|
|
67
68
|
},
|
|
68
69
|
className: className
|
|
69
|
-
}), children, isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(
|
|
70
|
+
}), children, isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(_placeholder.default, {
|
|
70
71
|
title: placeholder,
|
|
71
72
|
top: isCommentEditor ? 0 : 5
|
|
72
73
|
}));
|
|
@@ -11,8 +11,8 @@ var _reactColor = require("react-color");
|
|
|
11
11
|
var _reactI18next = require("react-i18next");
|
|
12
12
|
var _reactstrap = require("reactstrap");
|
|
13
13
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
-
var _utils = require("../../../../../../utils");
|
|
15
14
|
var _useColorContext = require("../../../../../hooks/use-color-context");
|
|
15
|
+
var _localStorageUtils = _interopRequireDefault(require("../../../../../utils/local-storage-utils"));
|
|
16
16
|
var _mouseEvent = require("../../../../../utils/mouse-event");
|
|
17
17
|
var _constants = require("../../../../constants");
|
|
18
18
|
var _helpers = require("../../helpers");
|
|
@@ -35,7 +35,7 @@ const ColorSelectorPopover = _ref => {
|
|
|
35
35
|
} = (0, _useColorContext.useColorContext)();
|
|
36
36
|
const popoverRef = (0, _react.useRef)(null);
|
|
37
37
|
const moreColorsPopoverRef = (0, _react.useRef)(null);
|
|
38
|
-
const [recentUsedColors, setRecentUsedColors] = (0, _react.useState)(
|
|
38
|
+
const [recentUsedColors, setRecentUsedColors] = (0, _react.useState)(_localStorageUtils.default.getItem(recentUsedColorsKey, _constants.DEFAULT_RECENT_USED_LIST));
|
|
39
39
|
const [isShowMenu, setMenuShow] = (0, _react.useState)(false);
|
|
40
40
|
const [isPickerShow, setPickerShow] = (0, _react.useState)(false);
|
|
41
41
|
const setColor = (0, _react.useCallback)(color => {
|
|
@@ -51,7 +51,7 @@ const ColorSelectorPopover = _ref => {
|
|
|
51
51
|
if (validColor !== '' && recentUsedColors[0] !== validColor) {
|
|
52
52
|
let newRecentUsedColors = recentUsedColors.slice(0, 9);
|
|
53
53
|
newRecentUsedColors.unshift(validColor);
|
|
54
|
-
|
|
54
|
+
_localStorageUtils.default.setItem(recentUsedColorsKey, newRecentUsedColors);
|
|
55
55
|
setRecentUsedColors(newRecentUsedColors);
|
|
56
56
|
}
|
|
57
57
|
updateLastUsedColor && updateLastUsedColor(validColor);
|
|
@@ -11,6 +11,7 @@ var _reactI18next = require("react-i18next");
|
|
|
11
11
|
var _slate = require("@seafile/slate");
|
|
12
12
|
var _constants = require("../../../../../basic-sdk/constants");
|
|
13
13
|
var _context = _interopRequireDefault(require("../../../../../context"));
|
|
14
|
+
var _commentContextMenu = _interopRequireDefault(require("../../../../comment/components/comment-context-menu"));
|
|
14
15
|
var _useColorContext = require("../../../../hooks/use-color-context");
|
|
15
16
|
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
16
17
|
var _mouseEvent = require("../../../../utils/mouse-event");
|
|
@@ -155,7 +156,7 @@ const TextStyleMenuList = _ref => {
|
|
|
155
156
|
tipMessage: t('Reduce_font_size')
|
|
156
157
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
157
158
|
className: "sdocfont sdoc-reduce-font-size"
|
|
158
|
-
}))), idPrefix && enableSeafileAI && /*#__PURE__*/_react.default.createElement(_aiMenu.AIContextMenu, {
|
|
159
|
+
}))), idPrefix && /*#__PURE__*/_react.default.createElement(_commentContextMenu.default, null), idPrefix && enableSeafileAI && /*#__PURE__*/_react.default.createElement(_aiMenu.AIContextMenu, {
|
|
159
160
|
isRichEditor: isRichEditor
|
|
160
161
|
}));
|
|
161
162
|
};
|
|
@@ -15,7 +15,7 @@ const renderText = props => {
|
|
|
15
15
|
children,
|
|
16
16
|
leaf
|
|
17
17
|
} = props;
|
|
18
|
-
|
|
18
|
+
let {
|
|
19
19
|
text,
|
|
20
20
|
...rest
|
|
21
21
|
} = leaf;
|
|
@@ -35,10 +35,34 @@ const renderText = props => {
|
|
|
35
35
|
style['minWidth'] = '2px';
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
// Add temporary marks for selection in AI
|
|
39
|
-
if (leaf.sdoc_ai && leaf.text.trim()) {
|
|
38
|
+
// Add temporary marks for selection in AI or context comment
|
|
39
|
+
if ((leaf.sdoc_ai || leaf.comment) && leaf.text.trim()) {
|
|
40
40
|
style['padding'] = '3.23px 0';
|
|
41
|
-
style['
|
|
41
|
+
style['backgroundColor'] = '#a9c9ed';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Background color overlap for multi comments
|
|
45
|
+
if (Object.keys(leaf).some(key => key.startsWith('sdoc_comment_'))) {
|
|
46
|
+
const commentEntries = Object.entries(leaf).filter(_ref => {
|
|
47
|
+
let [key] = _ref;
|
|
48
|
+
return key.startsWith('sdoc_comment_');
|
|
49
|
+
});
|
|
50
|
+
for (const [key, value] of commentEntries) {
|
|
51
|
+
if (value === false && key.startsWith('sdoc_comment_')) {
|
|
52
|
+
const newKey = `removed_${key}`;
|
|
53
|
+
rest[newKey] = true;
|
|
54
|
+
delete rest[key];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const commentRest = Object.keys(rest).filter(item => item.startsWith('sdoc_comment_'));
|
|
58
|
+
|
|
59
|
+
// Multi comment or only one comment
|
|
60
|
+
if (commentRest.length > 1) {
|
|
61
|
+
style['backgroundColor'] = 'rgba(129, 237, 247)';
|
|
62
|
+
}
|
|
63
|
+
if (commentRest.length === 1) {
|
|
64
|
+
style['backgroundColor'] = 'rgba(129, 237, 247, 0.5)';
|
|
65
|
+
}
|
|
42
66
|
}
|
|
43
67
|
if (leaf.computed_background_color) {
|
|
44
68
|
style['backgroundColor'] = leaf.computed_background_color;
|
|
@@ -3,45 +3,66 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var _slateReact = require("@seafile/slate-react");
|
|
6
|
+
exports.useCommentListPosition = void 0;
|
|
8
7
|
var _useScrollContext = require("./use-scroll-context");
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
if (!editor.selection) return {
|
|
12
|
-
x: 0,
|
|
13
|
-
y: 0
|
|
14
|
-
};
|
|
15
|
-
if (!node) return {
|
|
16
|
-
x: 0,
|
|
17
|
-
y: 0
|
|
18
|
-
};
|
|
19
|
-
try {
|
|
20
|
-
const domNode = _slateReact.ReactEditor.toDOMNode(editor, node);
|
|
21
|
-
const rect = domNode.getBoundingClientRect();
|
|
22
|
-
return rect;
|
|
23
|
-
} catch (error) {
|
|
24
|
-
// A new node has not yet been indexed, it cannot be retrieved, and the new node has no comment information, just do not display it
|
|
25
|
-
return {
|
|
26
|
-
x: 0,
|
|
27
|
-
y: 0
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
exports.useSelectionPosition = useSelectionPosition;
|
|
32
|
-
const useCommentListPosition = selectionElement => {
|
|
33
|
-
const selectionPosition = useSelectionPosition(selectionElement);
|
|
8
|
+
const useCommentListPosition = (selectedElementIds, isContextComment, isClickedContextComment, commentedDom, commentDetail, closeComment) => {
|
|
9
|
+
var _document$querySelect;
|
|
34
10
|
const headerHeight = 100;
|
|
35
11
|
const scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
36
12
|
const {
|
|
37
13
|
scrollTop = 0
|
|
38
14
|
} = scrollRef.current || {};
|
|
39
|
-
if (
|
|
15
|
+
if (isContextComment || isClickedContextComment) {
|
|
16
|
+
let rect;
|
|
17
|
+
if (isContextComment) {
|
|
18
|
+
rect = commentedDom.getBoundingClientRect();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// rect is the last commented context dom
|
|
22
|
+
if (isClickedContextComment) {
|
|
23
|
+
const lastComment = Object.values(commentDetail).map(item => {
|
|
24
|
+
var _item$detail;
|
|
25
|
+
return (_item$detail = item.detail) === null || _item$detail === void 0 ? void 0 : _item$detail.text_comment_id;
|
|
26
|
+
}).flatMap(id => {
|
|
27
|
+
const elements = Array.from(document.querySelectorAll(`.sdoc_comment_${id}`));
|
|
28
|
+
return elements.map(el => ({
|
|
29
|
+
id,
|
|
30
|
+
el
|
|
31
|
+
}));
|
|
32
|
+
}).reduce((last, current) => {
|
|
33
|
+
if (!last) return current;
|
|
34
|
+
const position = last.el.compareDocumentPosition(current.el);
|
|
35
|
+
return position & Node.DOCUMENT_POSITION_FOLLOWING ? current : last;
|
|
36
|
+
}, null);
|
|
37
|
+
if (lastComment) {
|
|
38
|
+
const result = `.sdoc_comment_${lastComment.id}`;
|
|
39
|
+
const elements = Array.from(document.querySelectorAll(result));
|
|
40
|
+
if (elements.length === 0) return;
|
|
41
|
+
const lastTextElement = elements[elements.length - 1];
|
|
42
|
+
const parentElement = lastTextElement.closest('[data-slate-node="element"]');
|
|
43
|
+
const firstInSameParent = elements.find(el => parentElement.contains(el));
|
|
44
|
+
rect = firstInSameParent === null || firstInSameParent === void 0 ? void 0 : firstInSameParent.getBoundingClientRect();
|
|
45
|
+
} else {
|
|
46
|
+
closeComment();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const editorArticleRight = document.getElementById('sdoc-editor-print-wrapper').getBoundingClientRect().right;
|
|
50
|
+
const topPara = rect.bottom - headerHeight + 10 + scrollTop;
|
|
51
|
+
const rightPara = editorArticleRight - rect.left - 300; // 300 is comment container's width
|
|
52
|
+
return {
|
|
53
|
+
right: rightPara,
|
|
54
|
+
y: topPara
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const selectionPosition = (_document$querySelect = document.querySelectorAll(`[data-id="${selectedElementIds[0]}"]`)[0]) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getBoundingClientRect();
|
|
58
|
+
// Boundary check
|
|
59
|
+
if (!selectionPosition) closeComment();
|
|
60
|
+
if (selectionPosition && selectionPosition.y !== 0) {
|
|
40
61
|
selectionPosition.y = selectionPosition.y - headerHeight + scrollTop;
|
|
41
62
|
}
|
|
42
63
|
return {
|
|
43
|
-
x: selectionPosition.x,
|
|
44
|
-
y: selectionPosition.y
|
|
64
|
+
x: selectionPosition === null || selectionPosition === void 0 ? void 0 : selectionPosition.x,
|
|
65
|
+
y: selectionPosition === null || selectionPosition === void 0 ? void 0 : selectionPosition.y
|
|
45
66
|
};
|
|
46
67
|
};
|
|
47
68
|
exports.useCommentListPosition = useCommentListPosition;
|
|
@@ -7,12 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = ArticleContainer;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
|
|
11
10
|
var _constants = require("../constants");
|
|
12
11
|
var _useScrollContext = require("../hooks/use-scroll-context");
|
|
13
12
|
var _defaultMode = require("../utils/default-mode");
|
|
14
13
|
var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
|
|
15
14
|
var _fullWidthMode = require("../utils/full-width-mode");
|
|
15
|
+
var _localStorageUtils = _interopRequireDefault(require("../utils/local-storage-utils"));
|
|
16
16
|
function ArticleContainer(_ref) {
|
|
17
17
|
let {
|
|
18
18
|
editor,
|
|
@@ -9,12 +9,12 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
var _constants = require("../../basic-sdk/constants");
|
|
12
|
-
var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
|
|
13
12
|
var _provider = _interopRequireDefault(require("../comment/provider"));
|
|
14
13
|
var _useScrollContext = require("../hooks/use-scroll-context");
|
|
15
14
|
var _outline = _interopRequireDefault(require("../outline"));
|
|
16
15
|
var _rightPanel = _interopRequireDefault(require("../right-panel"));
|
|
17
16
|
var _fullWidthMode = require("../utils/full-width-mode");
|
|
17
|
+
var _localStorageUtils = _interopRequireDefault(require("../utils/local-storage-utils"));
|
|
18
18
|
const EditorContent = _ref => {
|
|
19
19
|
let {
|
|
20
20
|
readonly = false,
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.replacePastedDataId = exports.replaceNodeId = exports.decorateOperation = void 0;
|
|
8
|
+
exports.replacePastedDataId = exports.replaceNodeId = exports.removeCommentMarks = exports.decorateOperation = void 0;
|
|
9
9
|
var _slate = require("@seafile/slate");
|
|
10
10
|
var _deepCopy = _interopRequireDefault(require("deep-copy"));
|
|
11
11
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
@@ -133,4 +133,28 @@ const replacePastedDataId = pastedData => {
|
|
|
133
133
|
return item;
|
|
134
134
|
});
|
|
135
135
|
};
|
|
136
|
-
exports.replacePastedDataId = replacePastedDataId;
|
|
136
|
+
exports.replacePastedDataId = replacePastedDataId;
|
|
137
|
+
const removeCommentMarks = fragment => {
|
|
138
|
+
const cleanNode = node => {
|
|
139
|
+
if (_slate.Text.isText(node)) {
|
|
140
|
+
const newNode = {
|
|
141
|
+
...node
|
|
142
|
+
};
|
|
143
|
+
for (const key of Object.keys(newNode)) {
|
|
144
|
+
if (key.startsWith('sdoc_comment') || key.startsWith('removed_')) {
|
|
145
|
+
delete newNode[key];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return newNode;
|
|
149
|
+
}
|
|
150
|
+
if (node.children) {
|
|
151
|
+
return {
|
|
152
|
+
...node,
|
|
153
|
+
children: node.children.map(cleanNode)
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return node;
|
|
157
|
+
};
|
|
158
|
+
return fragment.map(cleanNode);
|
|
159
|
+
};
|
|
160
|
+
exports.removeCommentMarks = removeCommentMarks;
|
|
@@ -4,18 +4,50 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _slate = require("@seafile/slate");
|
|
7
8
|
var _constants = require("../extension/constants");
|
|
8
9
|
var _documentUtils = require("../utils/document-utils");
|
|
9
10
|
var _helpers = require("./helpers");
|
|
10
11
|
const withNodeId = editor => {
|
|
11
12
|
const {
|
|
12
|
-
apply
|
|
13
|
+
apply,
|
|
14
|
+
insertText
|
|
13
15
|
} = editor;
|
|
14
16
|
const newEditor = editor;
|
|
15
17
|
newEditor.apply = op => {
|
|
16
18
|
const newOp = (0, _helpers.decorateOperation)(newEditor, op);
|
|
17
19
|
apply(newOp);
|
|
18
20
|
};
|
|
21
|
+
newEditor.insertText = text => {
|
|
22
|
+
const {
|
|
23
|
+
selection
|
|
24
|
+
} = editor;
|
|
25
|
+
// Remove context comment marks when inserting position has comment before selection and no comment after selection
|
|
26
|
+
if (selection && _slate.Range.isCollapsed(selection)) {
|
|
27
|
+
const beforePoint = _slate.Editor.before(editor, selection.focus, {
|
|
28
|
+
unit: 'character'
|
|
29
|
+
});
|
|
30
|
+
const afterPoint = _slate.Editor.after(editor, selection.focus, {
|
|
31
|
+
unit: 'character'
|
|
32
|
+
});
|
|
33
|
+
const beforeText = beforePoint && _slate.Editor.node(editor, beforePoint);
|
|
34
|
+
const afterText = afterPoint && _slate.Editor.node(editor, afterPoint);
|
|
35
|
+
const hasCommentBefore = beforeText && _slate.Text.isText(beforeText[0]) && Object.keys(beforeText[0]).some(k => k.includes('sdoc_comment'));
|
|
36
|
+
const hasCommentAfter = afterText && _slate.Text.isText(afterText[0]) && Object.keys(afterText[0]).some(k => k.includes('sdoc_comment'));
|
|
37
|
+
const hasTrueCommentAfter = afterText && _slate.Text.isText(afterText[0]) && Object.keys(afterText[0]).filter(k => k.includes('sdoc_comment')).some(k => afterText[0][k]);
|
|
38
|
+
if (hasCommentBefore && (!hasCommentAfter || !hasTrueCommentAfter)) {
|
|
39
|
+
const marks = _slate.Editor.marks(editor);
|
|
40
|
+
if (marks) {
|
|
41
|
+
for (const key of Object.keys(marks)) {
|
|
42
|
+
if (key.includes('sdoc_comment')) {
|
|
43
|
+
_slate.Editor.removeMark(editor, key);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
insertText(text);
|
|
50
|
+
};
|
|
19
51
|
|
|
20
52
|
// rewrite insert fragment data
|
|
21
53
|
newEditor.insertFragmentData = data => {
|
|
@@ -23,7 +55,10 @@ const withNodeId = editor => {
|
|
|
23
55
|
if (fragment) {
|
|
24
56
|
const decoded = decodeURIComponent(window.atob(fragment));
|
|
25
57
|
const parsed = JSON.parse(decoded);
|
|
26
|
-
|
|
58
|
+
|
|
59
|
+
// Clean context comment style when pasting commented context
|
|
60
|
+
const cleaned = (0, _helpers.removeCommentMarks)(parsed);
|
|
61
|
+
const newData = (0, _helpers.replacePastedDataId)(cleaned);
|
|
27
62
|
const normalizeNewData = (0, _documentUtils.normalizeCopyNodes)(newEditor, newData);
|
|
28
63
|
newEditor.insertFragment(normalizeNewData);
|
|
29
64
|
return newEditor;
|
|
@@ -8,9 +8,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _hooks = require("../../hooks");
|
|
11
|
-
var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
|
|
12
11
|
var _constants = require("../constants");
|
|
13
12
|
var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
|
|
13
|
+
var _localStorageUtils = _interopRequireDefault(require("../utils/local-storage-utils"));
|
|
14
14
|
var _resizeWidth = _interopRequireDefault(require("./resize-width"));
|
|
15
15
|
require("./index.css");
|
|
16
16
|
const MIN_PANEL_WIDTH = 360;
|
|
@@ -42,8 +42,8 @@ const RightPanel = _ref => {
|
|
|
42
42
|
setWidth(width);
|
|
43
43
|
}, []);
|
|
44
44
|
const resizeWidthEnd = (0, _react.useCallback)(width => {
|
|
45
|
-
const settings =
|
|
46
|
-
|
|
45
|
+
const settings = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
|
|
46
|
+
_localStorageUtils.default.setItem(_constants.SDOC_STORAGE, JSON.stringify({
|
|
47
47
|
...settings,
|
|
48
48
|
panelWidth: width
|
|
49
49
|
}));
|
|
@@ -51,7 +51,7 @@ const RightPanel = _ref => {
|
|
|
51
51
|
eventBus.dispatch(_constants.INTERNAL_EVENT.RESIZE_ARTICLE);
|
|
52
52
|
}, []);
|
|
53
53
|
(0, _react.useEffect)(() => {
|
|
54
|
-
const settings =
|
|
54
|
+
const settings = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
|
|
55
55
|
const {
|
|
56
56
|
panelWidth
|
|
57
57
|
} = settings;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isEnglish = exports.getMaximumCapacity = exports.getLocalStorageFiles = void 0;
|
|
7
|
+
const isEnglish = str => {
|
|
8
|
+
const pattern = new RegExp('[A-Za-z]+');
|
|
9
|
+
if (pattern.test(str)) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
14
|
+
exports.isEnglish = isEnglish;
|
|
15
|
+
const getMaximumCapacity = files => {
|
|
16
|
+
const containerMaxHeight = 350;
|
|
17
|
+
const containerTop = 40;
|
|
18
|
+
const containerBottom = 32;
|
|
19
|
+
const containerMore = 32;
|
|
20
|
+
const availableHeight = containerMaxHeight - containerTop - containerBottom - containerMore;
|
|
21
|
+
let allHeight = 0;
|
|
22
|
+
const newFiles = [];
|
|
23
|
+
files.forEach(file => {
|
|
24
|
+
const itemHeight = file !== null && file !== void 0 && file.path ? 51 : 32;
|
|
25
|
+
allHeight = allHeight + itemHeight;
|
|
26
|
+
if (allHeight <= availableHeight) {
|
|
27
|
+
newFiles.push(file);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return newFiles;
|
|
31
|
+
};
|
|
32
|
+
exports.getMaximumCapacity = getMaximumCapacity;
|
|
33
|
+
const getLocalStorageFiles = files => {
|
|
34
|
+
const wikiRepoId = window.wiki.config.wikiId;
|
|
35
|
+
const newFiles = [];
|
|
36
|
+
files.forEach(item => {
|
|
37
|
+
if ((item === null || item === void 0 ? void 0 : item.wikiRepoId) === wikiRepoId) {
|
|
38
|
+
newFiles.push(item);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return newFiles;
|
|
42
|
+
};
|
|
43
|
+
exports.getLocalStorageFiles = getLocalStorageFiles;
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getStyleByDefaultMode = void 0;
|
|
8
|
-
var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
|
|
9
8
|
var _constants = require("../constants");
|
|
9
|
+
var _localStorageUtils = _interopRequireDefault(require("./local-storage-utils"));
|
|
10
10
|
const getStyleByDefaultMode = (scrollRef, editor) => {
|
|
11
11
|
const sdocStorage = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
|
|
12
12
|
const {
|
|
@@ -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.setOriginSdocKey = exports.normalizeCopyNodes = exports.normalizeChildren = exports.getSlateFragmentAttribute = void 0;
|
|
7
|
+
exports.setOriginSdocKey = exports.normalizeCopyNodes = exports.normalizeChildren = exports.getSlateFragmentAttribute = exports.generateDefaultDocContent = void 0;
|
|
8
8
|
var _deepCopy = _interopRequireDefault(require("deep-copy"));
|
|
9
9
|
var _index = require("../../basic-sdk/extension/core/utils/index");
|
|
10
10
|
var _context = _interopRequireDefault(require("../../context"));
|
|
@@ -53,4 +53,18 @@ const getSlateFragmentAttribute = dataTransfer => {
|
|
|
53
53
|
const [, fragment] = htmlData.match(catchSlateFragment) || [];
|
|
54
54
|
return fragment;
|
|
55
55
|
};
|
|
56
|
-
exports.getSlateFragmentAttribute = getSlateFragmentAttribute;
|
|
56
|
+
exports.getSlateFragmentAttribute = getSlateFragmentAttribute;
|
|
57
|
+
const generateDefaultDocContent = () => {
|
|
58
|
+
const defaultValue = {
|
|
59
|
+
version: 0,
|
|
60
|
+
elements: [{
|
|
61
|
+
id: 'aaaa',
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
children: [{
|
|
64
|
+
text: ''
|
|
65
|
+
}]
|
|
66
|
+
}]
|
|
67
|
+
};
|
|
68
|
+
return defaultValue;
|
|
69
|
+
};
|
|
70
|
+
exports.generateDefaultDocContent = generateDefaultDocContent;
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getStyleByFullWidthMode = exports.getContentStyleByFullModeStyle = void 0;
|
|
8
|
-
var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
|
|
9
8
|
var _constants = require("../constants");
|
|
9
|
+
var _localStorageUtils = _interopRequireDefault(require("./local-storage-utils"));
|
|
10
10
|
const getStyleByFullWidthMode = (scrollRef, editor) => {
|
|
11
11
|
const sdocStorage = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
|
|
12
12
|
const {
|
|
@@ -12,7 +12,7 @@ var _context = _interopRequireDefault(require("../../context"));
|
|
|
12
12
|
var _formatSdocContent = require("../../utils/format-sdoc-content");
|
|
13
13
|
var _diff = require("../utils/diff");
|
|
14
14
|
var _sdocViewer = _interopRequireDefault(require("./sdoc-viewer"));
|
|
15
|
-
require("
|
|
15
|
+
require("../assets/css/diff-viewer.css");
|
|
16
16
|
const PublishedRevisionDiffViewer = _ref => {
|
|
17
17
|
let {
|
|
18
18
|
isShowChanges,
|
|
@@ -13,7 +13,7 @@ var _formatSdocContent = require("../../utils/format-sdoc-content");
|
|
|
13
13
|
var _insertElementDialog = _interopRequireDefault(require("../extension/commons/insert-element-dialog"));
|
|
14
14
|
var _diff = require("../utils/diff");
|
|
15
15
|
var _sdocViewer = _interopRequireDefault(require("./sdoc-viewer"));
|
|
16
|
-
require("
|
|
16
|
+
require("../assets/css/diff-viewer.css");
|
|
17
17
|
const RevisionDiffViewer = _ref => {
|
|
18
18
|
let {
|
|
19
19
|
editor,
|
|
@@ -13,7 +13,7 @@ var _extension = require("../extension");
|
|
|
13
13
|
var _nodeId = _interopRequireDefault(require("../node-id"));
|
|
14
14
|
var _diff = require("../utils/diff");
|
|
15
15
|
var _sdocViewer = _interopRequireDefault(require("./sdoc-viewer"));
|
|
16
|
-
require("
|
|
16
|
+
require("../assets/css/diff-viewer.css");
|
|
17
17
|
const DiffViewer = _ref => {
|
|
18
18
|
let {
|
|
19
19
|
currentContent,
|
|
@@ -11,11 +11,11 @@ var _jsBridge = _interopRequireDefault(require("../../android/js-bridge"));
|
|
|
11
11
|
var _outlineModule = require("../../android/outline-module");
|
|
12
12
|
var _context = _interopRequireDefault(require("../../context"));
|
|
13
13
|
var _hooks = require("../../hooks");
|
|
14
|
-
var _utils = require("../../utils");
|
|
15
14
|
var _extension = require("../extension");
|
|
16
15
|
var _useColorContext = require("../hooks/use-color-context");
|
|
17
16
|
var _layout = require("../layout");
|
|
18
17
|
var _nodeId = _interopRequireDefault(require("../node-id"));
|
|
18
|
+
var _documentUtils = require("../utils/document-utils");
|
|
19
19
|
var _readonlyArticle = _interopRequireDefault(require("./readonly-article"));
|
|
20
20
|
require("../assets/css/sdoc-viewer.css");
|
|
21
21
|
const SDocViewer = _ref => {
|
|
@@ -31,7 +31,7 @@ const SDocViewer = _ref => {
|
|
|
31
31
|
_context.default.initApi();
|
|
32
32
|
}
|
|
33
33
|
const validEditor = editor || (0, _nodeId.default)((0, _extension.createDefaultEditor)());
|
|
34
|
-
const slateValue = (document || (0,
|
|
34
|
+
const slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).elements;
|
|
35
35
|
const Provider = showComment ? _hooks.CollaboratorsProvider : _react.Fragment;
|
|
36
36
|
(0, _react.useEffect)(() => {
|
|
37
37
|
const mobileLogin = _context.default.getSetting('mobileLogin');
|
|
@@ -7,12 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _utils = require("../../utils");
|
|
11
10
|
var _extension = require("../extension");
|
|
12
11
|
var _useColorContext = require("../hooks/use-color-context");
|
|
13
12
|
var _useScrollContext = require("../hooks/use-scroll-context");
|
|
14
13
|
var _layout = require("../layout");
|
|
15
14
|
var _nodeId = _interopRequireDefault(require("../node-id"));
|
|
15
|
+
var _documentUtils = require("../utils/document-utils");
|
|
16
16
|
var _wikiOutline = _interopRequireDefault(require("../wiki-outline"));
|
|
17
17
|
var _readonlyArticle = _interopRequireDefault(require("./readonly-article"));
|
|
18
18
|
require("../assets/css/sdoc-wiki-viewer.css");
|
|
@@ -25,7 +25,7 @@ const SDocMdViewer = _ref => {
|
|
|
25
25
|
scrollRef: propsScrollRef
|
|
26
26
|
} = _ref;
|
|
27
27
|
const validEditor = editor || (0, _nodeId.default)((0, _extension.createDefaultEditor)());
|
|
28
|
-
const slateValue = (document || (0,
|
|
28
|
+
const slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).children;
|
|
29
29
|
const scrollRef = (0, _react.useRef)(null);
|
|
30
30
|
const currentScrollRef = propsScrollRef || scrollRef;
|
|
31
31
|
return /*#__PURE__*/_react.default.createElement(_layout.EditorContainer, {
|
|
@@ -14,10 +14,10 @@ var _printJs = _interopRequireDefault(require("@seafile/print-js"));
|
|
|
14
14
|
var _basicSdk = require("../../basic-sdk");
|
|
15
15
|
var _constants = require("../../basic-sdk/constants");
|
|
16
16
|
var _menuShortcutIndicator = _interopRequireDefault(require("../../basic-sdk/extension/commons/menu-shortcut-indicator"));
|
|
17
|
+
var _localStorageUtils = _interopRequireDefault(require("../../basic-sdk/utils/local-storage-utils"));
|
|
17
18
|
var _constants2 = require("../../constants");
|
|
18
19
|
var _context = _interopRequireDefault(require("../../context"));
|
|
19
20
|
var _utils = require("../../utils");
|
|
20
|
-
var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
|
|
21
21
|
var _tooltip = _interopRequireDefault(require("../tooltip"));
|
|
22
22
|
const MoreOperations = _ref => {
|
|
23
23
|
let {
|