@seafile/sdoc-editor 2.0.75 → 2.0.77
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/components/comment-context-menu/index.css +1 -1
- package/dist/basic-sdk/comment/components/comment-editor.js +1 -1
- package/dist/basic-sdk/comment/components/comment-item-content.js +1 -1
- package/dist/basic-sdk/comment/components/comment-item-reply.js +1 -1
- package/dist/basic-sdk/comment/components/comment-item-wrapper.js +1 -1
- package/dist/basic-sdk/comment/components/comment-list.js +1 -1
- package/dist/basic-sdk/comment/components/comment-participants-editor/index.js +2 -2
- package/dist/basic-sdk/comment/components/global-comment/global-comment-header.js +5 -6
- package/dist/basic-sdk/comment/components/global-comment/index.js +3 -3
- package/dist/basic-sdk/comment/helper.js +1 -1
- package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-mount.js +3 -3
- package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +10 -11
- package/dist/basic-sdk/comment/index.js +1 -1
- package/dist/basic-sdk/comment/provider/participants-content-provider.js +5 -5
- package/dist/basic-sdk/comment/reducer/notification-reducer.js +10 -11
- package/dist/basic-sdk/comment/utils/notification-utils.js +1 -1
- package/dist/basic-sdk/constants/index.js +16 -1
- package/dist/{context.js → basic-sdk/context.js} +1 -2
- package/dist/basic-sdk/editor/revision-editor.js +1 -1
- package/dist/basic-sdk/editor/sdoc-comment-editor.js +5 -16
- package/dist/basic-sdk/editor/sdoc-editor.js +6 -7
- package/dist/basic-sdk/editor/wiki-editor.js +5 -6
- package/dist/basic-sdk/extension/commons/file-insert-dialog/index.js +7 -8
- package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +2 -2
- package/dist/basic-sdk/extension/commons/select-file-dialog/helpers.js +1 -1
- package/dist/basic-sdk/extension/commons/select-file-dialog/index.js +1 -1
- package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/ai/ai-menu/style.css +1 -1
- package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/file-link/helpers.js +1 -1
- package/dist/basic-sdk/extension/plugins/font/helpers.js +1 -1
- package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/helpers.js +18 -5
- package/dist/basic-sdk/extension/plugins/image/plugin.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/render-elem.js +9 -10
- package/dist/basic-sdk/extension/plugins/image/use-copy-image.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +1 -1
- package/dist/basic-sdk/extension/plugins/link/plugin.js +1 -1
- package/dist/basic-sdk/extension/plugins/mention/helper.js +1 -1
- package/dist/basic-sdk/extension/plugins/mention/render-elem/participant-popover.js +2 -2
- package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +1 -1
- package/dist/basic-sdk/extension/plugins/search-replace/popover/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +1 -1
- package/dist/basic-sdk/extension/plugins/video/helpers.js +1 -1
- package/dist/basic-sdk/extension/plugins/wiki-link/helpers.js +1 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +1 -1
- package/dist/{hooks → basic-sdk/hooks}/use-plugins.js +3 -3
- package/dist/basic-sdk/index.js +33 -0
- package/dist/basic-sdk/layout/editor-content.js +2 -2
- package/dist/basic-sdk/model/index.js +20 -0
- package/dist/{model → basic-sdk/model}/notification.js +1 -1
- package/dist/basic-sdk/outline/index.js +1 -1
- package/dist/basic-sdk/right-panel/index.js +2 -2
- package/dist/basic-sdk/socket/socket-manager.js +10 -10
- package/dist/basic-sdk/utils/document-utils.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 +5 -4
- package/dist/components/doc-info/index.js +8 -9
- package/dist/components/doc-operations/collaborators-operation/index.js +2 -3
- package/dist/components/doc-operations/index.js +2 -3
- package/dist/components/doc-operations/more-operations.js +8 -9
- package/dist/components/doc-operations/plugins-operations.js +1 -2
- package/dist/components/doc-operations/revision-operations/index.js +32 -32
- package/dist/components/doc-operations/revision-operations/more-revision-operations/index.js +4 -6
- package/dist/components/doc-operations/revision-operations/revisions/index.js +2 -3
- package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js +4 -5
- package/dist/constants/index.js +12 -21
- package/dist/hooks/index.js +1 -27
- package/dist/hooks/use-document.js +4 -5
- package/dist/layout/layout.js +5 -5
- package/dist/model/index.js +1 -15
- package/dist/pages/error-page.js +2 -3
- package/dist/pages/published-revision-viewer.js +2 -3
- package/dist/pages/sdoc-wiki-editor.js +4 -4
- package/dist/pages/simple-editor.js +11 -12
- package/dist/pages/simple-viewer.js +3 -4
- package/dist/pages/wiki-viewer.js +1 -2
- package/dist/plugin-module/editor/plugin-editor.js +3 -5
- package/dist/plugin-module/error-boundary/error-page.js +2 -3
- package/dist/plugin-module/gloable-ui/insert-element-dialog.js +1 -2
- package/dist/plugin-module/index.js +5 -6
- package/dist/plugin-module/plugins/chart/chart-edit-dialog/index.js +3 -3
- package/dist/plugin-module/plugins/chart/render-elem.js +2 -2
- package/dist/plugin-module/plugins/seatable-column/helpers.js +1 -10
- package/dist/plugin-module/views/plugin-viewer.js +5 -6
- package/dist/utils/index.js +3 -3
- package/package.json +1 -1
- package/dist/pages/document-plugin-editor.js +0 -111
- /package/dist/{api → basic-sdk/api}/sdoc-server-api.js +0 -0
- /package/dist/{api → basic-sdk/api}/seafile-api.js +0 -0
- /package/dist/{hooks → basic-sdk/hooks}/use-collaborators.js +0 -0
- /package/dist/{model → basic-sdk/model}/user.js +0 -0
|
@@ -7,12 +7,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _context = _interopRequireDefault(require("../../context"));
|
|
11
|
-
var _hooks = require("../../hooks");
|
|
12
10
|
var _jsBridge = _interopRequireDefault(require("../android/js-bridge"));
|
|
13
11
|
var _outlineModule = require("../android/outline-module");
|
|
12
|
+
var _context = _interopRequireDefault(require("../context"));
|
|
14
13
|
var _extension = require("../extension");
|
|
14
|
+
var _useCollaborators = require("../hooks/use-collaborators");
|
|
15
15
|
var _useColorContext = require("../hooks/use-color-context");
|
|
16
|
+
var _usePlugins = require("../hooks/use-plugins");
|
|
16
17
|
var _layout = require("../layout");
|
|
17
18
|
var _nodeId = _interopRequireDefault(require("../node-id"));
|
|
18
19
|
var _documentUtils = require("../utils/document-utils");
|
|
@@ -32,7 +33,7 @@ const SDocViewer = _ref => {
|
|
|
32
33
|
}
|
|
33
34
|
const validEditor = editor || (0, _nodeId.default)((0, _extension.createDefaultEditor)());
|
|
34
35
|
const slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).elements;
|
|
35
|
-
const Provider = showComment ?
|
|
36
|
+
const Provider = showComment ? _useCollaborators.CollaboratorsProvider : _react.Fragment;
|
|
36
37
|
(0, _react.useEffect)(() => {
|
|
37
38
|
const mobileLogin = _context.default.getSetting('mobileLogin');
|
|
38
39
|
if (mobileLogin) {
|
|
@@ -45,7 +46,7 @@ const SDocViewer = _ref => {
|
|
|
45
46
|
};
|
|
46
47
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
47
48
|
}, []);
|
|
48
|
-
return /*#__PURE__*/_react.default.createElement(Provider, null, /*#__PURE__*/_react.default.createElement(
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(Provider, null, /*#__PURE__*/_react.default.createElement(_usePlugins.PluginsProvider, {
|
|
49
50
|
plugins: plugins,
|
|
50
51
|
showComment: showComment
|
|
51
52
|
}, /*#__PURE__*/_react.default.createElement(_layout.EditorContainer, {
|
|
@@ -12,7 +12,6 @@ var _revisionAvatar = _interopRequireDefault(require("../../assets/images/revisi
|
|
|
12
12
|
var _basicSdk = require("../../basic-sdk");
|
|
13
13
|
var _sdocFreezed = _interopRequireDefault(require("../../basic-sdk/assets/images/sdoc-freezed.png"));
|
|
14
14
|
var _constants = require("../../constants");
|
|
15
|
-
var _context = _interopRequireDefault(require("../../context"));
|
|
16
15
|
var _utils = require("../../utils");
|
|
17
16
|
var _draftDropdown = _interopRequireDefault(require("../draft-dropdown"));
|
|
18
17
|
var _tipMessage = _interopRequireDefault(require("../tip-message"));
|
|
@@ -26,15 +25,15 @@ const DocInfo = _ref => {
|
|
|
26
25
|
isPublished = false,
|
|
27
26
|
initContext = false
|
|
28
27
|
} = _ref;
|
|
29
|
-
initContext &&
|
|
30
|
-
const isSdocRevision =
|
|
31
|
-
const docName =
|
|
28
|
+
initContext && _basicSdk.context.initApi();
|
|
29
|
+
const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision');
|
|
30
|
+
const docName = _basicSdk.context.getSetting('docName');
|
|
32
31
|
const {
|
|
33
32
|
isShowInternalLink,
|
|
34
33
|
isStarIconShown,
|
|
35
34
|
isFreezed,
|
|
36
35
|
mobileLogin
|
|
37
|
-
} =
|
|
36
|
+
} = _basicSdk.context.getSettings();
|
|
38
37
|
const onInternalLinkClick = (0, _react.useCallback)(() => {
|
|
39
38
|
const eventBus = _basicSdk.EventBus.getInstance();
|
|
40
39
|
if (isSdocRevision) {
|
|
@@ -50,7 +49,7 @@ const DocInfo = _ref => {
|
|
|
50
49
|
eventBus.dispatch(_constants.EXTERNAL_EVENT.TOGGLE_STAR);
|
|
51
50
|
}, []);
|
|
52
51
|
const jumpToSourceDoc = (0, _react.useCallback)(() => {
|
|
53
|
-
const originFileURL =
|
|
52
|
+
const originFileURL = _basicSdk.context.getSetting('originFileURL');
|
|
54
53
|
window.open(originFileURL, '_blank');
|
|
55
54
|
}, []);
|
|
56
55
|
const docInfo = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isDraft && /*#__PURE__*/_react.default.createElement(_draftDropdown.default, null), isStarIconShown && !mobileLogin && /*#__PURE__*/_react.default.createElement("button", {
|
|
@@ -81,9 +80,9 @@ const DocInfo = _ref => {
|
|
|
81
80
|
className: "doc-name"
|
|
82
81
|
}, docName), docInfo);
|
|
83
82
|
}
|
|
84
|
-
const revisionCreatedAt =
|
|
85
|
-
const oldDocName =
|
|
86
|
-
const revisionId =
|
|
83
|
+
const revisionCreatedAt = _basicSdk.context.getSetting('revisionCreatedAt');
|
|
84
|
+
const oldDocName = _basicSdk.context.getSetting('originFilename');
|
|
85
|
+
const revisionId = _basicSdk.context.getSetting('revisionId');
|
|
87
86
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
88
87
|
className: "sdoc-revision-info doc-info"
|
|
89
88
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -9,7 +9,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/es
|
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
11
|
var _basicSdk = require("../../../basic-sdk");
|
|
12
|
-
var _context = _interopRequireDefault(require("../../../context"));
|
|
13
12
|
var _collaboratorsPopover = _interopRequireDefault(require("./collaborators-popover"));
|
|
14
13
|
class CollaboratorsOperation extends _react.default.PureComponent {
|
|
15
14
|
constructor(props) {
|
|
@@ -39,14 +38,14 @@ class CollaboratorsOperation extends _react.default.PureComponent {
|
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
40
|
});
|
|
42
|
-
const _userInfo =
|
|
41
|
+
const _userInfo = _basicSdk.context.getUserInfo();
|
|
43
42
|
this.state = {
|
|
44
43
|
collaborators: [_userInfo]
|
|
45
44
|
};
|
|
46
45
|
this.currentUser = _userInfo;
|
|
47
46
|
}
|
|
48
47
|
componentDidMount() {
|
|
49
|
-
|
|
48
|
+
_basicSdk.context.getCollaborators().then(res => {
|
|
50
49
|
const {
|
|
51
50
|
collaborators
|
|
52
51
|
} = res.data;
|
|
@@ -8,7 +8,6 @@ exports.default = void 0;
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _reactI18next = require("react-i18next");
|
|
10
10
|
var _basicSdk = require("../../basic-sdk");
|
|
11
|
-
var _context = _interopRequireDefault(require("../../context"));
|
|
12
11
|
var _collaboratorsOperation = _interopRequireDefault(require("./collaborators-operation"));
|
|
13
12
|
var _moreOperations = _interopRequireDefault(require("./more-operations"));
|
|
14
13
|
var _pluginsOperations = _interopRequireDefault(require("./plugins-operations"));
|
|
@@ -26,8 +25,8 @@ const DocOperations = _ref => {
|
|
|
26
25
|
handleRevisionMerged,
|
|
27
26
|
handleRevisionPublished
|
|
28
27
|
} = _ref;
|
|
29
|
-
const isSdocRevision =
|
|
30
|
-
const mobileLogin =
|
|
28
|
+
const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision');
|
|
29
|
+
const mobileLogin = _basicSdk.context.getSetting('mobileLogin');
|
|
31
30
|
if (_basicSdk.isMobile) {
|
|
32
31
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
33
32
|
className: "doc-ops"
|
|
@@ -16,7 +16,6 @@ var _constants = require("../../basic-sdk/constants");
|
|
|
16
16
|
var _menuShortcutIndicator = _interopRequireDefault(require("../../basic-sdk/extension/commons/menu-shortcut-indicator"));
|
|
17
17
|
var _localStorageUtils = _interopRequireDefault(require("../../basic-sdk/utils/local-storage-utils"));
|
|
18
18
|
var _constants2 = require("../../constants");
|
|
19
|
-
var _context = _interopRequireDefault(require("../../context"));
|
|
20
19
|
const MoreOperations = _ref => {
|
|
21
20
|
let {
|
|
22
21
|
isStarred,
|
|
@@ -24,14 +23,14 @@ const MoreOperations = _ref => {
|
|
|
24
23
|
} = _ref;
|
|
25
24
|
const [isDropdownOpen, setIsDropdownOpen] = (0, _react.useState)(false);
|
|
26
25
|
const [isFullWidthMode, setIsFullWidthMode] = (0, _react.useState)(_localStorageUtils.default.getItem(_constants.FULL_WIDTH_MODE));
|
|
27
|
-
const parentFolderURL =
|
|
28
|
-
const isPro =
|
|
29
|
-
const isFreezed =
|
|
30
|
-
const docPerm =
|
|
31
|
-
const historyURL =
|
|
32
|
-
const isSdocRevision =
|
|
33
|
-
const mobileLogin =
|
|
34
|
-
const cssUrls =
|
|
26
|
+
const parentFolderURL = _basicSdk.context.getSetting('parentFolderURL');
|
|
27
|
+
const isPro = _basicSdk.context.getSetting('isPro');
|
|
28
|
+
const isFreezed = _basicSdk.context.getSetting('isFreezed');
|
|
29
|
+
const docPerm = _basicSdk.context.getSetting('docPerm');
|
|
30
|
+
const historyURL = _basicSdk.context.getSetting('historyURL');
|
|
31
|
+
const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision');
|
|
32
|
+
const mobileLogin = _basicSdk.context.getSetting('mobileLogin');
|
|
33
|
+
const cssUrls = _basicSdk.context.getPrintCss();
|
|
35
34
|
const id = 'sdoc_more_operation';
|
|
36
35
|
(0, _react.useEffect)(() => {
|
|
37
36
|
const eventBus = _basicSdk.EventBus.getInstance();
|
|
@@ -12,12 +12,11 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
12
12
|
var _basicSdk = require("../../basic-sdk");
|
|
13
13
|
var _constants = require("../../basic-sdk/constants");
|
|
14
14
|
var _mouseEvent = require("../../basic-sdk/utils/mouse-event");
|
|
15
|
-
var _hooks = require("../../hooks");
|
|
16
15
|
const PluginsOperations = () => {
|
|
17
16
|
const {
|
|
18
17
|
plugins,
|
|
19
18
|
updateDisplayPlugin
|
|
20
|
-
} = (0,
|
|
19
|
+
} = (0, _basicSdk.usePlugins)();
|
|
21
20
|
const {
|
|
22
21
|
t
|
|
23
22
|
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
@@ -9,9 +9,9 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
11
|
var _basicSdk = require("../../../basic-sdk");
|
|
12
|
+
var _constants = require("../../../basic-sdk/constants");
|
|
12
13
|
var _rebase = require("../../../basic-sdk/utils/rebase");
|
|
13
|
-
var
|
|
14
|
-
var _context = _interopRequireDefault(require("../../../context"));
|
|
14
|
+
var _constants2 = require("../../../constants");
|
|
15
15
|
var _hooks = require("../../../hooks");
|
|
16
16
|
var _tipDialog = _interopRequireDefault(require("../../tip-dialog"));
|
|
17
17
|
var _changesCount = _interopRequireDefault(require("./changes-count"));
|
|
@@ -28,7 +28,7 @@ const RevisionOperations = _ref => {
|
|
|
28
28
|
handleRevisionMerged,
|
|
29
29
|
handleRevisionPublished
|
|
30
30
|
} = _ref;
|
|
31
|
-
const isSdocRevision =
|
|
31
|
+
const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision');
|
|
32
32
|
const {
|
|
33
33
|
t
|
|
34
34
|
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
@@ -44,8 +44,8 @@ const RevisionOperations = _ref => {
|
|
|
44
44
|
if (isShowChanges) return;
|
|
45
45
|
if (isPublished) return;
|
|
46
46
|
const revisionPromise = loadDocument();
|
|
47
|
-
const baseVersionPromise =
|
|
48
|
-
const originVersionPromise =
|
|
47
|
+
const baseVersionPromise = _basicSdk.context.getRevisionBaseVersionContent();
|
|
48
|
+
const originVersionPromise = _basicSdk.context.getSeadocOriginFileContent();
|
|
49
49
|
Promise.all([revisionPromise, baseVersionPromise, originVersionPromise]).then(results => {
|
|
50
50
|
const [revisionContent, baseRes, masterRes] = results;
|
|
51
51
|
const baseContent = JSON.parse(baseRes.data.content);
|
|
@@ -58,7 +58,7 @@ const RevisionOperations = _ref => {
|
|
|
58
58
|
value
|
|
59
59
|
} = (0, _rebase.getRebase)(masterContent, baseContent, revisionContent);
|
|
60
60
|
setMergeValue(value);
|
|
61
|
-
setTipType(
|
|
61
|
+
setTipType(_constants2.TIP_TYPE.SOURCE_DOCUMENT_CHANGED);
|
|
62
62
|
}).catch(error => {
|
|
63
63
|
if (typeof error === 'string') {
|
|
64
64
|
_basicSdk.toaster.danger(t(error));
|
|
@@ -72,16 +72,16 @@ const RevisionOperations = _ref => {
|
|
|
72
72
|
}, []);
|
|
73
73
|
const onDocumentReplaced = (0, _react.useCallback)(() => {
|
|
74
74
|
if (isShowTip) return;
|
|
75
|
-
setTipType(
|
|
75
|
+
setTipType(_constants2.TIP_TYPE.HAS_BEEN_REPLACED);
|
|
76
76
|
setShowTip(true);
|
|
77
77
|
}, [isShowTip]);
|
|
78
78
|
const hasPublishRevision = (0, _react.useCallback)(() => {
|
|
79
79
|
handleRevisionPublished();
|
|
80
|
-
_basicSdk.toaster.success(t(
|
|
80
|
+
_basicSdk.toaster.success(t(_constants2.TIP_CONTENT[_constants2.TIP_TYPE.HAS_BEEN_PUBLISHED]));
|
|
81
81
|
}, [handleRevisionPublished, t]);
|
|
82
82
|
const onDocumentRemoved = (0, _react.useCallback)(() => {
|
|
83
83
|
if (isShowTip) return;
|
|
84
|
-
setTipType(
|
|
84
|
+
setTipType(_constants2.TIP_TYPE.HAS_BEEN_REMOVED);
|
|
85
85
|
setShowTip(true);
|
|
86
86
|
}, [isShowTip]);
|
|
87
87
|
const onError = (0, _react.useCallback)(() => {
|
|
@@ -91,12 +91,12 @@ const RevisionOperations = _ref => {
|
|
|
91
91
|
}, []);
|
|
92
92
|
(0, _react.useEffect)(() => {
|
|
93
93
|
const eventBus = _basicSdk.EventBus.getInstance();
|
|
94
|
-
const unsubscribeMergeDocument = eventBus.subscribe(_constants.
|
|
95
|
-
const unsubscribeMergeDocumentError = eventBus.subscribe(_constants.
|
|
96
|
-
const unsubscribePublishDocument = eventBus.subscribe(_constants.
|
|
97
|
-
const unsubscribePublishDocumentError = eventBus.subscribe(_constants.
|
|
98
|
-
const unsubscribeRemoveDocument = eventBus.subscribe(_constants.
|
|
99
|
-
const unsubscribeRemoveDocumentError = eventBus.subscribe(_constants.
|
|
94
|
+
const unsubscribeMergeDocument = eventBus.subscribe(_constants.INTERNAL_EVENT.DOCUMENT_REPLACED, onDocumentReplaced);
|
|
95
|
+
const unsubscribeMergeDocumentError = eventBus.subscribe(_constants.INTERNAL_EVENT.DOCUMENT_REPLACED_ERROR, onError);
|
|
96
|
+
const unsubscribePublishDocument = eventBus.subscribe(_constants.INTERNAL_EVENT.PUBLISH_DOCUMENT, hasPublishRevision);
|
|
97
|
+
const unsubscribePublishDocumentError = eventBus.subscribe(_constants.INTERNAL_EVENT.PUBLISH_DOCUMENT_ERROR, onError);
|
|
98
|
+
const unsubscribeRemoveDocument = eventBus.subscribe(_constants.INTERNAL_EVENT.REMOVE_DOCUMENT, onDocumentRemoved);
|
|
99
|
+
const unsubscribeRemoveDocumentError = eventBus.subscribe(_constants.INTERNAL_EVENT.REMOVE_DOCUMENT_ERROR, onError);
|
|
100
100
|
return () => {
|
|
101
101
|
unsubscribeMergeDocument();
|
|
102
102
|
unsubscribeMergeDocumentError();
|
|
@@ -118,7 +118,7 @@ const RevisionOperations = _ref => {
|
|
|
118
118
|
loadDocument().then(revisionContent => {
|
|
119
119
|
// Prevent users from switching if document contains conflicting content
|
|
120
120
|
if ((0, _rebase.hasConflict)(revisionContent.elements)) {
|
|
121
|
-
setTipType(
|
|
121
|
+
setTipType(_constants2.TIP_TYPE.HAS_CONFLICT_BEFORE_VIEW_CHANGES);
|
|
122
122
|
setShowTip(true);
|
|
123
123
|
} else {
|
|
124
124
|
handleViewChangesToggle(isShowChanges);
|
|
@@ -137,16 +137,16 @@ const RevisionOperations = _ref => {
|
|
|
137
137
|
// publish revision
|
|
138
138
|
const publishRevision = (0, _react.useCallback)(() => {
|
|
139
139
|
setShowTip(true);
|
|
140
|
-
setTipType(
|
|
140
|
+
setTipType(_constants2.TIP_TYPE.CHECKING);
|
|
141
141
|
const revisionPromise = loadDocument();
|
|
142
|
-
const baseVersionPromise =
|
|
143
|
-
const originVersionPromise =
|
|
142
|
+
const baseVersionPromise = _basicSdk.context.getRevisionBaseVersionContent();
|
|
143
|
+
const originVersionPromise = _basicSdk.context.getSeadocOriginFileContent();
|
|
144
144
|
Promise.all([revisionPromise, baseVersionPromise, originVersionPromise]).then(results => {
|
|
145
145
|
const [revisionContent, baseRes, masterRes] = results;
|
|
146
146
|
const baseContent = JSON.parse(baseRes.data.content);
|
|
147
147
|
const masterContent = JSON.parse(masterRes.data.content);
|
|
148
148
|
if ((0, _rebase.hasConflict)(revisionContent.elements)) {
|
|
149
|
-
setTipType(
|
|
149
|
+
setTipType(_constants2.TIP_TYPE.HAS_CONFLICT_BEFORE_PUBLISH);
|
|
150
150
|
return;
|
|
151
151
|
}
|
|
152
152
|
const {
|
|
@@ -156,8 +156,8 @@ const RevisionOperations = _ref => {
|
|
|
156
156
|
} = (0, _rebase.getRebase)(masterContent, baseContent, revisionContent);
|
|
157
157
|
// change to HAS_BEEN_PUBLISHED
|
|
158
158
|
if (canMerge && isNeedReplaceMaster) {
|
|
159
|
-
setTipType(
|
|
160
|
-
|
|
159
|
+
setTipType(_constants2.TIP_TYPE.PUBLISHING);
|
|
160
|
+
_basicSdk.context.publishRevision().then(res => {
|
|
161
161
|
setShowTip(false);
|
|
162
162
|
setTipType('');
|
|
163
163
|
}).catch(error => {
|
|
@@ -168,13 +168,13 @@ const RevisionOperations = _ref => {
|
|
|
168
168
|
|
|
169
169
|
// change to DELETE_NO_CHANGES_REVISION
|
|
170
170
|
if (canMerge && !isNeedReplaceMaster) {
|
|
171
|
-
setTipType(
|
|
171
|
+
setTipType(_constants2.TIP_TYPE.DELETE_NO_CHANGES_REVISION);
|
|
172
172
|
return;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
// change to MERGE
|
|
176
176
|
setMergeValue(value);
|
|
177
|
-
setTipType(
|
|
177
|
+
setTipType(_constants2.TIP_TYPE.MERGE);
|
|
178
178
|
}).catch(error => {
|
|
179
179
|
if (typeof error === 'string') {
|
|
180
180
|
_basicSdk.toaster.danger(t(error));
|
|
@@ -186,35 +186,35 @@ const RevisionOperations = _ref => {
|
|
|
186
186
|
|
|
187
187
|
// confirm publish
|
|
188
188
|
const onSubmit = (0, _react.useCallback)(() => {
|
|
189
|
-
if (tipType ===
|
|
189
|
+
if (tipType === _constants2.TIP_TYPE.HAS_BEEN_PUBLISHED) {
|
|
190
190
|
// nothing todo
|
|
191
191
|
return;
|
|
192
192
|
}
|
|
193
|
-
if (tipType ===
|
|
194
|
-
|
|
193
|
+
if (tipType === _constants2.TIP_TYPE.DELETE_NO_CHANGES_REVISION) {
|
|
194
|
+
_basicSdk.context.deleteSdocRevision().then(res => {
|
|
195
195
|
// update current location
|
|
196
|
-
const originFileURL =
|
|
196
|
+
const originFileURL = _basicSdk.context.getSetting('originFileURL');
|
|
197
197
|
window.location.href = originFileURL;
|
|
198
198
|
}).catch(error => {
|
|
199
199
|
_basicSdk.toaster.danger(t('Error'));
|
|
200
200
|
});
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
|
-
if (tipType ===
|
|
203
|
+
if (tipType === _constants2.TIP_TYPE.MERGE || tipType === _constants2.TIP_TYPE.SOURCE_DOCUMENT_CHANGED) {
|
|
204
204
|
const {
|
|
205
205
|
username
|
|
206
|
-
} =
|
|
206
|
+
} = _basicSdk.context.getUserInfo();
|
|
207
207
|
const doc = {
|
|
208
208
|
elements: mergeValue.elements,
|
|
209
209
|
version: mergeValue.version,
|
|
210
210
|
format_version: mergeValue.format_version,
|
|
211
211
|
last_modify_user: username
|
|
212
212
|
};
|
|
213
|
-
|
|
213
|
+
_basicSdk.context.updateSdocRevision(doc).then(res => {
|
|
214
214
|
const {
|
|
215
215
|
origin_file_version
|
|
216
216
|
} = res.data;
|
|
217
|
-
|
|
217
|
+
_basicSdk.context.updateSettings({
|
|
218
218
|
'originFileVersion': origin_file_version
|
|
219
219
|
});
|
|
220
220
|
handleRevisionMerged && handleRevisionMerged(mergeValue);
|
package/dist/components/doc-operations/revision-operations/more-revision-operations/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
@@ -11,7 +10,6 @@ var _reactI18next = require("react-i18next");
|
|
|
11
10
|
var _reactstrap = require("reactstrap");
|
|
12
11
|
var _basicSdk = require("../../../../basic-sdk");
|
|
13
12
|
var _constants = require("../../../../constants");
|
|
14
|
-
var _context = _interopRequireDefault(require("../../../../context"));
|
|
15
13
|
require("./index.css");
|
|
16
14
|
const MoreRevisionOperations = _ref => {
|
|
17
15
|
let {
|
|
@@ -24,12 +22,12 @@ const MoreRevisionOperations = _ref => {
|
|
|
24
22
|
setIsDropdownOpen(!isDropdownOpen);
|
|
25
23
|
}, []);
|
|
26
24
|
const startRevise = (0, _react.useCallback)(() => {
|
|
27
|
-
|
|
28
|
-
const repoID =
|
|
29
|
-
const siteRoot =
|
|
25
|
+
_basicSdk.context.startRevise().then(res => {
|
|
26
|
+
const repoID = _basicSdk.context.getSetting('repoID');
|
|
27
|
+
const siteRoot = _basicSdk.context.getSetting('siteRoot');
|
|
30
28
|
const revisionURL = `${siteRoot}lib/${repoID}/revisions/${res.data.revision_id}/`;
|
|
31
29
|
window.open(revisionURL, '_blank');
|
|
32
|
-
eventBus.dispatch(_constants.
|
|
30
|
+
eventBus.dispatch(_constants.NEW_REVISION);
|
|
33
31
|
}).catch(error => {
|
|
34
32
|
_basicSdk.toaster.danger(t('Error'));
|
|
35
33
|
});
|
|
@@ -10,7 +10,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
11
|
var _basicSdk = require("../../../../basic-sdk");
|
|
12
12
|
var _constants = require("../../../../constants");
|
|
13
|
-
var _context = _interopRequireDefault(require("../../../../context"));
|
|
14
13
|
var _utils = require("../../../../utils");
|
|
15
14
|
var _revisionsDialog = _interopRequireDefault(require("./revisions-dialog"));
|
|
16
15
|
require("./index.css");
|
|
@@ -27,7 +26,7 @@ const Revisions = () => {
|
|
|
27
26
|
|
|
28
27
|
// did mount
|
|
29
28
|
(0, _react.useEffect)(() => {
|
|
30
|
-
|
|
29
|
+
_basicSdk.context.getSdocRevisionsCount().then(res => {
|
|
31
30
|
const count = res.data.count;
|
|
32
31
|
setRevisionsCount(count);
|
|
33
32
|
}).catch(error => {
|
|
@@ -38,7 +37,7 @@ const Revisions = () => {
|
|
|
38
37
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
39
38
|
}, []);
|
|
40
39
|
(0, _react.useEffect)(() => {
|
|
41
|
-
const autoIncrementRevisionSubscribe = eventBus.subscribe(_constants.
|
|
40
|
+
const autoIncrementRevisionSubscribe = eventBus.subscribe(_constants.NEW_REVISION, autoIncrementRevisionsCount);
|
|
42
41
|
return () => {
|
|
43
42
|
autoIncrementRevisionSubscribe();
|
|
44
43
|
};
|
package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js
CHANGED
|
@@ -13,7 +13,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
13
13
|
var _basicSdk = require("../../../../../basic-sdk");
|
|
14
14
|
var _mouseEvent = require("../../../../../basic-sdk/utils/mouse-event");
|
|
15
15
|
var _constants = require("../../../../../constants");
|
|
16
|
-
var _context = _interopRequireDefault(require("../../../../../context"));
|
|
17
16
|
var _model = require("../../../../../model");
|
|
18
17
|
var _utils = require("../../../../../utils");
|
|
19
18
|
var _modalHeader = _interopRequireDefault(require("../../../../modal-header"));
|
|
@@ -36,8 +35,8 @@ const RevisionsDialog = _ref => {
|
|
|
36
35
|
const [errorMessage, setErrorMessage] = (0, _react.useState)('');
|
|
37
36
|
const [hasMore, setHasMore] = (0, _react.useState)(true);
|
|
38
37
|
const perPage = 25;
|
|
39
|
-
const repoID =
|
|
40
|
-
const siteRoot =
|
|
38
|
+
const repoID = _basicSdk.context.getSetting('repoID');
|
|
39
|
+
const siteRoot = _basicSdk.context.getSetting('siteRoot');
|
|
41
40
|
const [activeRevisionId, setActiveRevision] = (0, _react.useState)('');
|
|
42
41
|
const [operatingRevisionId, setOperatingRevision] = (0, _react.useState)('');
|
|
43
42
|
const [showDeleteTipDialog, setShowDeleteTipDialog] = (0, _react.useState)(false);
|
|
@@ -49,7 +48,7 @@ const RevisionsDialog = _ref => {
|
|
|
49
48
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
49
|
}, []);
|
|
51
50
|
const listRevisions = (0, _react.useCallback)(() => {
|
|
52
|
-
|
|
51
|
+
_basicSdk.context.getSdocRevisions(page, perPage).then(res => {
|
|
53
52
|
const addedRevisions = res.data.revisions.map(revision => new _model.Revision(revision));
|
|
54
53
|
setLoading(false);
|
|
55
54
|
updateRevisionsCount(res.data.count);
|
|
@@ -113,7 +112,7 @@ const RevisionsDialog = _ref => {
|
|
|
113
112
|
return;
|
|
114
113
|
}
|
|
115
114
|
const revision = revisions[revisionIndex];
|
|
116
|
-
|
|
115
|
+
_basicSdk.context.deleteSdocOtherRevision(revision.id).then(res => {
|
|
117
116
|
const newRevisions = revisions.slice(0);
|
|
118
117
|
newRevisions.splice(revisionIndex, 1);
|
|
119
118
|
updateRevisionsCount(newRevisions.length);
|
package/dist/constants/index.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TIP_TYPE = exports.TIP_TITLE = exports.TIP_CONTENT = exports.EXTERNAL_EVENT = void 0;
|
|
6
|
+
exports.TIP_TYPE = exports.TIP_TITLE = exports.TIP_CONTENT = exports.NEW_REVISION = exports.EXTERNAL_EVENT = void 0;
|
|
7
|
+
var _constants = require("../basic-sdk/constants");
|
|
7
8
|
const EXTERNAL_EVENT = exports.EXTERNAL_EVENT = {
|
|
8
9
|
INTERNAL_LINK_CLICK: 'internal_link_click',
|
|
9
10
|
TOGGLE_STAR: 'toggle_star',
|
|
@@ -11,30 +12,20 @@ const EXTERNAL_EVENT = exports.EXTERNAL_EVENT = {
|
|
|
11
12
|
SHARE_SDOC: 'share_sdoc',
|
|
12
13
|
FREEZE_DOCUMENT: 'freeze_document',
|
|
13
14
|
UNFREEZE: 'unfreeze',
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
REMOVE_DOCUMENT: 'remove_document',
|
|
20
|
-
REMOVE_DOCUMENT_ERROR: 'remove_document_error',
|
|
21
|
-
NEW_NOTIFICATION: 'new_notification',
|
|
22
|
-
CLEAR_NOTIFICATION: 'clear_notification',
|
|
23
|
-
PARTICIPANT_ADDED: 'participant-added',
|
|
24
|
-
PARTICIPANT_REMOVED: 'participant-removed',
|
|
25
|
-
CREATE_SDOC_FILE: 'create_sdoc_file',
|
|
26
|
-
CREATE_WIKI_PAGE: 'create_wiki_page',
|
|
27
|
-
ADD_VIDEO_LINK: 'add_video_link',
|
|
28
|
-
CHANGE_HEADER_WIDTH: 'change_header_width',
|
|
29
|
-
TOGGLE_PRESENTATION_MODE: 'toggle_presentation_mode',
|
|
15
|
+
// change internal event to external event
|
|
16
|
+
// editor
|
|
17
|
+
REFRESH_DOCUMENT: _constants.INTERNAL_EVENT.REFRESH_DOCUMENT,
|
|
18
|
+
NEW_NOTIFICATION: _constants.INTERNAL_EVENT.NEW_NOTIFICATION,
|
|
19
|
+
CLEAR_NOTIFICATION: _constants.INTERNAL_EVENT.CLEAR_NOTIFICATION,
|
|
30
20
|
// wiki
|
|
31
|
-
|
|
21
|
+
CREATE_SDOC_FILE: _constants.INTERNAL_EVENT.CREATE_SDOC_FILE,
|
|
22
|
+
CREATE_WIKI_PAGE: _constants.INTERNAL_EVENT.CREATE_WIKI_PAGE,
|
|
32
23
|
// document
|
|
24
|
+
IMAGE_COLUMN_TOGGLE: _constants.INTERNAL_EVENT.IMAGE_COLUMN_TOGGLE,
|
|
33
25
|
COLLABORATORS_UPDATED: 'collaborators_updated',
|
|
34
|
-
|
|
35
|
-
// revise
|
|
36
|
-
NEW_REVISION: 'new_revision'
|
|
26
|
+
CHANGE_HEADER_WIDTH: 'change_header_width'
|
|
37
27
|
};
|
|
28
|
+
const NEW_REVISION = exports.NEW_REVISION = 'new_revision';
|
|
38
29
|
const TIP_TYPE = exports.TIP_TYPE = {
|
|
39
30
|
DELETE_NO_CHANGES_REVISION: 'delete_no_changes_revision',
|
|
40
31
|
MERGE: 'merge',
|
package/dist/hooks/index.js
CHANGED
|
@@ -3,36 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "CollaboratorsProvider", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _useCollaborators.CollaboratorsProvider;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "PluginsProvider", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _usePlugins.PluginsProvider;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "useCollaborators", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _useCollaborators.useCollaborators;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
6
|
Object.defineProperty(exports, "useDocument", {
|
|
25
7
|
enumerable: true,
|
|
26
8
|
get: function () {
|
|
27
9
|
return _useDocument.useDocument;
|
|
28
10
|
}
|
|
29
11
|
});
|
|
30
|
-
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _usePlugins.usePlugins;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
var _useCollaborators = require("./use-collaborators");
|
|
37
|
-
var _useDocument = require("./use-document");
|
|
38
|
-
var _usePlugins = require("./use-plugins");
|
|
12
|
+
var _useDocument = require("./use-document");
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.useDocument = void 0;
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
var
|
|
8
|
+
var _basicSdk = require("../basic-sdk");
|
|
10
9
|
const useDocument = function () {
|
|
11
10
|
let isInitData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
12
|
-
const isSdocRevision =
|
|
13
|
-
const isPublished =
|
|
11
|
+
const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision');
|
|
12
|
+
const isPublished = _basicSdk.context.getSetting('isPublished');
|
|
14
13
|
const [isFirstLoading, setIsFirstLoading] = (0, _react.useState)(true);
|
|
15
14
|
const [isReloading, setIsReloading] = (0, _react.useState)(false);
|
|
16
15
|
const [document, setDocument] = (0, _react.useState)({
|
|
@@ -21,7 +20,7 @@ const useDocument = function () {
|
|
|
21
20
|
const [errorMessage, setErrorMessage] = (0, _react.useState)('');
|
|
22
21
|
const loadDocument = (0, _react.useCallback)(() => {
|
|
23
22
|
return new Promise((resolve, reject) => {
|
|
24
|
-
|
|
23
|
+
_basicSdk.context.getFileContent().then(res => {
|
|
25
24
|
let result = res.data;
|
|
26
25
|
resolve(result);
|
|
27
26
|
}).catch(error => {
|
package/dist/layout/layout.js
CHANGED
|
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
|
+
var _basicSdk = require("../basic-sdk");
|
|
11
12
|
var _localStorageUtils = _interopRequireDefault(require("../basic-sdk/utils/local-storage-utils"));
|
|
12
|
-
var _context = _interopRequireDefault(require("../context"));
|
|
13
13
|
const Layout = _ref => {
|
|
14
14
|
let {
|
|
15
15
|
children,
|
|
@@ -17,12 +17,12 @@ const Layout = _ref => {
|
|
|
17
17
|
...restProps
|
|
18
18
|
} = _ref;
|
|
19
19
|
const cacheHistoryfiles = () => {
|
|
20
|
-
const isPublished =
|
|
21
|
-
const isSdocRevision =
|
|
20
|
+
const isPublished = _basicSdk.context.getSetting('isPublished') || false;
|
|
21
|
+
const isSdocRevision = _basicSdk.context.getSetting('isSdocRevision') || false;
|
|
22
22
|
if (isPublished) return;
|
|
23
23
|
if (isSdocRevision) return;
|
|
24
|
-
const docUuid =
|
|
25
|
-
const docName =
|
|
24
|
+
const docUuid = _basicSdk.context.getSetting('docUuid');
|
|
25
|
+
const docName = _basicSdk.context.getSetting('docName');
|
|
26
26
|
const rencentFiles = _localStorageUtils.default.getItem('sdoc-recent-files', []);
|
|
27
27
|
let arr = [];
|
|
28
28
|
const newFile = {
|
package/dist/model/index.js
CHANGED
|
@@ -4,24 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
Object.defineProperty(exports, "Notification", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: function () {
|
|
10
|
-
return _notification.default;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
7
|
Object.defineProperty(exports, "Revision", {
|
|
14
8
|
enumerable: true,
|
|
15
9
|
get: function () {
|
|
16
10
|
return _revision.default;
|
|
17
11
|
}
|
|
18
12
|
});
|
|
19
|
-
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () {
|
|
22
|
-
return _user.default;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var _notification = _interopRequireDefault(require("./notification"));
|
|
26
|
-
var _revision = _interopRequireDefault(require("./revision"));
|
|
27
|
-
var _user = _interopRequireDefault(require("./user"));
|
|
13
|
+
var _revision = _interopRequireDefault(require("./revision"));
|