@seafile/sdoc-editor 1.0.174 → 1.0.176-beta
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/plugins/text-style/menu/comemnt-editor-menu.js +7 -11
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +3 -16
- 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/components/doc-operations/revision-operations/more-revision-operations/index.js +4 -0
- package/dist/components/doc-operations/revision-operations/revisions/index.js +13 -0
- package/dist/constants/index.js +3 -1
- 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
- package/public/media/sdoc-editor-font/iconfont.css +542 -0
- package/public/media/sdoc-editor-font/iconfont.eot +0 -0
- package/public/media/sdoc-editor-font/iconfont.svg +16 -0
- package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
- package/public/media/sdoc-editor-font.css +38 -6
|
@@ -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 = {
|
|
@@ -12,20 +12,14 @@ var _core = require("../../../core");
|
|
|
12
12
|
var _commons = require("../../../commons");
|
|
13
13
|
var _helpers = require("../helpers");
|
|
14
14
|
var _menusConfig = require("../../../constants/menus-config");
|
|
15
|
-
const
|
|
16
|
-
let {
|
|
17
|
-
id
|
|
18
|
-
} = _ref;
|
|
19
|
-
return [_menusConfig.BOLD, _menusConfig.ITALIC].includes(id);
|
|
20
|
-
};
|
|
21
|
-
const CommentEditorTextStyleMenuList = _ref2 => {
|
|
15
|
+
const CommentEditorTextStyleMenuList = _ref => {
|
|
22
16
|
let {
|
|
23
17
|
editor,
|
|
24
18
|
isRichEditor,
|
|
25
19
|
className,
|
|
26
20
|
idPrefix,
|
|
27
21
|
readonly
|
|
28
|
-
} =
|
|
22
|
+
} = _ref;
|
|
29
23
|
const isActive = (0, _react.useCallback)(type => {
|
|
30
24
|
const isMark = (0, _helpers.getValue)(editor, type);
|
|
31
25
|
return !!isMark;
|
|
@@ -50,8 +44,10 @@ const CommentEditorTextStyleMenuList = _ref2 => {
|
|
|
50
44
|
(0, _core.focusEditor)(editor);
|
|
51
45
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
46
|
}, [editor]);
|
|
53
|
-
const getTextStyleList = (0, _react.useCallback)(
|
|
54
|
-
|
|
47
|
+
const getTextStyleList = (0, _react.useCallback)(() => {
|
|
48
|
+
const styleMenus = _constants.MENUS_CONFIG_MAP[_constants.TEXT_STYLE];
|
|
49
|
+
const commentMenus = styleMenus.filter(item => [_menusConfig.BOLD, _menusConfig.ITALIC].includes(item.id));
|
|
50
|
+
return commentMenus.map(item => {
|
|
55
51
|
let itemProps = {
|
|
56
52
|
isRichEditor,
|
|
57
53
|
className,
|
|
@@ -68,7 +64,7 @@ const CommentEditorTextStyleMenuList = _ref2 => {
|
|
|
68
64
|
|
|
69
65
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
66
|
}, [editor, readonly]);
|
|
71
|
-
const list = getTextStyleList(
|
|
67
|
+
const list = getTextStyleList();
|
|
72
68
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, list.map((itemProps, index) => /*#__PURE__*/_react.default.createElement(_commons.MenuItem, Object.assign({
|
|
73
69
|
key: index
|
|
74
70
|
}, itemProps))));
|
|
@@ -17,15 +17,7 @@ var _fontSizeScale = _interopRequireDefault(require("../../font/menu/font-size/f
|
|
|
17
17
|
var _helpers2 = require("../helpers");
|
|
18
18
|
var _useColorContext = require("../../../../hooks/use-color-context");
|
|
19
19
|
var _mouseEvent = require("../../../../utils/mouse-event");
|
|
20
|
-
|
|
21
|
-
var _constants2 = require("../../../../constants");
|
|
22
|
-
const filterFontTypes = _ref => {
|
|
23
|
-
let {
|
|
24
|
-
id
|
|
25
|
-
} = _ref;
|
|
26
|
-
return [_menusConfig.BOLD, _menusConfig.ITALIC].includes(id);
|
|
27
|
-
};
|
|
28
|
-
const TextStyleMenuList = _ref2 => {
|
|
20
|
+
const TextStyleMenuList = _ref => {
|
|
29
21
|
let {
|
|
30
22
|
editor,
|
|
31
23
|
t,
|
|
@@ -33,10 +25,9 @@ const TextStyleMenuList = _ref2 => {
|
|
|
33
25
|
className,
|
|
34
26
|
idPrefix,
|
|
35
27
|
readonly
|
|
36
|
-
} =
|
|
28
|
+
} = _ref;
|
|
37
29
|
let selectedFontSize = (0, _helpers.getFontSize)(editor);
|
|
38
30
|
let selectedFontSizeValue = selectedFontSize;
|
|
39
|
-
const isCommentEditor = editor.editorType === _constants2.COMMENT_EDITOR;
|
|
40
31
|
const {
|
|
41
32
|
lastUsedFontColor,
|
|
42
33
|
updateLastUsedFontColor,
|
|
@@ -114,17 +105,13 @@ const TextStyleMenuList = _ref2 => {
|
|
|
114
105
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
115
106
|
}, [editor, lastUsedFontColor, lastUsedHighlightColor, readonly]);
|
|
116
107
|
let list = getTextStyleList(_constants.TEXT_STYLE);
|
|
117
|
-
// Filter for comment editor
|
|
118
|
-
if (isCommentEditor) {
|
|
119
|
-
list = list.filter(filterFontTypes);
|
|
120
|
-
}
|
|
121
108
|
const dropdownList = getTextStyleList(_constants.TEXT_STYLE_MORE);
|
|
122
109
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, list.map((itemProps, index) => {
|
|
123
110
|
const Component = itemProps.isColor ? _commons.ColorMenu : _commons.MenuItem;
|
|
124
111
|
return /*#__PURE__*/_react.default.createElement(Component, Object.assign({
|
|
125
112
|
key: index
|
|
126
113
|
}, itemProps));
|
|
127
|
-
}),
|
|
114
|
+
}), /*#__PURE__*/_react.default.createElement(_commons.MoreDropdown, null, dropdownList.map((itemProps, index) => /*#__PURE__*/_react.default.createElement(_commons.MenuItem, Object.assign({
|
|
128
115
|
key: index
|
|
129
116
|
}, itemProps))), /*#__PURE__*/_react.default.createElement(_fontSizeScale.default, {
|
|
130
117
|
disabled: isDisabled(),
|