@seafile/sdoc-editor 1.0.174 → 1.0.176
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/assets/css/dropdown-menu.css +13 -0
- package/dist/basic-sdk/assets/css/layout.css +2 -1
- package/dist/basic-sdk/assets/css/sdoc-viewer.css +2 -1
- package/dist/basic-sdk/extension/commons/wiki-file-insert-dialog/index.js +2 -2
- package/dist/basic-sdk/extension/constants/index.js +6 -0
- package/dist/basic-sdk/extension/constants/menus-config.js +23 -1
- package/dist/basic-sdk/extension/plugins/quick-insert/render-elem.js +6 -2
- package/dist/basic-sdk/extension/plugins/table/constants/index.js +7 -1
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +147 -5
- package/dist/basic-sdk/extension/plugins/table/popover/table-template/index.css +4 -0
- package/dist/basic-sdk/extension/plugins/table/popover/table-template/index.js +94 -4
- package/dist/basic-sdk/extension/plugins/table/popover/table-template/sample-table.js +12 -3
- package/dist/basic-sdk/extension/toolbar/insert-element-toolbar/index.js +108 -78
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +31 -31
- package/dist/basic-sdk/extension/utils/index.js +29 -2
- package/dist/components/doc-info/index.js +4 -3
- package/dist/components/doc-operations/index.js +5 -1
- package/dist/components/doc-operations/more-operations.js +34 -3
- package/dist/pages/simple-editor.js +1 -0
- package/dist/utils/index.js +13 -2
- package/package.json +1 -1
- package/public/locales/cs/sdoc-editor.json +4 -1
- package/public/locales/de/sdoc-editor.json +4 -1
- package/public/locales/en/sdoc-editor.json +4 -1
- package/public/locales/es/sdoc-editor.json +4 -1
- package/public/locales/es_AR/sdoc-editor.json +4 -1
- package/public/locales/es_MX/sdoc-editor.json +4 -1
- package/public/locales/fr/sdoc-editor.json +4 -1
- package/public/locales/it/sdoc-editor.json +4 -1
- package/public/locales/ru/sdoc-editor.json +5 -2
- package/public/locales/zh_CN/sdoc-editor.json +4 -1
|
@@ -112,3 +112,16 @@
|
|
|
112
112
|
.sdoc-sub-dropdown-menu .sdoc-insert-element-table-size-wrapper {
|
|
113
113
|
left: 227px !important;
|
|
114
114
|
}
|
|
115
|
+
|
|
116
|
+
.mobile-login .sdoc-dropdown-menu {
|
|
117
|
+
padding: 0 !important;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.mobile-login .sdoc-dropdown-menu .sdoc-dropdown-menu-item {
|
|
121
|
+
padding: 16px !important;
|
|
122
|
+
height: 47px !important;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.mobile-login .sdoc-dropdown-menu .sdoc-operator-folder-divider {
|
|
126
|
+
margin: 0 !important;
|
|
127
|
+
}
|
|
@@ -91,7 +91,7 @@ const WikiFileLinkInsertDialog = _ref => {
|
|
|
91
91
|
getPosition();
|
|
92
92
|
}, 100);
|
|
93
93
|
const getHistoryFiles = (0, _react.useCallback)(isCalculatedByFiles => {
|
|
94
|
-
let files = _utils.LocalStorage.getItem('wiki-recent-files') || [];
|
|
94
|
+
let files = (0, _utils.getLocalStorageFiles)(_utils.LocalStorage.getItem('wiki-recent-files') || []);
|
|
95
95
|
if (isCalculatedByFiles) {
|
|
96
96
|
const newFiles = (0, _utils.getMaximumCapacity)(files);
|
|
97
97
|
// Can accommodate all without showing more operations
|
|
@@ -202,7 +202,7 @@ const WikiFileLinkInsertDialog = _ref => {
|
|
|
202
202
|
}, [closeDialog, editor, element]);
|
|
203
203
|
const onShowMoreWiki = (0, _react.useCallback)(e => {
|
|
204
204
|
e.stopPropagation();
|
|
205
|
-
const recentFiles = _utils.LocalStorage.getItem('wiki-recent-files') || [];
|
|
205
|
+
const recentFiles = (0, _utils.getLocalStorageFiles)(_utils.LocalStorage.getItem('wiki-recent-files') || []);
|
|
206
206
|
setFiles(recentFiles);
|
|
207
207
|
setHiddenMoreMenu(true);
|
|
208
208
|
}, []);
|
|
@@ -367,6 +367,12 @@ Object.defineProperty(exports, "SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP", {
|
|
|
367
367
|
return _menusConfig.SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP;
|
|
368
368
|
}
|
|
369
369
|
});
|
|
370
|
+
Object.defineProperty(exports, "SIDE_QUICK_INSERT_MENUS_SEARCH_MAP", {
|
|
371
|
+
enumerable: true,
|
|
372
|
+
get: function () {
|
|
373
|
+
return _menusConfig.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP;
|
|
374
|
+
}
|
|
375
|
+
});
|
|
370
376
|
Object.defineProperty(exports, "SIDE_TRANSFORM_MENUS_CONFIG", {
|
|
371
377
|
enumerable: true,
|
|
372
378
|
get: function () {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.UNDO = exports.TEXT_STYLE_MORE = exports.TEXT_STYLE_MAP = exports.TEXT_STYLE = exports.TEXT_ALIGN = exports.SIDE_TRANSFORM_MENUS_SEARCH_MAP = exports.SIDE_TRANSFORM_MENUS_CONFIG = exports.SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_CONFIG = exports.SEARCH_REPLACE = exports.REMOVE_TABLE = exports.REDO = exports.MENUS_CONFIG_MAP = exports.ITALIC = exports.COMBINE_CELL = exports.CLEAR_FORMAT = exports.BOLD = void 0;
|
|
6
|
+
exports.UNDO = exports.TEXT_STYLE_MORE = exports.TEXT_STYLE_MAP = exports.TEXT_STYLE = exports.TEXT_ALIGN = exports.SIDE_TRANSFORM_MENUS_SEARCH_MAP = exports.SIDE_TRANSFORM_MENUS_CONFIG = exports.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = exports.SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_CONFIG = exports.SEARCH_REPLACE = exports.REMOVE_TABLE = exports.REDO = exports.MENUS_CONFIG_MAP = exports.ITALIC = exports.COMBINE_CELL = exports.CLEAR_FORMAT = exports.BOLD = void 0;
|
|
7
7
|
var _color = require("./color");
|
|
8
8
|
var _elementType = require("./element-type");
|
|
9
9
|
const UNDO = exports.UNDO = 'undo';
|
|
@@ -432,6 +432,28 @@ const SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = {
|
|
|
432
432
|
[_elementType.SEATABLE_COLUMN]: 'SeaTable_column',
|
|
433
433
|
[_elementType.SEATABLE_TABLE]: 'SeaTable_table'
|
|
434
434
|
};
|
|
435
|
+
const SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = exports.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = {
|
|
436
|
+
[_elementType.IMAGE]: 'Image',
|
|
437
|
+
[_elementType.VIDEO]: 'Video',
|
|
438
|
+
[_elementType.TABLE]: 'Table',
|
|
439
|
+
[_elementType.COLUMN]: 'Column',
|
|
440
|
+
[_elementType.TWO_COLUMN]: 'Two_column',
|
|
441
|
+
[_elementType.THREE_COLUMN]: 'Three_column',
|
|
442
|
+
[_elementType.FOUR_COLUMN]: 'Four_column',
|
|
443
|
+
[_elementType.LINK]: 'Link',
|
|
444
|
+
[_elementType.CODE_BLOCK]: 'Code_block',
|
|
445
|
+
[_elementType.CALL_OUT]: 'Callout',
|
|
446
|
+
[_elementType.UNORDERED_LIST]: 'Unordered_list',
|
|
447
|
+
[_elementType.ORDERED_LIST]: 'Ordered_list',
|
|
448
|
+
[_elementType.CHECK_LIST_ITEM]: 'Check_list',
|
|
449
|
+
[_elementType.PARAGRAPH]: 'Paragraph',
|
|
450
|
+
[_elementType.HEADER1]: 'Header_one',
|
|
451
|
+
[_elementType.HEADER2]: 'Header_two',
|
|
452
|
+
[_elementType.HEADER3]: 'Header_three',
|
|
453
|
+
[_elementType.HEADER4]: 'Header_four',
|
|
454
|
+
[_elementType.SEATABLE_COLUMN]: 'SeaTable_column',
|
|
455
|
+
[_elementType.SEATABLE_TABLE]: 'SeaTable_table'
|
|
456
|
+
};
|
|
435
457
|
|
|
436
458
|
// Other operations menu config
|
|
437
459
|
const SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = exports.SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = {
|
|
@@ -32,7 +32,7 @@ const RenderQuickInsert = (_ref, editor, readonly) => {
|
|
|
32
32
|
const insertElmRef = (0, _react.useRef)(null);
|
|
33
33
|
const aboveBlockNode = (0, _core.getAboveBlockNode)(editor);
|
|
34
34
|
const isEmptyNode = (0, _helpers.isVoidNode)(aboveBlockNode === null || aboveBlockNode === void 0 ? void 0 : aboveBlockNode[0]);
|
|
35
|
-
const [isShowPopover] = (0, _react.useState)((0, _helper.isSelectionSameWithInsert)(editor, element));
|
|
35
|
+
const [isShowPopover, setIsShowPopover] = (0, _react.useState)((0, _helper.isSelectionSameWithInsert)(editor, element));
|
|
36
36
|
const handleClick = (0, _react.useCallback)(e => {
|
|
37
37
|
// Click the search input
|
|
38
38
|
if (sideMenuRef.current.contains(e.target) && e.target.tagName === 'INPUT') return;
|
|
@@ -80,6 +80,9 @@ const RenderQuickInsert = (_ref, editor, readonly) => {
|
|
|
80
80
|
at: _slateReact.ReactEditor.findPath(editor, element)
|
|
81
81
|
});
|
|
82
82
|
};
|
|
83
|
+
const handleClosePopover = (0, _react.useCallback)(() => {
|
|
84
|
+
setIsShowPopover(false);
|
|
85
|
+
}, []);
|
|
83
86
|
return /*#__PURE__*/_react.default.createElement("span", {
|
|
84
87
|
ref: insertElmRef
|
|
85
88
|
}, /*#__PURE__*/_react.default.createElement("span", Object.assign({}, attributes, {
|
|
@@ -94,7 +97,8 @@ const RenderQuickInsert = (_ref, editor, readonly) => {
|
|
|
94
97
|
isEmptyNode: isEmptyNode,
|
|
95
98
|
insertPosition: isEmptyNode ? _constants.INSERT_POSITION.CURRENT : _constants.INSERT_POSITION.AFTER,
|
|
96
99
|
slateNode: aboveBlockNode === null || aboveBlockNode === void 0 ? void 0 : aboveBlockNode[0],
|
|
97
|
-
callback: handleInsertBlock
|
|
100
|
+
callback: handleInsertBlock,
|
|
101
|
+
handleClosePopover: handleClosePopover
|
|
98
102
|
})))));
|
|
99
103
|
};
|
|
100
104
|
var _default = exports.default = RenderQuickInsert;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TABLE_ROW_STYLE = exports.TABLE_ROW_MIN_HEIGHT = exports.TABLE_MAX_ROWS = exports.TABLE_MAX_COLUMNS = exports.TABLE_ELEMENT_SPAN = exports.TABLE_ELEMENT_POSITION = exports.TABLE_ELEMENT = exports.TABLE_CELL_STYLE = exports.TABLE_CELL_MIN_WIDTH = exports.TABLE_ALTERNATE_HIGHLIGHT_CLASS_MAP = exports.SELECTED_TABLE_CELL_BACKGROUND_COLOR = exports.RESIZE_MASK_TOP = exports.RESIZE_MASK_RIGHT = exports.RESIZE_MASK_LEFT = exports.RESIZE_MASK_BOTTOM = exports.RESIZE_HANDLER_ROW = exports.RESIZE_HANDLER_FIRST_COLUMN = exports.RESIZE_HANDLER_COLUMN = exports.INHERIT_CELL_STYLE_WHEN_SELECT_SINGLE = exports.INHERIT_CELL_STYLE_WHEN_SELECT_MULTIPLE = exports.EMPTY_SELECTED_RANGE = exports.DRAG_HANDLER_ROW = exports.DRAG_HANDLER_COLUMN = exports.CELL_SELECTED = void 0;
|
|
6
|
+
exports.TABLE_TEMPLATE_POSITION_MAP = exports.TABLE_ROW_STYLE = exports.TABLE_ROW_MIN_HEIGHT = exports.TABLE_MAX_ROWS = exports.TABLE_MAX_COLUMNS = exports.TABLE_ELEMENT_SPAN = exports.TABLE_ELEMENT_POSITION = exports.TABLE_ELEMENT = exports.TABLE_CELL_STYLE = exports.TABLE_CELL_MIN_WIDTH = exports.TABLE_ALTERNATE_HIGHLIGHT_CLASS_MAP = exports.SELECTED_TABLE_CELL_BACKGROUND_COLOR = exports.RESIZE_MASK_TOP = exports.RESIZE_MASK_RIGHT = exports.RESIZE_MASK_LEFT = exports.RESIZE_MASK_BOTTOM = exports.RESIZE_HANDLER_ROW = exports.RESIZE_HANDLER_FIRST_COLUMN = exports.RESIZE_HANDLER_COLUMN = exports.INHERIT_CELL_STYLE_WHEN_SELECT_SINGLE = exports.INHERIT_CELL_STYLE_WHEN_SELECT_MULTIPLE = exports.EMPTY_SELECTED_RANGE = exports.DRAG_HANDLER_ROW = exports.DRAG_HANDLER_COLUMN = exports.CELL_SELECTED = void 0;
|
|
7
7
|
const TABLE_MAX_ROWS = exports.TABLE_MAX_ROWS = 500;
|
|
8
8
|
const TABLE_MAX_COLUMNS = exports.TABLE_MAX_COLUMNS = 50;
|
|
9
9
|
const EMPTY_SELECTED_RANGE = exports.EMPTY_SELECTED_RANGE = {
|
|
@@ -44,6 +44,12 @@ const TABLE_ALTERNATE_HIGHLIGHT_CLASS_MAP = exports.TABLE_ALTERNATE_HIGHLIGHT_CL
|
|
|
44
44
|
'sdoc-table-header-f77d21': 'sdoc-table-body-f77d21',
|
|
45
45
|
'sdoc-table-header-0099f4': 'sdoc-table-body-0099f4'
|
|
46
46
|
};
|
|
47
|
+
const TABLE_TEMPLATE_POSITION_MAP = exports.TABLE_TEMPLATE_POSITION_MAP = {
|
|
48
|
+
'[0,0]': 'sdoc-table-header-3f495d',
|
|
49
|
+
'[1,0]': 'sdoc-table-header-2367f2',
|
|
50
|
+
'[0,1]': 'sdoc-table-header-f77d21',
|
|
51
|
+
'[1,1]': 'sdoc-table-header-0099f4'
|
|
52
|
+
};
|
|
47
53
|
const INHERIT_CELL_STYLE_WHEN_SELECT_SINGLE = exports.INHERIT_CELL_STYLE_WHEN_SELECT_SINGLE = ['background_color'];
|
|
48
54
|
const INHERIT_CELL_STYLE_WHEN_SELECT_MULTIPLE = exports.INHERIT_CELL_STYLE_WHEN_SELECT_MULTIPLE = ['background_color', 'text_align'];
|
|
49
55
|
const RESIZE_MASK_TOP = exports.RESIZE_MASK_TOP = 'top';
|
|
@@ -11,6 +11,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
11
11
|
var _reactI18next = require("react-i18next");
|
|
12
12
|
var _reactstrap = require("reactstrap");
|
|
13
13
|
var _tableTemplate = _interopRequireDefault(require("../table-template"));
|
|
14
|
+
var _keyCodes = _interopRequireDefault(require("../../../../../../constants/key-codes"));
|
|
14
15
|
require("./index.css");
|
|
15
16
|
const TableSizePopover = _ref => {
|
|
16
17
|
let {
|
|
@@ -19,15 +20,22 @@ const TableSizePopover = _ref => {
|
|
|
19
20
|
trigger = 'legacy',
|
|
20
21
|
placement = 'bottom-start',
|
|
21
22
|
popperClassName,
|
|
22
|
-
createTable
|
|
23
|
+
createTable,
|
|
24
|
+
tableSizeRef,
|
|
25
|
+
handleClosePopover,
|
|
26
|
+
callback
|
|
23
27
|
} = _ref;
|
|
24
28
|
const minSize = [5, 10];
|
|
25
29
|
const maxSize = [10, 10];
|
|
26
30
|
const [displaySize, setDisplaySize] = (0, _react.useState)([5, 10]);
|
|
27
31
|
const [selectedSize, setSelectedSize] = (0, _react.useState)([1, 1]);
|
|
28
32
|
const ref = (0, _react.useRef)(null);
|
|
29
|
-
const
|
|
30
|
-
|
|
33
|
+
const templateRef = (0, _react.useRef)(null);
|
|
34
|
+
(0, _react.useEffect)(() => {
|
|
35
|
+
ref.current['firstRender'] = true;
|
|
36
|
+
}, []);
|
|
37
|
+
const onHandleTableSize = (0, _react.useCallback)(function () {
|
|
38
|
+
let cellPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [1, 1];
|
|
31
39
|
let newDisplaySize = displaySize.slice(0);
|
|
32
40
|
const cellPositionX = cellPosition[0];
|
|
33
41
|
const cellPositionY = cellPosition[1];
|
|
@@ -50,6 +58,137 @@ const TableSizePopover = _ref => {
|
|
|
50
58
|
|
|
51
59
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
60
|
}, [selectedSize, ref]);
|
|
61
|
+
const onTemplateItemSelectedStyle = (0, _react.useCallback)(color => {
|
|
62
|
+
const templateEl = document.getElementById('sdoc-table-template-review-btn');
|
|
63
|
+
templateEl.style['backgroundColor'] = color;
|
|
64
|
+
}, []);
|
|
65
|
+
const handleSizeDown = (0, _react.useCallback)(e => {
|
|
66
|
+
const {
|
|
67
|
+
keyCode
|
|
68
|
+
} = e;
|
|
69
|
+
const {
|
|
70
|
+
UpArrow,
|
|
71
|
+
DownArrow,
|
|
72
|
+
Enter,
|
|
73
|
+
RightArrow,
|
|
74
|
+
LeftArrow
|
|
75
|
+
} = _keyCodes.default;
|
|
76
|
+
const newSelectedSize = selectedSize.slice(0);
|
|
77
|
+
if (keyCode === Enter) {
|
|
78
|
+
e.preventDefault();
|
|
79
|
+
onCreateTable();
|
|
80
|
+
}
|
|
81
|
+
if (keyCode === UpArrow) {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
if (newSelectedSize[0] > 1) {
|
|
84
|
+
newSelectedSize[0] = newSelectedSize[0] - 1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (keyCode === DownArrow) {
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
newSelectedSize[0] = newSelectedSize[0] + 1;
|
|
90
|
+
}
|
|
91
|
+
if (keyCode === LeftArrow) {
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
if (newSelectedSize[1] > 1) {
|
|
94
|
+
newSelectedSize[1] = newSelectedSize[1] - 1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (keyCode === RightArrow) {
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
newSelectedSize[1] = newSelectedSize[1] + 1;
|
|
100
|
+
}
|
|
101
|
+
onHandleTableSize(newSelectedSize);
|
|
102
|
+
}, [onCreateTable, onHandleTableSize, selectedSize]);
|
|
103
|
+
const handleTableSizeKeyDown = (0, _react.useCallback)(e => {
|
|
104
|
+
if (document.getElementsByClassName('sdoc-table-template-popover')[0]) {
|
|
105
|
+
templateRef.current.handleTableTemplateKeyDown(e);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const {
|
|
109
|
+
keyCode
|
|
110
|
+
} = e;
|
|
111
|
+
const {
|
|
112
|
+
UpArrow,
|
|
113
|
+
DownArrow,
|
|
114
|
+
Enter,
|
|
115
|
+
RightArrow,
|
|
116
|
+
LeftArrow,
|
|
117
|
+
Esc
|
|
118
|
+
} = _keyCodes.default;
|
|
119
|
+
const isInitSize = selectedSize[0] === 1 && selectedSize[1] === 1;
|
|
120
|
+
const templateEl = document.getElementById('sdoc-table-template-review-btn');
|
|
121
|
+
// Currently focusing on the template menu item
|
|
122
|
+
if (templateEl.style['background-color']) {
|
|
123
|
+
if (keyCode === DownArrow) {
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
onTemplateItemSelectedStyle('');
|
|
126
|
+
}
|
|
127
|
+
// exit table size popover
|
|
128
|
+
if (keyCode === LeftArrow) {
|
|
129
|
+
e.preventDefault();
|
|
130
|
+
onTemplateItemSelectedStyle('');
|
|
131
|
+
ref.current['firstRender'] = true;
|
|
132
|
+
ref.current.toggle();
|
|
133
|
+
}
|
|
134
|
+
if (keyCode === Enter) {
|
|
135
|
+
e.preventDefault();
|
|
136
|
+
onTemplateItemSelectedStyle('');
|
|
137
|
+
templateRef.current.uncontrolledTemplatePopoverRef.current.toggle();
|
|
138
|
+
}
|
|
139
|
+
if (keyCode === Esc) {
|
|
140
|
+
e.preventDefault();
|
|
141
|
+
handleClosePopover();
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// left and right
|
|
147
|
+
if (keyCode === LeftArrow) {
|
|
148
|
+
e.preventDefault();
|
|
149
|
+
handleSizeDown(e);
|
|
150
|
+
}
|
|
151
|
+
if (keyCode === RightArrow) {
|
|
152
|
+
e.preventDefault();
|
|
153
|
+
if (ref.current['firstRender']) {
|
|
154
|
+
ref.current['firstRender'] = false;
|
|
155
|
+
onTemplateItemSelectedStyle('#e3e3e3');
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
handleSizeDown(e);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// up and down
|
|
162
|
+
if (keyCode === UpArrow) {
|
|
163
|
+
e.preventDefault();
|
|
164
|
+
if (isInitSize) {
|
|
165
|
+
onTemplateItemSelectedStyle('#e3e3e3');
|
|
166
|
+
} else {
|
|
167
|
+
handleSizeDown(e);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (keyCode === DownArrow) {
|
|
171
|
+
e.preventDefault();
|
|
172
|
+
onTemplateItemSelectedStyle('');
|
|
173
|
+
handleSizeDown(e);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// enter
|
|
177
|
+
if (keyCode === Enter) {
|
|
178
|
+
e.preventDefault();
|
|
179
|
+
handleSizeDown(e);
|
|
180
|
+
}
|
|
181
|
+
if (keyCode === Esc) {
|
|
182
|
+
e.preventDefault();
|
|
183
|
+
handleClosePopover();
|
|
184
|
+
}
|
|
185
|
+
}, [handleClosePopover, handleSizeDown, onTemplateItemSelectedStyle, selectedSize]);
|
|
186
|
+
(0, _react.useImperativeHandle)(tableSizeRef, () => {
|
|
187
|
+
return {
|
|
188
|
+
handleTableSizeKeyDown: handleTableSizeKeyDown,
|
|
189
|
+
uncontrolledPopoverRef: ref
|
|
190
|
+
};
|
|
191
|
+
});
|
|
53
192
|
const renderTableSize = (0, _react.useCallback)(() => {
|
|
54
193
|
let tableSize = [];
|
|
55
194
|
for (let i = 1; i <= displaySize[0]; i++) {
|
|
@@ -62,7 +201,7 @@ const TableSizePopover = _ref => {
|
|
|
62
201
|
'active': isSelectedChild
|
|
63
202
|
}),
|
|
64
203
|
onClick: onCreateTable,
|
|
65
|
-
onMouseEnter:
|
|
204
|
+
onMouseEnter: () => onHandleTableSize([i, j])
|
|
66
205
|
});
|
|
67
206
|
children.push(child);
|
|
68
207
|
}
|
|
@@ -97,8 +236,11 @@ const TableSizePopover = _ref => {
|
|
|
97
236
|
}, renderTableSize()), /*#__PURE__*/_react.default.createElement("div", {
|
|
98
237
|
className: "sdoc-selected-table-size-tip w-100 "
|
|
99
238
|
}, `${selectedSize[0]} x ${selectedSize[1]}`), /*#__PURE__*/_react.default.createElement(_tableTemplate.default, {
|
|
239
|
+
templateRef: templateRef,
|
|
100
240
|
editor: editor,
|
|
101
|
-
targetId: "sdoc-table-template-review-btn"
|
|
241
|
+
targetId: "sdoc-table-template-review-btn",
|
|
242
|
+
handleClosePopover: handleClosePopover,
|
|
243
|
+
callback: callback
|
|
102
244
|
})));
|
|
103
245
|
};
|
|
104
246
|
var _default = exports.default = TableSizePopover;
|
|
@@ -11,17 +11,105 @@ var _reactstrap = require("reactstrap");
|
|
|
11
11
|
var _constants = require("../../constants");
|
|
12
12
|
var _sampleTable = _interopRequireDefault(require("./sample-table"));
|
|
13
13
|
var _helpers = require("../../helpers");
|
|
14
|
+
var _keyCodes = _interopRequireDefault(require("../../../../../../constants/key-codes"));
|
|
14
15
|
require("./index.css");
|
|
15
16
|
require("../../render/alternate-color.css");
|
|
16
17
|
const TableTemplate = _ref => {
|
|
17
18
|
let {
|
|
18
19
|
editor,
|
|
19
|
-
targetId
|
|
20
|
+
targetId,
|
|
21
|
+
templateRef,
|
|
22
|
+
handleClosePopover,
|
|
23
|
+
callback
|
|
20
24
|
} = _ref;
|
|
25
|
+
const ref = (0, _react.useRef)(null);
|
|
26
|
+
const [position, setPosition] = (0, _react.useState)([-1, -1]);
|
|
21
27
|
const tableTemplatePreviewList = (0, _react.useMemo)(() => Reflect.ownKeys(_constants.TABLE_ALTERNATE_HIGHLIGHT_CLASS_MAP), []);
|
|
22
|
-
const handleClickTemplate = (0, _react.useCallback)(
|
|
28
|
+
const handleClickTemplate = (0, _react.useCallback)(alternateColor => {
|
|
29
|
+
callback && callback();
|
|
23
30
|
(0, _helpers.insertTableByTemplate)(editor, alternateColor);
|
|
24
|
-
}, [editor]);
|
|
31
|
+
}, [callback, editor]);
|
|
32
|
+
const handleTableTemplateKeyDown = (0, _react.useCallback)(e => {
|
|
33
|
+
const {
|
|
34
|
+
keyCode
|
|
35
|
+
} = e;
|
|
36
|
+
const {
|
|
37
|
+
UpArrow,
|
|
38
|
+
DownArrow,
|
|
39
|
+
Enter,
|
|
40
|
+
RightArrow,
|
|
41
|
+
LeftArrow,
|
|
42
|
+
Esc
|
|
43
|
+
} = _keyCodes.default;
|
|
44
|
+
const position = ref.current.position;
|
|
45
|
+
const isInitPostion = position[0] === -1 && position[1] === -1;
|
|
46
|
+
|
|
47
|
+
// left and right
|
|
48
|
+
if (keyCode === LeftArrow) {
|
|
49
|
+
e.preventDefault();
|
|
50
|
+
if (position[0] > 0) {
|
|
51
|
+
const newPosition = [position[0] - 1, position[1]];
|
|
52
|
+
ref.current.position = newPosition;
|
|
53
|
+
setPosition(newPosition);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (keyCode === RightArrow) {
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
// Enter
|
|
59
|
+
if (isInitPostion) {
|
|
60
|
+
ref.current.position = [0, 0];
|
|
61
|
+
setPosition([0, 0]);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (position[0] < 1) {
|
|
65
|
+
const newPosition = [position[0] + 1, position[1]];
|
|
66
|
+
ref.current.position = newPosition;
|
|
67
|
+
setPosition(newPosition);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// up and down
|
|
72
|
+
if (keyCode === UpArrow) {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
if (isInitPostion) return;
|
|
75
|
+
if (position[1] > 0) {
|
|
76
|
+
const newPosition = [position[0], position[1] - 1];
|
|
77
|
+
ref.current.position = newPosition;
|
|
78
|
+
setPosition(newPosition);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (keyCode === DownArrow) {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
if (isInitPostion) return;
|
|
84
|
+
if (position[1] < 1) {
|
|
85
|
+
const newPosition = [position[0], position[1] + 1];
|
|
86
|
+
ref.current.position = newPosition;
|
|
87
|
+
setPosition(newPosition);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// enter
|
|
92
|
+
if (keyCode === Enter) {
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
if (isInitPostion) return;
|
|
95
|
+
const key = JSON.stringify(position);
|
|
96
|
+
handleClickTemplate(_constants.TABLE_TEMPLATE_POSITION_MAP[key]);
|
|
97
|
+
handleClosePopover();
|
|
98
|
+
}
|
|
99
|
+
if (keyCode === Esc) {
|
|
100
|
+
e.preventDefault();
|
|
101
|
+
handleClosePopover();
|
|
102
|
+
}
|
|
103
|
+
}, [handleClickTemplate, handleClosePopover]);
|
|
104
|
+
(0, _react.useImperativeHandle)(templateRef, () => {
|
|
105
|
+
return {
|
|
106
|
+
handleTableTemplateKeyDown: handleTableTemplateKeyDown,
|
|
107
|
+
uncontrolledTemplatePopoverRef: ref
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
(0, _react.useEffect)(() => {
|
|
111
|
+
ref.current.position = [-1, -1];
|
|
112
|
+
}, []);
|
|
25
113
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
26
114
|
target: targetId,
|
|
27
115
|
trigger: "hover",
|
|
@@ -29,9 +117,11 @@ const TableTemplate = _ref => {
|
|
|
29
117
|
hideArrow: true,
|
|
30
118
|
fade: false,
|
|
31
119
|
className: "sdoc-sub-dropdown-menu sdoc-table-template-popover",
|
|
32
|
-
innerClassName: "sdoc-table-template-inner-popover"
|
|
120
|
+
innerClassName: "sdoc-table-template-inner-popover",
|
|
121
|
+
ref: ref
|
|
33
122
|
}, tableTemplatePreviewList.map((alternateColor, index) => /*#__PURE__*/_react.default.createElement(_sampleTable.default, {
|
|
34
123
|
key: alternateColor + index,
|
|
124
|
+
curPositon: position,
|
|
35
125
|
alternateColor: alternateColor,
|
|
36
126
|
onClickTemplate: handleClickTemplate
|
|
37
127
|
})));
|
|
@@ -8,24 +8,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
12
|
var _helpers = require("../../helpers");
|
|
13
|
+
var _constants = require("../../constants");
|
|
12
14
|
require("./index.css");
|
|
13
15
|
const SampleTable = _ref => {
|
|
14
16
|
let {
|
|
15
17
|
alternateColor,
|
|
16
|
-
onClickTemplate
|
|
18
|
+
onClickTemplate,
|
|
19
|
+
curPositon
|
|
17
20
|
} = _ref;
|
|
18
21
|
// generate table
|
|
19
22
|
const renderTableRow = (0, _react.useCallback)((row, column) => new Array(row).fill(null).map((_, index) => /*#__PURE__*/_react.default.createElement("div", {
|
|
20
23
|
className: `sdoc-table-template-row table-row ${(0, _helpers.getCellHighlightClassName)(alternateColor, index)}`,
|
|
21
24
|
key: `sdoc-template-table-row-${index}`,
|
|
22
|
-
onClick:
|
|
25
|
+
onClick: () => {
|
|
26
|
+
onClickTemplate(alternateColor);
|
|
27
|
+
}
|
|
23
28
|
}, new Array(column).fill(null).map((_, index) => /*#__PURE__*/_react.default.createElement("div", {
|
|
24
29
|
className: "sdoc-table-template-cell",
|
|
25
30
|
key: `sdoc-template-table-cell-${index}`
|
|
26
31
|
})))), [onClickTemplate, alternateColor]);
|
|
32
|
+
const key = JSON.stringify(curPositon);
|
|
33
|
+
const isActive = _constants.TABLE_TEMPLATE_POSITION_MAP[key] === alternateColor;
|
|
27
34
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
28
|
-
className:
|
|
35
|
+
className: (0, _classnames.default)('sdoc-table-template-view-table', {
|
|
36
|
+
'active': isActive
|
|
37
|
+
})
|
|
29
38
|
}, renderTableRow(4, 4));
|
|
30
39
|
};
|
|
31
40
|
SampleTable.protoTypes = {
|
|
@@ -25,8 +25,8 @@ var _helper = require("../../plugins/callout/helper");
|
|
|
25
25
|
var _keyCodes = _interopRequireDefault(require("../../../../constants/key-codes"));
|
|
26
26
|
var _const = require("./const");
|
|
27
27
|
var _core = require("../../core");
|
|
28
|
-
var _helpers5 = require("../../plugins/blockquote/helpers");
|
|
29
28
|
var _helper2 = require("../../plugins/multi-column/helper");
|
|
29
|
+
var _utils = require("../../utils");
|
|
30
30
|
require("./style.css");
|
|
31
31
|
const QuickInsertBlockMenu = _ref => {
|
|
32
32
|
let {
|
|
@@ -34,12 +34,15 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
34
34
|
slateNode,
|
|
35
35
|
callback,
|
|
36
36
|
isEmptyNode,
|
|
37
|
+
handleClosePopover,
|
|
37
38
|
t
|
|
38
39
|
} = _ref;
|
|
39
40
|
const editor = (0, _slateReact.useSlateStatic)();
|
|
41
|
+
const tableSizeRef = (0, _react.useRef)(null);
|
|
42
|
+
const inputWrapperRef = (0, _react.useRef)(null);
|
|
40
43
|
const downDownWrapperRef = (0, _react.useRef)(null);
|
|
41
|
-
const [currentSelectIndex, setCurrentSelectIndex] = (0, _react.useState)(
|
|
42
|
-
const [quickInsertMenuSearchMap, setQuickInsertMenuSearchMap] = (0, _react.useState)(_constants.
|
|
44
|
+
const [currentSelectIndex, setCurrentSelectIndex] = (0, _react.useState)(-1); // -1 is input focus position
|
|
45
|
+
const [quickInsertMenuSearchMap, setQuickInsertMenuSearchMap] = (0, _react.useState)(_constants.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP);
|
|
43
46
|
const onInsertImageToggle = (0, _react.useCallback)(() => {
|
|
44
47
|
callback && callback();
|
|
45
48
|
const eventBus = _eventBus.default.getInstance();
|
|
@@ -135,10 +138,6 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
135
138
|
});
|
|
136
139
|
return !!callout;
|
|
137
140
|
}, [editor]);
|
|
138
|
-
const onInsertBlockQuote = (0, _react.useCallback)(() => {
|
|
139
|
-
callback && callback();
|
|
140
|
-
(0, _helpers5.insertBlockQuote)(editor, false);
|
|
141
|
-
}, [callback, editor]);
|
|
142
141
|
const createMultiColumn = (0, _react.useCallback)(type => {
|
|
143
142
|
callback && callback();
|
|
144
143
|
const newInsertPosition = slateNode.type === _constants.ELEMENT_TYPE.LIST_ITEM ? _constants.INSERT_POSITION.AFTER : insertPosition;
|
|
@@ -146,49 +145,6 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
146
145
|
}, [callback, editor, insertPosition, slateNode]);
|
|
147
146
|
const dropDownItems = (0, _react.useMemo)(() => {
|
|
148
147
|
let items = {
|
|
149
|
-
[_constants.PARAGRAPH]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
150
|
-
isHidden: !quickInsertMenuSearchMap[_constants.PARAGRAPH],
|
|
151
|
-
disabled: isEmptyNode,
|
|
152
|
-
key: "sdoc-insert-menu-paragraph",
|
|
153
|
-
menuConfig: {
|
|
154
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.PARAGRAPH]
|
|
155
|
-
},
|
|
156
|
-
onClick: () => onInsert(_constants.ELEMENT_TYPE.PARAGRAPH)
|
|
157
|
-
}),
|
|
158
|
-
[_constants.ELEMENT_TYPE.HEADER]: _constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.HEADER].map(item => /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
159
|
-
isHidden: !quickInsertMenuSearchMap[item.type],
|
|
160
|
-
key: item.id,
|
|
161
|
-
menuConfig: item,
|
|
162
|
-
onClick: () => onInsert(item.type)
|
|
163
|
-
})),
|
|
164
|
-
[_constants.UNORDERED_LIST]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
165
|
-
isHidden: !quickInsertMenuSearchMap[_constants.UNORDERED_LIST],
|
|
166
|
-
key: "sdoc-insert-menu-unorder-list",
|
|
167
|
-
menuConfig: {
|
|
168
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.UNORDERED_LIST]
|
|
169
|
-
},
|
|
170
|
-
onClick: () => {
|
|
171
|
-
onInsertList(_constants.ELEMENT_TYPE.UNORDERED_LIST);
|
|
172
|
-
}
|
|
173
|
-
}),
|
|
174
|
-
[_constants.ORDERED_LIST]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
175
|
-
isHidden: !quickInsertMenuSearchMap[_constants.ORDERED_LIST],
|
|
176
|
-
key: "sdoc-insert-menu-order-list",
|
|
177
|
-
menuConfig: {
|
|
178
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.ORDERED_LIST]
|
|
179
|
-
},
|
|
180
|
-
onClick: () => {
|
|
181
|
-
onInsertList(_constants.ELEMENT_TYPE.ORDERED_LIST);
|
|
182
|
-
}
|
|
183
|
-
}),
|
|
184
|
-
[_constants.CHECK_LIST_ITEM]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
185
|
-
isHidden: !quickInsertMenuSearchMap[_constants.CHECK_LIST_ITEM],
|
|
186
|
-
key: "sdoc-insert-menu-check-list",
|
|
187
|
-
menuConfig: {
|
|
188
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM]
|
|
189
|
-
},
|
|
190
|
-
onClick: onInsertCheckList
|
|
191
|
-
}),
|
|
192
148
|
[_constants.IMAGE]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
193
149
|
isHidden: !quickInsertMenuSearchMap[_constants.IMAGE],
|
|
194
150
|
disabled: isDisableImage,
|
|
@@ -220,12 +176,15 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
220
176
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
221
177
|
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
222
178
|
}), /*#__PURE__*/_react.default.createElement(_tableSizePopover.default, {
|
|
179
|
+
tableSizeRef: tableSizeRef,
|
|
223
180
|
editor: editor,
|
|
224
181
|
target: "sdoc-side-menu-item-table",
|
|
225
182
|
trigger: "hover",
|
|
226
183
|
placement: "left-start",
|
|
227
184
|
popperClassName: "sdoc-side-menu-table-size sdoc-insert-element-table-size-wrapper",
|
|
228
|
-
createTable: createTable
|
|
185
|
+
createTable: createTable,
|
|
186
|
+
callback: callback,
|
|
187
|
+
handleClosePopover: handleClosePopover
|
|
229
188
|
})),
|
|
230
189
|
[_constants.LINK]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
231
190
|
isHidden: !quickInsertMenuSearchMap[_constants.LINK],
|
|
@@ -235,14 +194,6 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
235
194
|
},
|
|
236
195
|
onClick: openLinkDialog
|
|
237
196
|
}),
|
|
238
|
-
[_constants.BLOCKQUOTE]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
239
|
-
isHidden: !quickInsertMenuSearchMap[_constants.BLOCKQUOTE],
|
|
240
|
-
key: "sdoc-insert-menu-blockquote",
|
|
241
|
-
menuConfig: {
|
|
242
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.BLOCKQUOTE]
|
|
243
|
-
},
|
|
244
|
-
onClick: onInsertBlockQuote
|
|
245
|
-
}),
|
|
246
197
|
[_constants.CODE_BLOCK]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
247
198
|
isHidden: !quickInsertMenuSearchMap[_constants.CODE_BLOCK],
|
|
248
199
|
key: "sdoc-insert-menu-code-block",
|
|
@@ -259,8 +210,53 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
259
210
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CALL_OUT]
|
|
260
211
|
},
|
|
261
212
|
onClick: () => onInsertCallout(_constants.PARAGRAPH)
|
|
213
|
+
}),
|
|
214
|
+
[_constants.UNORDERED_LIST]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
215
|
+
isHidden: !quickInsertMenuSearchMap[_constants.UNORDERED_LIST],
|
|
216
|
+
key: "sdoc-insert-menu-unorder-list",
|
|
217
|
+
menuConfig: {
|
|
218
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.UNORDERED_LIST]
|
|
219
|
+
},
|
|
220
|
+
onClick: () => {
|
|
221
|
+
onInsertList(_constants.ELEMENT_TYPE.UNORDERED_LIST);
|
|
222
|
+
}
|
|
223
|
+
}),
|
|
224
|
+
[_constants.ORDERED_LIST]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
225
|
+
isHidden: !quickInsertMenuSearchMap[_constants.ORDERED_LIST],
|
|
226
|
+
key: "sdoc-insert-menu-order-list",
|
|
227
|
+
menuConfig: {
|
|
228
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.ORDERED_LIST]
|
|
229
|
+
},
|
|
230
|
+
onClick: () => {
|
|
231
|
+
onInsertList(_constants.ELEMENT_TYPE.ORDERED_LIST);
|
|
232
|
+
}
|
|
233
|
+
}),
|
|
234
|
+
[_constants.CHECK_LIST_ITEM]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
235
|
+
isHidden: !quickInsertMenuSearchMap[_constants.CHECK_LIST_ITEM],
|
|
236
|
+
key: "sdoc-insert-menu-check-list",
|
|
237
|
+
menuConfig: {
|
|
238
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM]
|
|
239
|
+
},
|
|
240
|
+
onClick: onInsertCheckList
|
|
241
|
+
}),
|
|
242
|
+
[_constants.PARAGRAPH]: /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
243
|
+
isHidden: !quickInsertMenuSearchMap[_constants.PARAGRAPH],
|
|
244
|
+
disabled: isEmptyNode,
|
|
245
|
+
key: "sdoc-insert-menu-paragraph",
|
|
246
|
+
menuConfig: {
|
|
247
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.PARAGRAPH]
|
|
248
|
+
},
|
|
249
|
+
onClick: () => onInsert(_constants.ELEMENT_TYPE.PARAGRAPH)
|
|
262
250
|
})
|
|
263
251
|
};
|
|
252
|
+
_constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.HEADER].forEach(item => {
|
|
253
|
+
items[item.id.toLowerCase()] = /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
254
|
+
isHidden: !quickInsertMenuSearchMap[item.type],
|
|
255
|
+
key: item.id,
|
|
256
|
+
menuConfig: item,
|
|
257
|
+
onClick: () => onInsert(item.type)
|
|
258
|
+
});
|
|
259
|
+
});
|
|
264
260
|
_constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.MULTI_COLUMN].forEach(item => {
|
|
265
261
|
items[item.id.toLowerCase()] = /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
266
262
|
isHidden: !quickInsertMenuSearchMap[item.type],
|
|
@@ -274,19 +270,33 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
274
270
|
delete items[_constants.VIDEO];
|
|
275
271
|
}
|
|
276
272
|
return items;
|
|
277
|
-
}, [isDisableImage, onInsertImageToggle, isDisableVideo, onInsertVideoToggle, editor, createTable,
|
|
273
|
+
}, [quickInsertMenuSearchMap, isDisableImage, onInsertImageToggle, isDisableVideo, onInsertVideoToggle, editor, createTable, callback, handleClosePopover, openLinkDialog, onInsertCodeBlock, isDisableCallout, onInsertCheckList, isEmptyNode, onInsertCallout, onInsertList, onInsert, createMultiColumn]);
|
|
278
274
|
const getSelectItemDom = selectIndex => {
|
|
279
275
|
const dropDownItemWrapper = downDownWrapperRef.current;
|
|
280
|
-
const
|
|
276
|
+
const searchedDropDownItemWrapper = [];
|
|
277
|
+
Array.from(dropDownItemWrapper.children).forEach(item => {
|
|
278
|
+
if (!Array.from(item.classList).includes('sdoc-dropdown-menu-item-hidden')) {
|
|
279
|
+
searchedDropDownItemWrapper.push(item);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
const currentSelectItem = searchedDropDownItemWrapper[selectIndex];
|
|
281
283
|
return currentSelectItem;
|
|
282
284
|
};
|
|
283
285
|
const handleKeyDown = (0, _react.useCallback)(e => {
|
|
286
|
+
if (document.getElementsByClassName('sdoc-selected-table-size-popover')[0]) {
|
|
287
|
+
tableSizeRef.current.handleTableSizeKeyDown(e);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
284
290
|
const {
|
|
285
291
|
UpArrow,
|
|
286
292
|
DownArrow,
|
|
287
|
-
Enter
|
|
293
|
+
Enter,
|
|
294
|
+
Esc
|
|
288
295
|
} = _keyCodes.default;
|
|
289
|
-
const renderItems =
|
|
296
|
+
const renderItems = [];
|
|
297
|
+
Reflect.ownKeys(dropDownItems).forEach(key => {
|
|
298
|
+
if (quickInsertMenuSearchMap[key]) renderItems.push(key);
|
|
299
|
+
});
|
|
290
300
|
const {
|
|
291
301
|
keyCode
|
|
292
302
|
} = e;
|
|
@@ -294,52 +304,71 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
294
304
|
e.preventDefault();
|
|
295
305
|
const currentSelectItem = getSelectItemDom(currentSelectIndex);
|
|
296
306
|
if (currentSelectItem) currentSelectItem.classList.remove(_const.SELECTED_ITEM_CLASS_NAME);
|
|
297
|
-
if (currentSelectIndex >
|
|
307
|
+
if (currentSelectIndex > -1) {
|
|
298
308
|
setCurrentSelectIndex(currentSelectIndex - 1);
|
|
299
|
-
} else {
|
|
300
|
-
setCurrentSelectIndex(renderItems.length - 1);
|
|
301
309
|
}
|
|
302
310
|
}
|
|
303
311
|
if (keyCode === DownArrow) {
|
|
304
312
|
e.preventDefault();
|
|
313
|
+
if (currentSelectIndex === renderItems.length - 1) return;
|
|
305
314
|
const currentSelectItem = getSelectItemDom(currentSelectIndex);
|
|
306
315
|
if (currentSelectItem) currentSelectItem.classList.remove(_const.SELECTED_ITEM_CLASS_NAME);
|
|
307
316
|
if (currentSelectIndex < renderItems.length - 1) {
|
|
308
317
|
setCurrentSelectIndex(currentSelectIndex + 1);
|
|
309
|
-
} else {
|
|
310
|
-
setCurrentSelectIndex(0);
|
|
311
318
|
}
|
|
312
319
|
}
|
|
313
320
|
if (keyCode === Enter) {
|
|
314
321
|
e.preventDefault();
|
|
315
322
|
const item = renderItems[currentSelectIndex];
|
|
323
|
+
if (item === _constants.TABLE) {
|
|
324
|
+
tableSizeRef.current.uncontrolledPopoverRef.current.toggle();
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
316
327
|
const {
|
|
317
328
|
disabled,
|
|
318
329
|
onClick
|
|
319
330
|
} = dropDownItems[item].props;
|
|
320
331
|
!disabled && onClick();
|
|
321
332
|
}
|
|
322
|
-
|
|
333
|
+
if (keyCode === Esc) {
|
|
334
|
+
e.preventDefault();
|
|
335
|
+
handleClosePopover();
|
|
336
|
+
}
|
|
337
|
+
}, [currentSelectIndex, dropDownItems, handleClosePopover, quickInsertMenuSearchMap]);
|
|
323
338
|
(0, _react.useEffect)(() => {
|
|
324
339
|
document.addEventListener('keydown', handleKeyDown);
|
|
325
340
|
return () => {
|
|
326
341
|
document.removeEventListener('keydown', handleKeyDown);
|
|
327
342
|
};
|
|
343
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
328
344
|
}, [handleKeyDown]);
|
|
329
345
|
const clearSelectStyle = (0, _react.useCallback)(() => {
|
|
330
346
|
const domList = Array.from(downDownWrapperRef.current.children);
|
|
331
347
|
domList.forEach(dom => dom.classList.remove(_const.SELECTED_ITEM_CLASS_NAME));
|
|
332
348
|
}, []);
|
|
349
|
+
const onHandleInputFocus = (0, _react.useCallback)(isFocus => {
|
|
350
|
+
if (inputWrapperRef.current) {
|
|
351
|
+
queueMicrotask(() => {
|
|
352
|
+
isFocus ? inputWrapperRef.current.focus() : inputWrapperRef.current.blur();
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}, []);
|
|
333
356
|
(0, _react.useEffect)(() => {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
357
|
+
if (currentSelectIndex === -1) {
|
|
358
|
+
onHandleInputFocus(true);
|
|
359
|
+
} else {
|
|
360
|
+
onHandleInputFocus(false);
|
|
361
|
+
clearSelectStyle();
|
|
362
|
+
const currentSelectItem = getSelectItemDom(currentSelectIndex);
|
|
363
|
+
if (currentSelectItem) {
|
|
364
|
+
(0, _utils.onHandleOverflowScroll)(currentSelectItem, downDownWrapperRef);
|
|
365
|
+
currentSelectItem.classList.add(_const.SELECTED_ITEM_CLASS_NAME);
|
|
366
|
+
}
|
|
338
367
|
}
|
|
339
|
-
}, [clearSelectStyle, currentSelectIndex,
|
|
368
|
+
}, [clearSelectStyle, currentSelectIndex, downDownWrapperRef, onHandleInputFocus]);
|
|
340
369
|
const onChange = (0, _react.useCallback)(e => {
|
|
341
370
|
if (!downDownWrapperRef.current.isInputtingChinese) {
|
|
342
|
-
const newMenuSearchMap = (0, _helpers.getSearchedOperations)(_constants.
|
|
371
|
+
const newMenuSearchMap = (0, _helpers.getSearchedOperations)(_constants.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP, true, e, t, editor);
|
|
343
372
|
setQuickInsertMenuSearchMap(newMenuSearchMap);
|
|
344
373
|
}
|
|
345
374
|
}, [editor, t]);
|
|
@@ -351,17 +380,18 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
351
380
|
onChange(e);
|
|
352
381
|
}, [onChange]);
|
|
353
382
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
354
|
-
className: "sdoc-insert-element-toolbar"
|
|
355
|
-
ref: downDownWrapperRef
|
|
383
|
+
className: "sdoc-insert-element-toolbar"
|
|
356
384
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
357
385
|
className: "sdoc-side-menu-search-wrapper"
|
|
358
386
|
}, /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
|
|
387
|
+
innerRef: inputWrapperRef,
|
|
359
388
|
placeholder: t('Search_action'),
|
|
360
389
|
onChange: onChange,
|
|
361
390
|
onCompositionStart: onCompositionStart,
|
|
362
391
|
onCompositionEnd: onCompositionEnd
|
|
363
392
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
364
|
-
className: "sdoc-insert-element-content-wrapper"
|
|
393
|
+
className: "sdoc-insert-element-content-wrapper",
|
|
394
|
+
ref: downDownWrapperRef
|
|
365
395
|
}, Object.keys(dropDownItems).map(key => {
|
|
366
396
|
return dropDownItems[key];
|
|
367
397
|
}), Object.keys(quickInsertMenuSearchMap).length === 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -106,7 +106,37 @@ const InsertBlockMenu = _ref => {
|
|
|
106
106
|
const newInsertPosition = slateNode.type === _constants.ELEMENT_TYPE.LIST_ITEM ? _constants.INSERT_POSITION.AFTER : insertPosition;
|
|
107
107
|
(0, _helper2.insertMultiColumn)(editor, editor.selection, newInsertPosition, type);
|
|
108
108
|
}, [editor, insertPosition, slateNode]);
|
|
109
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null,
|
|
109
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, [_constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.PARAGRAPH], ..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.HEADER]].map(item => {
|
|
110
|
+
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
111
|
+
isHidden: !insertMenuSearchMap[item.type],
|
|
112
|
+
disabled: isNodeEmpty && item.type === _constants.PARAGRAPH,
|
|
113
|
+
key: item.id,
|
|
114
|
+
menuConfig: item,
|
|
115
|
+
onClick: () => onInsert(item.type)
|
|
116
|
+
});
|
|
117
|
+
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
118
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.UNORDERED_LIST],
|
|
119
|
+
menuConfig: {
|
|
120
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.UNORDERED_LIST]
|
|
121
|
+
},
|
|
122
|
+
onClick: () => {
|
|
123
|
+
onInsertList(_constants.ELEMENT_TYPE.UNORDERED_LIST);
|
|
124
|
+
}
|
|
125
|
+
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
126
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.ORDERED_LIST],
|
|
127
|
+
menuConfig: {
|
|
128
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.ORDERED_LIST]
|
|
129
|
+
},
|
|
130
|
+
onClick: () => {
|
|
131
|
+
onInsertList(_constants.ELEMENT_TYPE.ORDERED_LIST);
|
|
132
|
+
}
|
|
133
|
+
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
134
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM],
|
|
135
|
+
menuConfig: {
|
|
136
|
+
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM]
|
|
137
|
+
},
|
|
138
|
+
onClick: onInsertCheckList
|
|
139
|
+
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
110
140
|
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.IMAGE],
|
|
111
141
|
menuConfig: {
|
|
112
142
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.IMAGE]
|
|
@@ -151,36 +181,6 @@ const InsertBlockMenu = _ref => {
|
|
|
151
181
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CALL_OUT]
|
|
152
182
|
},
|
|
153
183
|
onClick: () => onInsertCallout(_constants.PARAGRAPH)
|
|
154
|
-
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
155
|
-
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.UNORDERED_LIST],
|
|
156
|
-
menuConfig: {
|
|
157
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.UNORDERED_LIST]
|
|
158
|
-
},
|
|
159
|
-
onClick: () => {
|
|
160
|
-
onInsertList(_constants.ELEMENT_TYPE.UNORDERED_LIST);
|
|
161
|
-
}
|
|
162
|
-
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
163
|
-
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.ORDERED_LIST],
|
|
164
|
-
menuConfig: {
|
|
165
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.ORDERED_LIST]
|
|
166
|
-
},
|
|
167
|
-
onClick: () => {
|
|
168
|
-
onInsertList(_constants.ELEMENT_TYPE.ORDERED_LIST);
|
|
169
|
-
}
|
|
170
|
-
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
171
|
-
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM],
|
|
172
|
-
menuConfig: {
|
|
173
|
-
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM]
|
|
174
|
-
},
|
|
175
|
-
onClick: onInsertCheckList
|
|
176
|
-
}), [_constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.PARAGRAPH], ..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.HEADER]].map(item => {
|
|
177
|
-
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
178
|
-
isHidden: !insertMenuSearchMap[item.type],
|
|
179
|
-
disabled: isNodeEmpty && item.type === _constants.PARAGRAPH,
|
|
180
|
-
key: item.id,
|
|
181
|
-
menuConfig: item,
|
|
182
|
-
onClick: () => onInsert(item.type)
|
|
183
|
-
});
|
|
184
184
|
}), _constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.MULTI_COLUMN].map(item => {
|
|
185
185
|
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
186
186
|
isHidden: !insertMenuSearchMap[item.type],
|
|
@@ -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.isSameDomain = exports.isOverflowPortByDirection = exports.isImage = exports.IMAGE_TYPES = void 0;
|
|
7
|
+
exports.onHandleOverflowScroll = exports.isSameDomain = exports.isOverflowPortByDirection = exports.isImage = exports.IMAGE_TYPES = void 0;
|
|
8
8
|
var _isUrl = _interopRequireDefault(require("is-url"));
|
|
9
9
|
const IMAGE_TYPES = exports.IMAGE_TYPES = ['png', 'jpg', 'gif'];
|
|
10
10
|
const isImage = url => {
|
|
@@ -41,4 +41,31 @@ const isOverflowPortByDirection = (element, direction) => {
|
|
|
41
41
|
return right >= viewWidth;
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
exports.isOverflowPortByDirection = isOverflowPortByDirection;
|
|
44
|
+
exports.isOverflowPortByDirection = isOverflowPortByDirection;
|
|
45
|
+
const onHandleOverflowScroll = (currentSelectItem, downDownWrapperRef) => {
|
|
46
|
+
const {
|
|
47
|
+
bottom: curBottom,
|
|
48
|
+
top: curTop
|
|
49
|
+
} = currentSelectItem.getBoundingClientRect();
|
|
50
|
+
const {
|
|
51
|
+
bottom: containerBottom
|
|
52
|
+
} = downDownWrapperRef.current.parentNode.getBoundingClientRect();
|
|
53
|
+
const {
|
|
54
|
+
top: containerTop
|
|
55
|
+
} = downDownWrapperRef.current.getBoundingClientRect();
|
|
56
|
+
if (curBottom > containerBottom) {
|
|
57
|
+
const scrollTop = downDownWrapperRef.current.scrollTop + 100;
|
|
58
|
+
downDownWrapperRef.current.scrollTo({
|
|
59
|
+
top: scrollTop,
|
|
60
|
+
behavior: 'smooth'
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (curTop < containerTop) {
|
|
64
|
+
const scrollTop = downDownWrapperRef.current.scrollTop - 100;
|
|
65
|
+
downDownWrapperRef.current.scrollTo({
|
|
66
|
+
top: scrollTop,
|
|
67
|
+
behavior: 'smooth'
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.onHandleOverflowScroll = onHandleOverflowScroll;
|
|
@@ -32,7 +32,8 @@ const DocInfo = _ref => {
|
|
|
32
32
|
const {
|
|
33
33
|
isShowInternalLink,
|
|
34
34
|
isStarIconShown,
|
|
35
|
-
isFreezed
|
|
35
|
+
isFreezed,
|
|
36
|
+
mobileLogin
|
|
36
37
|
} = _context.default.getSettings();
|
|
37
38
|
const onInternalLinkClick = (0, _react.useCallback)(() => {
|
|
38
39
|
const eventBus = _basicSdk.EventBus.getInstance();
|
|
@@ -52,12 +53,12 @@ const DocInfo = _ref => {
|
|
|
52
53
|
const originFileURL = _context.default.getSetting('originFileURL');
|
|
53
54
|
window.open(originFileURL, '_blank');
|
|
54
55
|
}, []);
|
|
55
|
-
const docInfo = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isDraft && /*#__PURE__*/_react.default.createElement(_draftDropdown.default, null), isStarIconShown && /*#__PURE__*/_react.default.createElement("button", {
|
|
56
|
+
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", {
|
|
56
57
|
className: `doc-icon sdocfont ${isStarred ? 'sdoc-starred' : 'sdoc-unstarred'} border-0 p-0 bg-transparent`,
|
|
57
58
|
title: isStarred ? t('Starred') : t('Unstarred'),
|
|
58
59
|
"aria-label": isStarred ? t('Unstar') : t('Star'),
|
|
59
60
|
onClick: toggleStar
|
|
60
|
-
}), isShowInternalLink && /*#__PURE__*/_react.default.createElement("span", {
|
|
61
|
+
}), isShowInternalLink && !mobileLogin && /*#__PURE__*/_react.default.createElement("span", {
|
|
61
62
|
className: "doc-icon"
|
|
62
63
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
63
64
|
className: "internal-link sdocfont sdoc-link",
|
|
@@ -18,6 +18,7 @@ require("./style.css");
|
|
|
18
18
|
const DocOperations = _ref => {
|
|
19
19
|
let {
|
|
20
20
|
isShowChanges,
|
|
21
|
+
isStarred,
|
|
21
22
|
isPublished = false,
|
|
22
23
|
changes,
|
|
23
24
|
handleViewChangesToggle,
|
|
@@ -25,10 +26,13 @@ const DocOperations = _ref => {
|
|
|
25
26
|
handleRevisionPublished
|
|
26
27
|
} = _ref;
|
|
27
28
|
const isSdocRevision = _context.default.getSetting('isSdocRevision');
|
|
29
|
+
const mobileLogin = _context.default.getSetting('mobileLogin');
|
|
28
30
|
if (_utils.isMobile) {
|
|
29
31
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
30
32
|
className: "doc-ops"
|
|
31
|
-
}, !isSdocRevision && /*#__PURE__*/_react.default.createElement(_shareOperation.default, null), !isSdocRevision && /*#__PURE__*/_react.default.createElement(_moreOperations.default,
|
|
33
|
+
}, !isSdocRevision && !mobileLogin && /*#__PURE__*/_react.default.createElement(_shareOperation.default, null), !isSdocRevision && /*#__PURE__*/_react.default.createElement(_moreOperations.default, {
|
|
34
|
+
isStarred: isStarred
|
|
35
|
+
}));
|
|
32
36
|
}
|
|
33
37
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
34
38
|
className: "doc-ops"
|
|
@@ -20,6 +20,7 @@ var _constants = require("../../constants");
|
|
|
20
20
|
var _constants2 = require("../../basic-sdk/constants");
|
|
21
21
|
const MoreOperations = _ref => {
|
|
22
22
|
let {
|
|
23
|
+
isStarred,
|
|
23
24
|
t
|
|
24
25
|
} = _ref;
|
|
25
26
|
const [isDropdownOpen, setIsDropdownOpen] = (0, _react.useState)(false);
|
|
@@ -30,6 +31,7 @@ const MoreOperations = _ref => {
|
|
|
30
31
|
const docPerm = _context.default.getSetting('docPerm');
|
|
31
32
|
const historyURL = _context.default.getSetting('historyURL');
|
|
32
33
|
const isSdocRevision = _context.default.getSetting('isSdocRevision');
|
|
34
|
+
const mobileLogin = _context.default.getSetting('mobileLogin');
|
|
33
35
|
const cssUrls = _context.default.getPrintCss();
|
|
34
36
|
(0, _react.useEffect)(() => {
|
|
35
37
|
const eventBus = _basicSdk.EventBus.getInstance();
|
|
@@ -83,8 +85,26 @@ const MoreOperations = _ref => {
|
|
|
83
85
|
eventBus.dispatch(_constants2.INTERNAL_EVENT.RESIZE_ARTICLE);
|
|
84
86
|
setIsFullWidthMode(newMode);
|
|
85
87
|
}, [isFullWidthMode]);
|
|
88
|
+
const toggleStar = (0, _react.useCallback)(() => {
|
|
89
|
+
const eventBus = _basicSdk.EventBus.getInstance();
|
|
90
|
+
eventBus.dispatch(_constants.EXTERNAL_EVENT.TOGGLE_STAR);
|
|
91
|
+
}, []);
|
|
92
|
+
const onShareToggle = (0, _react.useCallback)(() => {
|
|
93
|
+
const eventBus = _basicSdk.EventBus.getInstance();
|
|
94
|
+
eventBus.dispatch(_constants.EXTERNAL_EVENT.SHARE_SDOC);
|
|
95
|
+
}, []);
|
|
96
|
+
const onInternalLinkClick = (0, _react.useCallback)(() => {
|
|
97
|
+
const eventBus = _basicSdk.EventBus.getInstance();
|
|
98
|
+
if (isSdocRevision) {
|
|
99
|
+
eventBus.dispatch(_constants.EXTERNAL_EVENT.INTERNAL_LINK_CLICK, {
|
|
100
|
+
internalLink: window.location.href
|
|
101
|
+
});
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
eventBus.dispatch(_constants.EXTERNAL_EVENT.INTERNAL_LINK_CLICK);
|
|
105
|
+
}, [isSdocRevision]);
|
|
86
106
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.Dropdown, {
|
|
87
|
-
className:
|
|
107
|
+
className: `sdoc-operator-folder ${mobileLogin ? 'mobile-login' : ''}`,
|
|
88
108
|
isOpen: isDropdownOpen,
|
|
89
109
|
toggle: event => toggleDropdown(event, isDropdownOpen)
|
|
90
110
|
}, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
|
|
@@ -95,7 +115,18 @@ const MoreOperations = _ref => {
|
|
|
95
115
|
})), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownMenu, {
|
|
96
116
|
className: "sdoc-dropdown-menu",
|
|
97
117
|
right: true
|
|
98
|
-
}, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
118
|
+
}, mobileLogin && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
119
|
+
className: "sdoc-dropdown-menu-item",
|
|
120
|
+
onClick: toggleStar
|
|
121
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, isStarred ? t('Collected') : t('Collect'))), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
122
|
+
className: "sdoc-dropdown-menu-item",
|
|
123
|
+
onClick: onShareToggle
|
|
124
|
+
}, t('Share_1')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
125
|
+
className: "sdoc-dropdown-menu-item",
|
|
126
|
+
onClick: onInternalLinkClick
|
|
127
|
+
}, t('Internal_link')), /*#__PURE__*/_react.default.createElement("div", {
|
|
128
|
+
className: "sdoc-operator-folder-divider"
|
|
129
|
+
})), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
99
130
|
className: "sdoc-dropdown-menu-item",
|
|
100
131
|
onClick: handlePrint
|
|
101
132
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -111,7 +142,7 @@ const MoreOperations = _ref => {
|
|
|
111
142
|
}, t('Freeze_document')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
112
143
|
className: "sdoc-dropdown-menu-item",
|
|
113
144
|
onClick: handleClickHistory
|
|
114
|
-
}, t('Document_history')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
145
|
+
}, t('Document_history')), !_utils.isMobile && /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
115
146
|
id: "sdoc-full-width-mode-wrapper",
|
|
116
147
|
className: "sdoc-dropdown-menu-item"
|
|
117
148
|
}, /*#__PURE__*/_react.default.createElement(_DTableSwitch2.default, {
|
package/dist/utils/index.js
CHANGED
|
@@ -25,7 +25,7 @@ Object.defineProperty(exports, "getEventTransfer", {
|
|
|
25
25
|
return _getEventTransfer.default;
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
|
-
exports.resetWebTitle = exports.isMobile = exports.isMac = exports.isEnglish = exports.getSelectionCoords = exports.getMaximumCapacity = exports.getImageFileNameWithTimestamp = void 0;
|
|
28
|
+
exports.resetWebTitle = exports.isMobile = exports.isMac = exports.isEnglish = exports.getSelectionCoords = exports.getMaximumCapacity = exports.getLocalStorageFiles = exports.getImageFileNameWithTimestamp = void 0;
|
|
29
29
|
var _dateUtils = _interopRequireDefault(require("./date-utils"));
|
|
30
30
|
var _localStorageUtils = _interopRequireDefault(require("./local-storage-utils"));
|
|
31
31
|
var _context = _interopRequireDefault(require("../context"));
|
|
@@ -170,4 +170,15 @@ const getMaximumCapacity = files => {
|
|
|
170
170
|
});
|
|
171
171
|
return newFiles;
|
|
172
172
|
};
|
|
173
|
-
exports.getMaximumCapacity = getMaximumCapacity;
|
|
173
|
+
exports.getMaximumCapacity = getMaximumCapacity;
|
|
174
|
+
const getLocalStorageFiles = files => {
|
|
175
|
+
const wikiRepoId = window.wiki.config.wikiId;
|
|
176
|
+
const newFiles = [];
|
|
177
|
+
files.forEach(item => {
|
|
178
|
+
if ((item === null || item === void 0 ? void 0 : item.wikiRepoId) === wikiRepoId) {
|
|
179
|
+
newFiles.push(item);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
return newFiles;
|
|
183
|
+
};
|
|
184
|
+
exports.getLocalStorageFiles = getLocalStorageFiles;
|
package/package.json
CHANGED
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Sdílet",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Freigeben",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Share",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Compartir",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Compartir",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Compartir",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Partager",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -578,5 +578,8 @@
|
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Token expired. Please refresh the page.",
|
|
579
579
|
"Link_to_page": "Link to page",
|
|
580
580
|
"No_page_results": "No page results",
|
|
581
|
-
"Page": "Page"
|
|
581
|
+
"Page": "Page",
|
|
582
|
+
"Share_1": "Condividi",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|
|
@@ -577,6 +577,9 @@
|
|
|
577
577
|
"The_current_version_does_not_support_>5MB_video_file": "Текущая_версия_не_поддерживает_видео_файл_>5_МБ",
|
|
578
578
|
"Token_expired_Please_refresh_the_page": "Срок действия токена истек. Обновите страницу.",
|
|
579
579
|
"Link_to_page": "Ссылка на страницу",
|
|
580
|
-
"No_page_results": "
|
|
581
|
-
"Page": "
|
|
580
|
+
"No_page_results": "Нет результатов на странице",
|
|
581
|
+
"Page": "Страница",
|
|
582
|
+
"Share_1": "Общий доступ",
|
|
583
|
+
"Collect": "Collect",
|
|
584
|
+
"Collected": "Collected"
|
|
582
585
|
}
|