@seafile/sdoc-editor 2.0.74 → 2.0.75-test-0.0.1
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/api/sdoc-server-api.js +24 -24
- package/dist/api/seafile-api.js +3 -3
- package/dist/basic-sdk/comment/comment-decorate.js +1 -1
- package/dist/basic-sdk/comment/components/comment-all-participants/participant-avatar.js +1 -1
- package/dist/basic-sdk/comment/components/comment-context-menu/index.css +1 -1
- package/dist/basic-sdk/comment/components/comment-delete-popover.js +1 -1
- package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +3 -3
- package/dist/basic-sdk/comment/components/comment-item-content.js +8 -8
- package/dist/basic-sdk/comment/components/comment-item-reply.js +1 -1
- package/dist/basic-sdk/comment/components/comment-item-wrapper.js +8 -9
- package/dist/basic-sdk/comment/components/comment-list.js +12 -13
- package/dist/basic-sdk/comment/components/editor-comment.js +5 -8
- package/dist/basic-sdk/comment/components/elements-comment-count/index.js +1 -1
- package/dist/basic-sdk/comment/components/global-comment/index.js +4 -4
- package/dist/basic-sdk/comment/helper.js +11 -11
- package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +1 -1
- package/dist/basic-sdk/comment/provider/notification-context-provider.js +3 -3
- package/dist/basic-sdk/comment/reducer/comment-reducer.js +24 -50
- package/dist/basic-sdk/comment/reducer/notification-reducer.js +7 -9
- package/dist/basic-sdk/comment/utils/index.js +2 -2
- package/dist/basic-sdk/comment/utils/notification-utils.js +3 -3
- package/dist/basic-sdk/components/toast/alert.js +1 -1
- package/dist/basic-sdk/components/toast/toast.js +1 -1
- package/dist/basic-sdk/components/toast/toastManager.js +10 -8
- package/dist/basic-sdk/components/toast/toaster.js +10 -13
- package/dist/basic-sdk/cursor/helper.js +4 -11
- package/dist/basic-sdk/editor/comment-article.js +4 -4
- package/dist/basic-sdk/editor/sdoc-comment-editor.js +4 -4
- package/dist/basic-sdk/editor/sdoc-editor.js +4 -4
- package/dist/basic-sdk/editor/wiki-editor.js +4 -4
- package/dist/basic-sdk/extension/commons/color-menu/index.js +5 -5
- package/dist/basic-sdk/extension/commons/file-insert-dialog/index.js +8 -9
- package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +1 -1
- package/dist/basic-sdk/extension/commons/menu-shortcut-indicator/index.js +1 -1
- package/dist/basic-sdk/extension/commons/select/_option.js +2 -2
- package/dist/basic-sdk/extension/commons/select/field-setting.js +6 -7
- package/dist/basic-sdk/extension/commons/select/index.js +3 -3
- package/dist/basic-sdk/extension/commons/select/menu/item.js +2 -2
- package/dist/basic-sdk/extension/commons/select-file-dialog/helpers.js +3 -3
- package/dist/basic-sdk/extension/commons/select-file-dialog/index.js +6 -8
- package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +2 -2
- package/dist/basic-sdk/extension/commons/wiki-file-insert-dialog/index.js +5 -5
- package/dist/basic-sdk/extension/constants/menus-config.js +13 -13
- package/dist/basic-sdk/extension/core/queries/index.js +35 -35
- package/dist/basic-sdk/extension/core/transforms/rebase.js +10 -13
- package/dist/basic-sdk/extension/core/transforms/remove-node-children.js +4 -3
- package/dist/basic-sdk/extension/core/transforms/replace-node.js +9 -10
- package/dist/basic-sdk/extension/core/transforms/update-parent-node.js +3 -3
- package/dist/basic-sdk/extension/core/utils/index.js +5 -4
- package/dist/basic-sdk/extension/plugins/ai/ai-menu/style.css +1 -1
- package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +10 -10
- package/dist/basic-sdk/extension/plugins/blockquote/helpers.js +3 -3
- package/dist/basic-sdk/extension/plugins/blockquote/menu/index.js +5 -4
- package/dist/basic-sdk/extension/plugins/callout/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/callout/render-elem/callout-color-selector/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/callout/render-elem/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/check-list/menu/index.js +5 -4
- package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +1 -1
- package/dist/basic-sdk/extension/plugins/clear-format/menu/index.js +6 -4
- package/dist/basic-sdk/extension/plugins/code-block/hover-menu/index.js +4 -4
- package/dist/basic-sdk/extension/plugins/code-block/plugin.js +3 -6
- package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +6 -6
- package/dist/basic-sdk/extension/plugins/file-link/hover-menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/file-link/render-elem.js +4 -7
- package/dist/basic-sdk/extension/plugins/font/helpers.js +5 -5
- package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/font/menu/font-size/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/header/menu/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/header/placeholder.js +1 -1
- package/dist/basic-sdk/extension/plugins/header/render-elem.js +16 -21
- package/dist/basic-sdk/extension/plugins/history/history-menu.js +9 -8
- package/dist/basic-sdk/extension/plugins/html/helper.js +2 -2
- package/dist/basic-sdk/extension/plugins/image/helpers.js +8 -10
- package/dist/basic-sdk/extension/plugins/image/hover-menu/index.js +5 -9
- package/dist/basic-sdk/extension/plugins/image/image-loader/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/menu/index.js +8 -8
- package/dist/basic-sdk/extension/plugins/image/plugin.js +2 -2
- package/dist/basic-sdk/extension/plugins/image/render-elem.js +11 -20
- package/dist/basic-sdk/extension/plugins/image/use-copy-image.js +4 -4
- package/dist/basic-sdk/extension/plugins/link/helpers.js +3 -3
- package/dist/basic-sdk/extension/plugins/link/hover/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/link/menu/index.js +6 -5
- package/dist/basic-sdk/extension/plugins/list/menu/index.js +5 -4
- package/dist/basic-sdk/extension/plugins/list/plugin/index.js +4 -3
- package/dist/basic-sdk/extension/plugins/list/plugin/on-tab-handle.js +3 -6
- package/dist/basic-sdk/extension/plugins/list/transforms/insert-list-item.js +3 -4
- package/dist/basic-sdk/extension/plugins/list/transforms/toggle-list.js +5 -6
- package/dist/basic-sdk/extension/plugins/markdown/plugin.js +7 -17
- package/dist/basic-sdk/extension/plugins/mention/plugin.js +5 -6
- package/dist/basic-sdk/extension/plugins/mention/render-elem/comment-participant-item.js +1 -1
- package/dist/basic-sdk/extension/plugins/mention/render-elem/participant-popover.js +2 -2
- package/dist/basic-sdk/extension/plugins/multi-column/helper.js +4 -4
- package/dist/basic-sdk/extension/plugins/multi-column/render/index.js +10 -14
- package/dist/basic-sdk/extension/plugins/multi-column/render/multi-column-root.js +3 -3
- package/dist/basic-sdk/extension/plugins/multi-column/render/render-column.js +1 -1
- package/dist/basic-sdk/extension/plugins/multi-column/resize-handlers/column-resize-handler.js +1 -1
- package/dist/basic-sdk/extension/plugins/multi-column/resize-handlers/index.js +8 -10
- package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +4 -4
- package/dist/basic-sdk/extension/plugins/quick-insert/render-elem.js +1 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +3 -4
- package/dist/basic-sdk/extension/plugins/sdoc-link/hover-menu/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/sdoc-link/render/render-elem.js +5 -8
- package/dist/basic-sdk/extension/plugins/search-replace/helper.js +6 -6
- package/dist/basic-sdk/extension/plugins/search-replace/menu/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/search-replace/popover/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/search-replace/popover/replace-all-confirm-modal.js +1 -1
- package/dist/basic-sdk/extension/plugins/table/helpers.js +21 -38
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +2 -2
- package/dist/basic-sdk/extension/plugins/table/menu/color-selector-popover/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/table/model.js +2 -2
- package/dist/basic-sdk/extension/plugins/table/plugin.js +16 -21
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +4 -4
- package/dist/basic-sdk/extension/plugins/table/popover/table-template/sample-table.js +3 -3
- package/dist/basic-sdk/extension/plugins/table/render/index.js +8 -11
- package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +9 -18
- package/dist/basic-sdk/extension/plugins/table/render/resize-handlers/column-resize-handler.js +6 -6
- package/dist/basic-sdk/extension/plugins/table/render/resize-handlers/first-column-left-resize-handler.js +4 -3
- package/dist/basic-sdk/extension/plugins/table/render/resize-mask/index.js +16 -20
- package/dist/basic-sdk/extension/plugins/table/render/table-root.js +4 -4
- package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-style/caret.js +5 -6
- package/dist/basic-sdk/extension/plugins/text-style/menu/comemnt-editor-menu.js +5 -5
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +7 -7
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +9 -7
- package/dist/basic-sdk/extension/plugins/video/helpers.js +8 -8
- package/dist/basic-sdk/extension/plugins/video/render-elem.js +4 -4
- package/dist/basic-sdk/extension/plugins/wiki-link/helpers.js +2 -2
- package/dist/basic-sdk/extension/render/custom-element.js +10 -15
- package/dist/basic-sdk/extension/render/render-comment-editor-element.js +10 -15
- package/dist/basic-sdk/extension/toolbar/context-toolbar/index.js +3 -3
- package/dist/basic-sdk/extension/toolbar/header-toolbar/index.js +2 -2
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +1 -1
- package/dist/basic-sdk/extension/toolbar/insert-element-toolbar/index.js +12 -31
- package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +3 -3
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +11 -28
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +5 -8
- package/dist/basic-sdk/highlight/setNodeToDecorations.js +5 -4
- package/dist/basic-sdk/hooks/use-selection-position.js +3 -3
- package/dist/basic-sdk/node-id/helpers.js +8 -12
- package/dist/basic-sdk/node-id/index.js +1 -1
- package/dist/basic-sdk/outline/outline-item.js +3 -4
- package/dist/basic-sdk/right-panel/index.js +6 -7
- package/dist/basic-sdk/slate-convert/html-to-slate/constants.js +6 -6
- package/dist/basic-sdk/slate-convert/html-to-slate/index.js +2 -2
- package/dist/basic-sdk/slate-convert/md-to-slate/transform.js +24 -31
- package/dist/basic-sdk/slate-convert/slate-to-md/transform.js +5 -5
- package/dist/basic-sdk/socket/helpers.js +5 -6
- package/dist/basic-sdk/socket/socket-client.js +4 -4
- package/dist/basic-sdk/socket/socket-manager.js +13 -13
- package/dist/basic-sdk/utils/Kebab-to-camel.js +1 -1
- package/dist/basic-sdk/utils/default-mode.js +1 -1
- package/dist/basic-sdk/utils/diff-text.js +1 -1
- package/dist/basic-sdk/utils/diff.js +34 -48
- package/dist/basic-sdk/utils/document-utils.js +5 -7
- package/dist/basic-sdk/utils/full-width-mode.js +3 -3
- package/dist/basic-sdk/utils/local-storage-utils.js +1 -1
- package/dist/basic-sdk/utils/object-utils.js +3 -5
- package/dist/basic-sdk/utils/rebase.js +21 -36
- package/dist/components/doc-info/index.js +1 -1
- package/dist/components/doc-operations/collaborators-operation/collaborators-popover.js +1 -1
- package/dist/components/doc-operations/more-operations.js +1 -1
- package/dist/components/doc-operations/revision-operations/changes-count/index.js +2 -2
- package/dist/components/doc-operations/revision-operations/more-revision-operations/index.js +2 -2
- package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/index.js +2 -2
- package/dist/components/doc-operations/revision-operations/revisions/revisions-dialog/revision-operation/index.js +1 -1
- package/dist/components/doc-operations/revision-operations/view-changes/index.js +5 -5
- package/dist/context.js +2 -2
- package/dist/layout/content.js +8 -5
- package/dist/layout/header.js +8 -5
- package/dist/layout/layout.js +6 -4
- package/dist/plugin-module/constants/index.js +3 -3
- package/dist/plugin-module/editor/plugin-editor.js +4 -4
- package/dist/plugin-module/gloable-ui/insert-element-dialog.js +1 -1
- package/dist/plugin-module/plugins/chart/chart-edit-dialog/index.js +2 -4
- package/dist/plugin-module/plugins/chart/helpers.js +6 -6
- package/dist/plugin-module/plugins/seatable-column/helpers.js +4 -7
- package/dist/plugin-module/plugins/seatable-column/menu/column-list-item.js +1 -1
- package/dist/plugin-module/plugins/seatable-column/render-elem.js +25 -32
- package/dist/plugin-module/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +2 -2
- package/dist/plugin-module/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/ResizeHandle.js +2 -4
- package/dist/plugin-module/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +2 -2
- package/dist/plugin-module/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +2 -2
- package/dist/plugin-module/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +1 -1
- package/dist/plugin-module/plugins/seatable-row/helpers.js +2 -3
- package/dist/plugin-module/plugins/seatable-row/render-elem/index.js +6 -7
- package/dist/plugin-module/plugins/seatable-row/render-elem/record-header.js +4 -4
- package/dist/plugin-module/plugins/seatable-tables/formatter/index.js +1 -1
- package/dist/plugin-module/plugins/seatable-tables/formatter/link-formatter/index.js +18 -18
- package/dist/plugin-module/plugins/seatable-tables/helpers.js +2 -3
- package/dist/plugin-module/plugins/seatable-tables/op-menu/index.js +3 -3
- package/dist/plugin-module/plugins/seatable-tables/render-element/record-header.js +4 -4
- package/dist/plugin-module/plugins/seatable-tables/render-element/seatable-table.js +6 -7
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/common-add-tool/index.js +2 -2
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/dtable-search-input/index.js +1 -1
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/_department-utils.js +4 -3
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/department-multiple-select.js +3 -3
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/department-single-select.js +5 -5
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/selected-departments.js +3 -3
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/filter-item.js +2 -2
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/rate-item/index.js +5 -5
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover.js +1 -1
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/hide-column-setter/hide-column-item.js +1 -1
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/hide-column-setter/hide-column-popover.js +1 -1
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/index.js +3 -5
- package/dist/plugin-module/plugins/seatable-tables/seatable-settings/sort-setter/sort-popover.js +1 -1
- package/dist/plugin-module/toolbar/header-toolbar/index.js +2 -2
- package/dist/plugin-module/toolbar/header-toolbar/insert-toolbar/index.js +1 -1
- package/dist/utils/date-utils.js +11 -11
- package/dist/utils/index.js +1 -1
- package/package.json +2 -2
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.replacePastedDataId = exports.replaceNodeId = exports.removeCommentMarks = exports.decorateOperation = void 0;
|
|
9
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
10
|
var _slate = require("@seafile/slate");
|
|
10
11
|
var _deepCopy = _interopRequireDefault(require("deep-copy"));
|
|
11
12
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
@@ -103,16 +104,14 @@ exports.decorateOperation = decorateOperation;
|
|
|
103
104
|
const replaceNodeId = node => {
|
|
104
105
|
if (!_objectUtils.default.isObject(node)) return node;
|
|
105
106
|
if (_objectUtils.default.hasProperty(node, 'children')) {
|
|
106
|
-
return {
|
|
107
|
-
...node,
|
|
107
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, node), {}, {
|
|
108
108
|
id: _slugid.default.nice(),
|
|
109
109
|
children: replacePastedDataId(node.children)
|
|
110
|
-
};
|
|
110
|
+
});
|
|
111
111
|
}
|
|
112
|
-
return {
|
|
113
|
-
...node,
|
|
112
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, node), {}, {
|
|
114
113
|
id: _slugid.default.nice()
|
|
115
|
-
};
|
|
114
|
+
});
|
|
116
115
|
};
|
|
117
116
|
exports.replaceNodeId = replaceNodeId;
|
|
118
117
|
const replacePastedDataId = pastedData => {
|
|
@@ -137,9 +136,7 @@ exports.replacePastedDataId = replacePastedDataId;
|
|
|
137
136
|
const removeCommentMarks = fragment => {
|
|
138
137
|
const cleanNode = node => {
|
|
139
138
|
if (_slate.Text.isText(node)) {
|
|
140
|
-
const newNode = {
|
|
141
|
-
...node
|
|
142
|
-
};
|
|
139
|
+
const newNode = (0, _objectSpread2.default)({}, node);
|
|
143
140
|
for (const key of Object.keys(newNode)) {
|
|
144
141
|
if (key.startsWith('sdoc_comment') || key.startsWith('removed_')) {
|
|
145
142
|
delete newNode[key];
|
|
@@ -148,10 +145,9 @@ const removeCommentMarks = fragment => {
|
|
|
148
145
|
return newNode;
|
|
149
146
|
}
|
|
150
147
|
if (node.children) {
|
|
151
|
-
return {
|
|
152
|
-
...node,
|
|
148
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, node), {}, {
|
|
153
149
|
children: node.children.map(cleanNode)
|
|
154
|
-
};
|
|
150
|
+
});
|
|
155
151
|
}
|
|
156
152
|
return node;
|
|
157
153
|
};
|
|
@@ -51,7 +51,7 @@ const withNodeId = editor => {
|
|
|
51
51
|
|
|
52
52
|
// rewrite insert fragment data
|
|
53
53
|
newEditor.insertFragmentData = data => {
|
|
54
|
-
const fragment = data.getData(
|
|
54
|
+
const fragment = data.getData("application/".concat(_constants.CLIPBOARD_FORMAT_KEY)) || (0, _documentUtils.getSlateFragmentAttribute)(data);
|
|
55
55
|
if (fragment) {
|
|
56
56
|
const decoded = decodeURIComponent(window.atob(fragment));
|
|
57
57
|
const parsed = JSON.parse(decoded);
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
8
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
9
10
|
var _react = _interopRequireDefault(require("react"));
|
|
10
11
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -95,11 +96,9 @@ class OutlineItem extends _react.default.PureComponent {
|
|
|
95
96
|
onMouseOut: this.onMouseOut
|
|
96
97
|
}, !isSdocRevision && children.map(child => child.text || child.title).join(''), isSdocRevision && children.map(child => {
|
|
97
98
|
const text = child.text || child.title;
|
|
98
|
-
const style = {
|
|
99
|
-
...(child.add && _constants2.ADDED_STYLE),
|
|
100
|
-
...(child.delete && _constants2.DELETED_STYLE),
|
|
99
|
+
const style = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, child.add && _constants2.ADDED_STYLE), child.delete && _constants2.DELETED_STYLE), {}, {
|
|
101
100
|
backgroundColor: child.computed_background_color || undefined
|
|
102
|
-
};
|
|
101
|
+
});
|
|
103
102
|
const key = child.id;
|
|
104
103
|
const content = /*#__PURE__*/_react.default.createElement("span", {
|
|
105
104
|
style: style,
|
|
@@ -1,11 +1,12 @@
|
|
|
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;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _hooks = require("../../hooks");
|
|
11
12
|
var _constants = require("../constants");
|
|
@@ -43,10 +44,9 @@ const RightPanel = _ref => {
|
|
|
43
44
|
}, []);
|
|
44
45
|
const resizeWidthEnd = (0, _react.useCallback)(width => {
|
|
45
46
|
const settings = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
|
|
46
|
-
_localStorageUtils.default.setItem(_constants.SDOC_STORAGE, JSON.stringify({
|
|
47
|
-
...settings,
|
|
47
|
+
_localStorageUtils.default.setItem(_constants.SDOC_STORAGE, JSON.stringify((0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
|
|
48
48
|
panelWidth: width
|
|
49
|
-
}));
|
|
49
|
+
})));
|
|
50
50
|
const eventBus = _eventBus.default.getInstance();
|
|
51
51
|
eventBus.dispatch(_constants.INTERNAL_EVENT.RESIZE_ARTICLE);
|
|
52
52
|
}, []);
|
|
@@ -61,10 +61,9 @@ const RightPanel = _ref => {
|
|
|
61
61
|
(0, _react.useEffect)(() => {
|
|
62
62
|
const isShowGlobalComments = displayPluginName === 'sdoc-comment' ? true : false;
|
|
63
63
|
const settings = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
|
|
64
|
-
_localStorageUtils.default.setItem(_constants.SDOC_STORAGE, {
|
|
65
|
-
...settings,
|
|
64
|
+
_localStorageUtils.default.setItem(_constants.SDOC_STORAGE, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
|
|
66
65
|
isShowGlobalComments
|
|
67
|
-
});
|
|
66
|
+
}));
|
|
68
67
|
const eventBus = _eventBus.default.getInstance();
|
|
69
68
|
eventBus.dispatch(_constants.INTERNAL_EVENT.RESIZE_ARTICLE);
|
|
70
69
|
}, [displayPluginName]);
|
|
@@ -7,12 +7,12 @@ exports.UNORDERED_LIST = exports.TOP_LEVEL_TYPES = exports.TABLE_ROW = exports.T
|
|
|
7
7
|
const BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
|
|
8
8
|
const HEADER = exports.HEADER = 'header';
|
|
9
9
|
// each header type should be start with HEADER, all of justices should based on HEADER
|
|
10
|
-
const HEADER1 = exports.HEADER1 =
|
|
11
|
-
const HEADER2 = exports.HEADER2 =
|
|
12
|
-
const HEADER3 = exports.HEADER3 =
|
|
13
|
-
const HEADER4 = exports.HEADER4 =
|
|
14
|
-
const HEADER5 = exports.HEADER5 =
|
|
15
|
-
const HEADER6 = exports.HEADER6 =
|
|
10
|
+
const HEADER1 = exports.HEADER1 = "".concat(HEADER, "1");
|
|
11
|
+
const HEADER2 = exports.HEADER2 = "".concat(HEADER, "2");
|
|
12
|
+
const HEADER3 = exports.HEADER3 = "".concat(HEADER, "3");
|
|
13
|
+
const HEADER4 = exports.HEADER4 = "".concat(HEADER, "4");
|
|
14
|
+
const HEADER5 = exports.HEADER5 = "".concat(HEADER, "5");
|
|
15
|
+
const HEADER6 = exports.HEADER6 = "".concat(HEADER, "6");
|
|
16
16
|
const ORDERED_LIST = exports.ORDERED_LIST = 'ordered_list'; // <ol>
|
|
17
17
|
const UNORDERED_LIST = exports.UNORDERED_LIST = 'unordered_list'; // <ul> // unordered_list can not work
|
|
18
18
|
const LIST_ITEM = exports.LIST_ITEM = 'list_item'; // <li>
|
|
@@ -27,7 +27,7 @@ const deserializeElement = element => {
|
|
|
27
27
|
case 'undefined':
|
|
28
28
|
return;
|
|
29
29
|
default:
|
|
30
|
-
throw new Error(
|
|
30
|
+
throw new Error("The `next` argument was called with invalid children: \"".concat(elements, "\"."));
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
for (let i = 0; i < _rules.default.length; i++) {
|
|
@@ -36,7 +36,7 @@ const deserializeElement = element => {
|
|
|
36
36
|
const ret = rule(element, next);
|
|
37
37
|
const type = (0, _typeOf.default)(ret);
|
|
38
38
|
if (type !== 'array' && type !== 'object' && type !== 'null' && type !== 'undefined') {
|
|
39
|
-
throw new Error(
|
|
39
|
+
throw new Error("A rule returned an invalid deserialized representation: \"".concat(node, "\"."));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// Not eligible for current component processing
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.transformUnorderedList = exports.transformTableRow = exports.transformTableCell = exports.transformTable = exports.transformParagraph = exports.transformOrderedList = exports.transformMath = exports.transformListItem = exports.transformListContent = exports.transformList = exports.transformHtml = exports.transformHr = exports.transformHeader = exports.transformCodeLine = exports.transformCodeBlock = exports.transformCheckListItem = exports.transformCheckList = exports.transformBlockquote = exports.transformBlockHtml = exports.formatMdToSlate = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
8
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
9
10
|
var _elementType = require("../../extension/constants/element-type");
|
|
10
11
|
var _core = require("../../extension/core");
|
|
@@ -59,21 +60,17 @@ const applyMarkForInlineItem = function (result, item) {
|
|
|
59
60
|
return result;
|
|
60
61
|
}
|
|
61
62
|
if (type === _elementType.IMAGE) {
|
|
62
|
-
const data = {
|
|
63
|
-
src: item.url
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
...(item.height && {
|
|
74
|
-
height: item.height
|
|
75
|
-
})
|
|
76
|
-
};
|
|
63
|
+
const data = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
64
|
+
src: item.url
|
|
65
|
+
}, item.title && {
|
|
66
|
+
title: item.title
|
|
67
|
+
}), item.alt && {
|
|
68
|
+
alt: item.alt
|
|
69
|
+
}), item.width && {
|
|
70
|
+
width: item.width
|
|
71
|
+
}), item.height && {
|
|
72
|
+
height: item.height
|
|
73
|
+
});
|
|
77
74
|
const image = {
|
|
78
75
|
id: _slugid.default.nice(),
|
|
79
76
|
data: data,
|
|
@@ -133,7 +130,7 @@ const transformHeader = node => {
|
|
|
133
130
|
const {
|
|
134
131
|
depth
|
|
135
132
|
} = node;
|
|
136
|
-
const type =
|
|
133
|
+
const type = "".concat(_elementType.HEADER).concat(depth);
|
|
137
134
|
return {
|
|
138
135
|
id: _slugid.default.nice(),
|
|
139
136
|
type: type,
|
|
@@ -344,21 +341,17 @@ const transformHtml = node => {
|
|
|
344
341
|
const title = img.getAttribute('title');
|
|
345
342
|
const width = img.getAttribute('width');
|
|
346
343
|
const height = img.getAttribute('height');
|
|
347
|
-
const data = {
|
|
348
|
-
src: src
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
...(!isNaN(height) && height > 0 && {
|
|
359
|
-
height
|
|
360
|
-
})
|
|
361
|
-
};
|
|
344
|
+
const data = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
345
|
+
src: src
|
|
346
|
+
}, alt && {
|
|
347
|
+
alt
|
|
348
|
+
}), title && {
|
|
349
|
+
title
|
|
350
|
+
}), !isNaN(width) && width > 0 && {
|
|
351
|
+
width
|
|
352
|
+
}), !isNaN(height) && height > 0 && {
|
|
353
|
+
height
|
|
354
|
+
});
|
|
362
355
|
const image = {
|
|
363
356
|
id: _slugid.default.nice(),
|
|
364
357
|
data: data,
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.formatSlateToMd = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
8
9
|
var _slate = require("@seafile/slate");
|
|
9
10
|
var _isPunctuationMark = _interopRequireDefault(require("../../utils/is-punctuation-mark"));
|
|
10
11
|
const generateDefaultText = value => {
|
|
@@ -21,10 +22,9 @@ const transformTextNode = textNode => {
|
|
|
21
22
|
|
|
22
23
|
// code = true, override text type
|
|
23
24
|
if (textNode['code']) {
|
|
24
|
-
mdNode = {
|
|
25
|
-
...mdNode,
|
|
25
|
+
mdNode = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, mdNode), {}, {
|
|
26
26
|
type: 'inlineCode'
|
|
27
|
-
};
|
|
27
|
+
});
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// blob = true, add strong parent
|
|
@@ -74,7 +74,7 @@ const transformInlineChildren = (result, item) => {
|
|
|
74
74
|
if (data.height || data.width) {
|
|
75
75
|
image = {
|
|
76
76
|
type: 'html',
|
|
77
|
-
value:
|
|
77
|
+
value: "<img src=\"".concat(data.src, "\" alt=\"").concat(data.alt, "\" title=\"").concat(data.title, "\" width=\"").concat(data.width, "\" height=\"").concat(data.height, "\" />")
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
result.push(image);
|
|
@@ -106,7 +106,7 @@ const transformInlineChildren = (result, item) => {
|
|
|
106
106
|
if (item.type && item.type === 'seatable_column') {
|
|
107
107
|
const data = item.data;
|
|
108
108
|
const newNode = {
|
|
109
|
-
text:
|
|
109
|
+
text: "{".concat(data.name, "}")
|
|
110
110
|
};
|
|
111
111
|
const column = transformTextNode(newNode);
|
|
112
112
|
result.push(column);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.validateOperation = exports.syncRemoteOperations = exports.syncRemoteCursorLocation = exports.revertOperationList = exports.reExecRevertOperationList = exports.getRevertOperationList = exports.getNodePathById = void 0;
|
|
9
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
10
|
var _slate = require("@seafile/slate");
|
|
10
11
|
var _deepCopy = _interopRequireDefault(require("deep-copy"));
|
|
11
12
|
var _helper = require("../cursor/helper");
|
|
@@ -173,10 +174,9 @@ const validateOperation = (editor, operation) => {
|
|
|
173
174
|
// node is exist and node path is not changed
|
|
174
175
|
if (node && node.id === node_id) {
|
|
175
176
|
isValid = true;
|
|
176
|
-
newOperation.properties = {
|
|
177
|
-
...properties,
|
|
177
|
+
newOperation.properties = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, properties), {}, {
|
|
178
178
|
type: node.type
|
|
179
|
-
};
|
|
179
|
+
});
|
|
180
180
|
break;
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -185,10 +185,9 @@ const validateOperation = (editor, operation) => {
|
|
|
185
185
|
if (nodePath) {
|
|
186
186
|
isValid = true;
|
|
187
187
|
const node = (0, _core.getNode)(editor, nodePath);
|
|
188
|
-
newOperation.properties = {
|
|
189
|
-
...properties,
|
|
188
|
+
newOperation.properties = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, properties), {}, {
|
|
190
189
|
type: node.type
|
|
191
|
-
};
|
|
190
|
+
});
|
|
192
191
|
newOperation.path = nodePath;
|
|
193
192
|
break;
|
|
194
193
|
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
8
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
9
10
|
var _socket = _interopRequireDefault(require("socket.io-client"));
|
|
10
11
|
var _debug = require("../utils/debug");
|
|
@@ -18,11 +19,10 @@ class SocketClient {
|
|
|
18
19
|
docUuid,
|
|
19
20
|
user
|
|
20
21
|
} = _this.config;
|
|
21
|
-
return {
|
|
22
|
+
return (0, _objectSpread2.default)({
|
|
22
23
|
doc_uuid: docUuid,
|
|
23
|
-
user
|
|
24
|
-
|
|
25
|
-
};
|
|
24
|
+
user
|
|
25
|
+
}, params);
|
|
26
26
|
});
|
|
27
27
|
(0, _defineProperty2.default)(this, "onConnected", () => {
|
|
28
28
|
// join room
|
|
@@ -71,14 +71,14 @@ class SocketManager {
|
|
|
71
71
|
(0, _defineProperty2.default)(this, "sendOperations", () => {
|
|
72
72
|
if (this.editor.readonly) return;
|
|
73
73
|
if (this.state !== STATE.IDLE) return;
|
|
74
|
-
(0, _debug.stateDebug)(
|
|
74
|
+
(0, _debug.stateDebug)("State changed: ".concat(this.state, " -> ").concat(STATE.SENDING));
|
|
75
75
|
this.state = STATE.SENDING;
|
|
76
76
|
this.sendNextOperations();
|
|
77
77
|
});
|
|
78
78
|
(0, _defineProperty2.default)(this, "sendNextOperations", () => {
|
|
79
79
|
if (this.state !== STATE.SENDING) return;
|
|
80
80
|
if (this.pendingOperationList.length === 0) {
|
|
81
|
-
(0, _debug.stateDebug)(
|
|
81
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.IDLE));
|
|
82
82
|
this.state = STATE.IDLE;
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
@@ -115,13 +115,13 @@ class SocketManager {
|
|
|
115
115
|
this.dispatchConnectState(error_type);
|
|
116
116
|
|
|
117
117
|
// reset sending control
|
|
118
|
-
(0, _debug.stateDebug)(
|
|
118
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.NEED_RELOAD));
|
|
119
119
|
this.state = STATE.NEED_RELOAD;
|
|
120
120
|
this._sendingOperations = null;
|
|
121
121
|
} else if (error_type === 'version_behind_server') {
|
|
122
122
|
// Put the failed operation into the pending list and re-execute it
|
|
123
123
|
this.pendingOperationList.unshift([...this._sendingOperations]);
|
|
124
|
-
(0, _debug.stateDebug)(
|
|
124
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.CONFLICT));
|
|
125
125
|
this.state = STATE.CONFLICT;
|
|
126
126
|
const {
|
|
127
127
|
lose_operations
|
|
@@ -168,7 +168,7 @@ class SocketManager {
|
|
|
168
168
|
try {
|
|
169
169
|
(0, _helpers.syncRemoteOperations)(this.editor, operations);
|
|
170
170
|
} catch (error) {
|
|
171
|
-
(0, _debug.stateDebug)(
|
|
171
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.CONFLICT));
|
|
172
172
|
this.state = STATE.CONFLICT;
|
|
173
173
|
this.dispatchConnectState('sync_server_operations_error');
|
|
174
174
|
return;
|
|
@@ -198,17 +198,17 @@ class SocketManager {
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
// The version consistency indicates that there is no conflict and no processing is required
|
|
201
|
-
(0, _debug.stateDebug)(
|
|
201
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.IDLE));
|
|
202
202
|
this.state = STATE.IDLE;
|
|
203
203
|
if (this.pendingOperationList.length > 0) {
|
|
204
204
|
(0, _debug.clientDebug)('After reconnection, manually trigger the execution of ops.');
|
|
205
|
-
(0, _debug.stateDebug)(
|
|
205
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.SENDING));
|
|
206
206
|
this.state = STATE.SENDING;
|
|
207
207
|
this.sendNextOperations();
|
|
208
208
|
}
|
|
209
209
|
});
|
|
210
210
|
(0, _defineProperty2.default)(this, "onConflictHappen", () => {
|
|
211
|
-
(0, _debug.stateDebug)(
|
|
211
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.CONFLICT));
|
|
212
212
|
this.state = STATE.CONFLICT;
|
|
213
213
|
this.socketClient.getRecentOperations();
|
|
214
214
|
});
|
|
@@ -232,7 +232,7 @@ class SocketManager {
|
|
|
232
232
|
this.editor.children = children;
|
|
233
233
|
this.editor.isRemote = true;
|
|
234
234
|
this.editor.onChange();
|
|
235
|
-
(0, _debug.stateDebug)(
|
|
235
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.IDLE));
|
|
236
236
|
this.editor.isRemote = false;
|
|
237
237
|
this.state = STATE.IDLE;
|
|
238
238
|
this._sendingOperations = null;
|
|
@@ -280,7 +280,7 @@ class SocketManager {
|
|
|
280
280
|
try {
|
|
281
281
|
(0, _helpers.syncRemoteOperations)(this.editor, operations);
|
|
282
282
|
} catch (error) {
|
|
283
|
-
(0, _debug.stateDebug)(
|
|
283
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.CONFLICT));
|
|
284
284
|
this.state = STATE.CONFLICT;
|
|
285
285
|
this.dispatchConnectState('sync_server_operations_error');
|
|
286
286
|
return;
|
|
@@ -293,7 +293,7 @@ class SocketManager {
|
|
|
293
293
|
if (this.revertOperationList.length === 0) {
|
|
294
294
|
Promise.resolve().then(() => {
|
|
295
295
|
this.editor.isRemote = false;
|
|
296
|
-
(0, _debug.stateDebug)(
|
|
296
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.IDLE));
|
|
297
297
|
this.state = STATE.IDLE;
|
|
298
298
|
this._sendingOperations = null;
|
|
299
299
|
this.revertOperationList = [];
|
|
@@ -305,7 +305,7 @@ class SocketManager {
|
|
|
305
305
|
Promise.resolve().then(() => {
|
|
306
306
|
// reset execute remote operations flag
|
|
307
307
|
this.editor.isRemote = false;
|
|
308
|
-
(0, _debug.stateDebug)(
|
|
308
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.IDLE));
|
|
309
309
|
this.state = STATE.IDLE;
|
|
310
310
|
this._sendingOperations = null;
|
|
311
311
|
|
|
@@ -344,7 +344,7 @@ class SocketManager {
|
|
|
344
344
|
this.pendingOperationList.unshift(this._sendingOperations.slice());
|
|
345
345
|
this._sendingOperations = null;
|
|
346
346
|
}
|
|
347
|
-
(0, _debug.stateDebug)(
|
|
347
|
+
(0, _debug.stateDebug)("State Changed: ".concat(this.state, " -> ").concat(STATE.DISCONNECT));
|
|
348
348
|
this.state = STATE.DISCONNECT;
|
|
349
349
|
}
|
|
350
350
|
this.eventBus.dispatch(type, message);
|
|
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
const KebabToCamel = str => {
|
|
8
|
-
return str.replace(/(_[a-z])/g, match =>
|
|
8
|
+
return str.replace(/(_[a-z])/g, match => "".concat(match.slice(1).toUpperCase()));
|
|
9
9
|
};
|
|
10
10
|
var _default = exports.default = KebabToCamel;
|
|
@@ -20,7 +20,7 @@ const getStyleByDefaultMode = (scrollRef, editor) => {
|
|
|
20
20
|
if (isShowOutline && editor.editorType !== _constants.WIKI_EDITOR) {
|
|
21
21
|
const rect = scrollRef.current.getBoundingClientRect();
|
|
22
22
|
if ((rect.width - Number(_constants.ARTICLE_DEFAULT_WIDTH.slice(0, 3))) / 2 < 280) {
|
|
23
|
-
containerStyle['marginLeft'] =
|
|
23
|
+
containerStyle['marginLeft'] = "".concat(_constants.LEFT_OUTLINE_WIDTH, "px");
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
return containerStyle;
|
|
@@ -8,7 +8,7 @@ exports.default = void 0;
|
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
9
9
|
var _objectUtils = _interopRequireDefault(require("./object-utils"));
|
|
10
10
|
const extendedWordChars = 'a-zA-Z\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}\\u{4e00}-\\u{9fa5}';
|
|
11
|
-
const tokenizeIncludingWhitespace = new RegExp(
|
|
11
|
+
const tokenizeIncludingWhitespace = new RegExp("[".concat(extendedWordChars, "]+|\\s+|[^").concat(extendedWordChars, "]"), 'ug');
|
|
12
12
|
const buildValues = (diff, components, newString, oldString, valueType, useLongestToken) => {
|
|
13
13
|
let componentPos = 0;
|
|
14
14
|
let componentLen = components.length;
|