@seafile/sdoc-editor 2.0.24 → 2.0.26
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/extension/commons/insert-element-dialog/index.js +12 -2
- package/dist/basic-sdk/extension/constants/element-type.js +3 -1
- package/dist/basic-sdk/extension/constants/index.js +14 -2
- package/dist/basic-sdk/extension/constants/menus-config.js +17 -0
- package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +12 -3
- package/dist/basic-sdk/extension/plugins/ai/ai-module/style.css +6 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.css +20 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.js +63 -0
- package/dist/basic-sdk/extension/plugins/chart/helpers.js +68 -0
- package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.css +55 -0
- package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.js +58 -0
- package/dist/basic-sdk/extension/plugins/chart/index.js +19 -0
- package/dist/basic-sdk/extension/plugins/chart/menu/index.js +31 -0
- package/dist/basic-sdk/extension/plugins/chart/plugin.js +26 -0
- package/dist/basic-sdk/extension/plugins/chart/render-elem.css +64 -0
- package/dist/basic-sdk/extension/plugins/chart/render-elem.js +154 -0
- package/dist/basic-sdk/extension/plugins/index.js +15 -1
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +414 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +76 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +209 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/ResizeHandle.js +38 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/index.css +384 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +125 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +144 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +161 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +47 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +98 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.css +3 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +46 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +62 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +124 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +160 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
- package/dist/basic-sdk/extension/plugins/seatable-tables/formatter/index.js +7 -2
- package/dist/basic-sdk/extension/render/custom-element.js +10 -0
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +5 -3
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +3 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +14 -2
- package/dist/constants/index.js +1 -0
- package/dist/pages/document-plugin-editor.js +4 -1
- package/package.json +3 -2
- package/public/locales/cs/sdoc-editor.json +10 -1
- package/public/locales/de/sdoc-editor.json +69 -60
- package/public/locales/en/sdoc-editor.json +13 -1
- package/public/locales/es/sdoc-editor.json +10 -1
- package/public/locales/es_AR/sdoc-editor.json +10 -1
- package/public/locales/es_MX/sdoc-editor.json +10 -1
- package/public/locales/fr/sdoc-editor.json +243 -234
- package/public/locales/it/sdoc-editor.json +10 -1
- package/public/locales/ru/sdoc-editor.json +11 -2
- package/public/locales/zh_CN/sdoc-editor.json +9 -1
- package/public/media/sdoc-editor-font/iconfont.css +15 -14
- package/public/media/sdoc-editor-font/iconfont.eot +0 -0
- package/public/media/sdoc-editor-font/iconfont.svg +3 -1
- 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 +11 -7
|
@@ -24,6 +24,7 @@ var _index5 = require("../../plugins/video/constants/index.js");
|
|
|
24
24
|
var _constants3 = require("../../../../basic-sdk/constants");
|
|
25
25
|
var _index6 = _interopRequireDefault(require("../../plugins/ai/ai-module/index.js"));
|
|
26
26
|
var _index7 = _interopRequireDefault(require("../../plugins/video/dialog/add-video-link-dialog/index.js"));
|
|
27
|
+
var _index8 = _interopRequireDefault(require("../../plugins/seatable-row/dialog/add-seatable-row-dialog/index.js"));
|
|
27
28
|
const InsertElementDialog = _ref => {
|
|
28
29
|
let {
|
|
29
30
|
editor
|
|
@@ -37,6 +38,7 @@ const InsertElementDialog = _ref => {
|
|
|
37
38
|
const [validEditor, setValidEditor] = (0, _react.useState)(editor);
|
|
38
39
|
const [linkTitle, setLinkTitle] = (0, _react.useState)('');
|
|
39
40
|
const [handleSubmit, setHandleSubmit] = (0, _react.useState)(() => void 0);
|
|
41
|
+
const [data, setData] = (0, _react.useState)({});
|
|
40
42
|
const {
|
|
41
43
|
t
|
|
42
44
|
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
@@ -96,7 +98,8 @@ const InsertElementDialog = _ref => {
|
|
|
96
98
|
editor: paramEditor,
|
|
97
99
|
linkTitle,
|
|
98
100
|
// link shortcut wrapping link
|
|
99
|
-
handleSubmit
|
|
101
|
+
handleSubmit,
|
|
102
|
+
data
|
|
100
103
|
} = _ref2;
|
|
101
104
|
setInsertPosition(insertPosition);
|
|
102
105
|
setSlateNode(slateNode);
|
|
@@ -113,6 +116,7 @@ const InsertElementDialog = _ref => {
|
|
|
113
116
|
setHandleSubmit(handleSubmit);
|
|
114
117
|
// Apply for comment editor, as it has a different editor instance
|
|
115
118
|
setValidEditor(paramEditor || editor);
|
|
119
|
+
setData(data);
|
|
116
120
|
if (type === _constants2.LOCAL_IMAGE) {
|
|
117
121
|
setTimeout(() => {
|
|
118
122
|
uploadLocalImageInputRef.current && uploadLocalImageInputRef.current.click();
|
|
@@ -133,6 +137,7 @@ const InsertElementDialog = _ref => {
|
|
|
133
137
|
setInsertVideoCallback(null);
|
|
134
138
|
setValidEditor(null);
|
|
135
139
|
setLinkTitle('');
|
|
140
|
+
setData('');
|
|
136
141
|
}, []);
|
|
137
142
|
const props = {
|
|
138
143
|
insertPosition,
|
|
@@ -141,7 +146,8 @@ const InsertElementDialog = _ref => {
|
|
|
141
146
|
element,
|
|
142
147
|
closeDialog,
|
|
143
148
|
linkTitle,
|
|
144
|
-
handleSubmit
|
|
149
|
+
handleSubmit,
|
|
150
|
+
data
|
|
145
151
|
};
|
|
146
152
|
switch (dialogType) {
|
|
147
153
|
case _constants2.ELEMENT_TYPE.TABLE:
|
|
@@ -240,6 +246,10 @@ const InsertElementDialog = _ref => {
|
|
|
240
246
|
closeModule: closeDialog
|
|
241
247
|
});
|
|
242
248
|
}
|
|
249
|
+
case _constants2.ELEMENT_TYPE.SEATABLE_ROW:
|
|
250
|
+
{
|
|
251
|
+
return /*#__PURE__*/_react.default.createElement(_index8.default, props);
|
|
252
|
+
}
|
|
243
253
|
default:
|
|
244
254
|
{
|
|
245
255
|
return null;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WIKI_LINK = exports.VIDEO_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SEATABLE_TABLE = exports.SEATABLE_COLUMN = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.GROUP = exports.FOUR_COLUMN = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
6
|
+
exports.WIKI_LINK = exports.VIDEO_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SEATABLE_TABLE = exports.SEATABLE_ROW = exports.SEATABLE_COLUMN = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.GROUP = exports.FOUR_COLUMN = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CHART = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
7
7
|
const BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
|
|
8
8
|
const TITLE = exports.TITLE = 'title';
|
|
9
9
|
const SUBTITLE = exports.SUBTITLE = 'subtitle';
|
|
@@ -43,7 +43,9 @@ const MENTION_TEMP = exports.MENTION_TEMP = 'mention_temp';
|
|
|
43
43
|
const FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK_INSET_INPUT_TEMP = 'file_link_insert_input_temp';
|
|
44
44
|
const QUICK_INSERT = exports.QUICK_INSERT = 'quick_insert';
|
|
45
45
|
const VIDEO_LINK = exports.VIDEO_LINK = 'video_link';
|
|
46
|
+
const CHART = exports.CHART = 'chart';
|
|
46
47
|
const SEATABLE_COLUMN = exports.SEATABLE_COLUMN = 'seatable_column';
|
|
48
|
+
const SEATABLE_ROW = exports.SEATABLE_ROW = 'seatable_row';
|
|
47
49
|
const SEATABLE_TABLE = exports.SEATABLE_TABLE = 'seatable_table';
|
|
48
50
|
const ASK_AI = exports.ASK_AI = 'ask_ai';
|
|
49
51
|
|
|
@@ -23,6 +23,12 @@ Object.defineProperty(exports, "CALL_OUT", {
|
|
|
23
23
|
return _elementType.CALL_OUT;
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
|
+
Object.defineProperty(exports, "CHART", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () {
|
|
29
|
+
return _elementType.CHART;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
26
32
|
Object.defineProperty(exports, "CHECK_LIST_ITEM", {
|
|
27
33
|
enumerable: true,
|
|
28
34
|
get: function () {
|
|
@@ -344,6 +350,12 @@ Object.defineProperty(exports, "SEATABLE_COLUMN", {
|
|
|
344
350
|
return _elementType.SEATABLE_COLUMN;
|
|
345
351
|
}
|
|
346
352
|
});
|
|
353
|
+
Object.defineProperty(exports, "SEATABLE_ROW", {
|
|
354
|
+
enumerable: true,
|
|
355
|
+
get: function () {
|
|
356
|
+
return _elementType.SEATABLE_ROW;
|
|
357
|
+
}
|
|
358
|
+
});
|
|
347
359
|
Object.defineProperty(exports, "SEATABLE_TABLE", {
|
|
348
360
|
enumerable: true,
|
|
349
361
|
get: function () {
|
|
@@ -537,7 +549,7 @@ const FILE_TYPE = exports.FILE_TYPE = {
|
|
|
537
549
|
[_elementType.SDOC_LINK]: 'sdoc',
|
|
538
550
|
[_elementType.VIDEO]: 'video'
|
|
539
551
|
};
|
|
540
|
-
const SUPPORTED_SIDE_OPERATION_TYPE = exports.SUPPORTED_SIDE_OPERATION_TYPE = [_elementType.PARAGRAPH, _elementType.SUBTITLE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CHECK_LIST_ITEM, _elementType.CODE_BLOCK, _elementType.TABLE, _elementType.BLOCKQUOTE, _elementType.CALL_OUT, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE, _elementType.MULTI_COLUMN];
|
|
552
|
+
const SUPPORTED_SIDE_OPERATION_TYPE = exports.SUPPORTED_SIDE_OPERATION_TYPE = [_elementType.PARAGRAPH, _elementType.SUBTITLE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CHECK_LIST_ITEM, _elementType.CODE_BLOCK, _elementType.TABLE, _elementType.BLOCKQUOTE, _elementType.CALL_OUT, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE, _elementType.MULTI_COLUMN, _elementType.SEATABLE_ROW];
|
|
541
553
|
const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP = {
|
|
542
554
|
[_elementType.PARAGRAPH]: [_elementType.CALL_OUT],
|
|
543
555
|
[_elementType.TITLE]: [_elementType.CALL_OUT],
|
|
@@ -555,4 +567,4 @@ const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP =
|
|
|
555
567
|
[_elementType.HEADER6]: [_elementType.CALL_OUT],
|
|
556
568
|
[_elementType.CALL_OUT]: [_elementType.CALL_OUT]
|
|
557
569
|
};
|
|
558
|
-
const ROOT_ELEMENT_TYPES = exports.ROOT_ELEMENT_TYPES = [_elementType.PARAGRAPH, _elementType.TITLE, _elementType.SUBTITLE, _elementType.CHECK_LIST_ITEM, _elementType.ORDERED_LIST, _elementType.UNORDERED_LIST, _elementType.BLOCKQUOTE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CALL_OUT, _elementType.TABLE, _elementType.CODE_BLOCK, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE];
|
|
570
|
+
const ROOT_ELEMENT_TYPES = exports.ROOT_ELEMENT_TYPES = [_elementType.PARAGRAPH, _elementType.TITLE, _elementType.SUBTITLE, _elementType.CHECK_LIST_ITEM, _elementType.ORDERED_LIST, _elementType.UNORDERED_LIST, _elementType.BLOCKQUOTE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CALL_OUT, _elementType.TABLE, _elementType.CODE_BLOCK, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE, _elementType.SEATABLE_ROW, _elementType.CHART];
|
|
@@ -223,6 +223,11 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
|
|
|
223
223
|
iconClass: 'sdocfont sdoc-find-replace',
|
|
224
224
|
text: 'Search_and_replace'
|
|
225
225
|
},
|
|
226
|
+
[_elementType.SEATABLE_ROW]: {
|
|
227
|
+
id: `sdoc_${_elementType.SEATABLE_ROW}`,
|
|
228
|
+
iconClass: 'sdocfont sdoc-seatable-row',
|
|
229
|
+
text: 'SeaTable_row'
|
|
230
|
+
},
|
|
226
231
|
[_elementType.SEATABLE_COLUMN]: {
|
|
227
232
|
id: `sdoc_${_elementType.SEATABLE_COLUMN}`,
|
|
228
233
|
iconClass: 'sdocfont sdoc-choose-column',
|
|
@@ -233,6 +238,11 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
|
|
|
233
238
|
iconClass: 'sdocfont sdoc-seatable-table',
|
|
234
239
|
type: _elementType.SEATABLE_TABLE,
|
|
235
240
|
text: 'SeaTable_table'
|
|
241
|
+
},
|
|
242
|
+
[_elementType.CHART]: {
|
|
243
|
+
id: `sdoc_${_elementType.CHART}`,
|
|
244
|
+
iconClass: 'sdocfont sdoc-chart',
|
|
245
|
+
text: 'Insert_chart'
|
|
236
246
|
}
|
|
237
247
|
};
|
|
238
248
|
|
|
@@ -354,6 +364,12 @@ const SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = {
|
|
|
354
364
|
type: _elementType.LINK,
|
|
355
365
|
text: 'Link'
|
|
356
366
|
},
|
|
367
|
+
[_elementType.CHART]: {
|
|
368
|
+
id: `sdoc_${_elementType.CHART}`,
|
|
369
|
+
iconClass: 'sdocfont sdoc-chart',
|
|
370
|
+
type: _elementType.CHART,
|
|
371
|
+
text: 'Insert_chart'
|
|
372
|
+
},
|
|
357
373
|
[_elementType.CODE_BLOCK]: {
|
|
358
374
|
id: '',
|
|
359
375
|
iconClass: 'sdocfont sdoc-code-block',
|
|
@@ -442,6 +458,7 @@ const SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = {
|
|
|
442
458
|
[_elementType.THREE_COLUMN]: 'Three_column',
|
|
443
459
|
[_elementType.FOUR_COLUMN]: 'Four_column',
|
|
444
460
|
[_elementType.LINK]: 'Link',
|
|
461
|
+
[_elementType.CHART]: 'Chart',
|
|
445
462
|
[_elementType.CODE_BLOCK]: 'Code_block',
|
|
446
463
|
[_elementType.CALL_OUT]: 'Callout',
|
|
447
464
|
[_elementType.UNORDERED_LIST]: 'Unordered_list',
|
|
@@ -352,10 +352,19 @@ function AIModule(_ref) {
|
|
|
352
352
|
const path = _slateReact.ReactEditor.findPath(editor, element);
|
|
353
353
|
nextPath = _slate.Path.next(path);
|
|
354
354
|
}
|
|
355
|
+
|
|
356
|
+
// Prevent '\\n' from being pre-wrapped
|
|
357
|
+
const tempResult = searchResult.replace(/\\n/g, '\v');
|
|
358
|
+
const paragraphs = tempResult.split('\n').map(line => line.replace(/\v/g, '\\n')).filter(line => line.trim() !== '');
|
|
355
359
|
const p = (0, _core.generateEmptyElement)(_constants2.PARAGRAPH);
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
360
|
+
paragraphs.forEach((line, index) => {
|
|
361
|
+
p.children[0].text = line;
|
|
362
|
+
_slate.Transforms.insertNodes(editor, p, {
|
|
363
|
+
at: nextPath
|
|
364
|
+
});
|
|
365
|
+
if (index < paragraphs.length - 1) {
|
|
366
|
+
nextPath = _slate.Path.next(nextPath);
|
|
367
|
+
}
|
|
359
368
|
});
|
|
360
369
|
onCloseClick();
|
|
361
370
|
focusToEndPath(nextPath);
|
|
@@ -83,6 +83,12 @@
|
|
|
83
83
|
pointer-events: all;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
.sdoc-ai-module-container .sdoc-ai-result .sdoc-ai-result-content {
|
|
87
|
+
white-space: pre-wrap;
|
|
88
|
+
line-height: 33px;
|
|
89
|
+
font-size: 11pt;
|
|
90
|
+
}
|
|
91
|
+
|
|
86
92
|
.sdoc-ai-module-container .sdoc-ai-result .sdoc-ai-result-header {
|
|
87
93
|
display: flex;
|
|
88
94
|
justify-content: space-between;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.sdoc-chart-edit-dialog {
|
|
2
|
+
max-width: 1100px;
|
|
3
|
+
width: 1100px;
|
|
4
|
+
height: calc(100% - 56px);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.sdoc-chart-edit-dialog .modal-content {
|
|
8
|
+
height: 100%;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.sdoc-chart-edit-dialog .modal-body {
|
|
12
|
+
padding: 0;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
display: flex;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.sdoc-chart-edit-dialog .sdoc-chart-fullscreen-view {
|
|
18
|
+
width: 100%;
|
|
19
|
+
height: 600px;
|
|
20
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _DTableModalHeader2 = _interopRequireDefault(require("dtable-ui-component/lib/DTableModalHeader"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _reactstrap = require("reactstrap");
|
|
12
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
+
var _reactI18next = require("react-i18next");
|
|
14
|
+
var _seaChart = require("sea-chart");
|
|
15
|
+
var _context = _interopRequireDefault(require("../../../../../context"));
|
|
16
|
+
require("./index.css");
|
|
17
|
+
const ChartEditDialog = _ref => {
|
|
18
|
+
var _window, _window$app, _window$app$state, _window2, _window2$app, _window2$app$state;
|
|
19
|
+
let {
|
|
20
|
+
editor,
|
|
21
|
+
element,
|
|
22
|
+
api,
|
|
23
|
+
isFullScreen,
|
|
24
|
+
onCloseEditDialog,
|
|
25
|
+
t
|
|
26
|
+
} = _ref;
|
|
27
|
+
const [statItemData, setStatItemData] = (0, _react.useState)(element.stat_item || {});
|
|
28
|
+
const onSettingChange = (0, _react.useCallback)(setting => {
|
|
29
|
+
const newStatItemData = {
|
|
30
|
+
...statItemData,
|
|
31
|
+
...setting
|
|
32
|
+
};
|
|
33
|
+
setStatItemData(newStatItemData);
|
|
34
|
+
}, [statItemData]);
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
|
|
36
|
+
className: "sdoc-chart-edit-dialog",
|
|
37
|
+
isOpen: true,
|
|
38
|
+
toggle: () => onCloseEditDialog(statItemData)
|
|
39
|
+
}, /*#__PURE__*/_react.default.createElement(_DTableModalHeader2.default, {
|
|
40
|
+
toggle: () => onCloseEditDialog(statItemData)
|
|
41
|
+
}, t(!isFullScreen ? 'Edit_chart' : 'Chart')), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, {
|
|
42
|
+
className: (0, _classnames.default)({
|
|
43
|
+
'sdoc-chart-fullscreen-view': isFullScreen
|
|
44
|
+
})
|
|
45
|
+
}, !isFullScreen && /*#__PURE__*/_react.default.createElement(_seaChart.Editor, {
|
|
46
|
+
chart: statItemData,
|
|
47
|
+
config: _context.default.getSettings(),
|
|
48
|
+
api: api,
|
|
49
|
+
tables: editor.tables || [],
|
|
50
|
+
collaborators: editor.collaborators || [],
|
|
51
|
+
departments: ((_window = window) === null || _window === void 0 ? void 0 : (_window$app = _window.app) === null || _window$app === void 0 ? void 0 : (_window$app$state = _window$app.state) === null || _window$app$state === void 0 ? void 0 : _window$app$state.departments) || [],
|
|
52
|
+
hideTypeToggle: true,
|
|
53
|
+
onChange: onSettingChange
|
|
54
|
+
}), isFullScreen && /*#__PURE__*/_react.default.createElement(_seaChart.View, {
|
|
55
|
+
chart: statItemData,
|
|
56
|
+
api: api,
|
|
57
|
+
config: _context.default.getSettings(),
|
|
58
|
+
tables: editor.tables,
|
|
59
|
+
collaborators: editor.collaborators || [],
|
|
60
|
+
departments: ((_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$app = _window2.app) === null || _window2$app === void 0 ? void 0 : (_window2$app$state = _window2$app.state) === null || _window2$app$state === void 0 ? void 0 : _window2$app$state.departments) || []
|
|
61
|
+
})));
|
|
62
|
+
};
|
|
63
|
+
var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(ChartEditDialog);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isInsertChartMenuDisabled = exports.isInViewPort = exports.insertChart = exports.generateChartNode = void 0;
|
|
7
|
+
var _slate = require("@seafile/slate");
|
|
8
|
+
var _seaChart = require("sea-chart");
|
|
9
|
+
var _core = require("../../core");
|
|
10
|
+
var _helper = require("../callout/helper");
|
|
11
|
+
var _constants = require("../../constants");
|
|
12
|
+
const isInsertChartMenuDisabled = (editor, readonly) => {
|
|
13
|
+
if (readonly) return true;
|
|
14
|
+
const {
|
|
15
|
+
selection
|
|
16
|
+
} = editor;
|
|
17
|
+
if (selection === null) return true;
|
|
18
|
+
if ((0, _helper.getCalloutEntry)(editor)) return true;
|
|
19
|
+
const selectedElems = (0, _core.getSelectedElems)(editor);
|
|
20
|
+
const hasVoid = selectedElems.some(elem => editor.isVoid(elem));
|
|
21
|
+
if (hasVoid) return true;
|
|
22
|
+
const isMatch = selectedElems.every(elem => {
|
|
23
|
+
const type = (0, _core.getNodeType)(elem);
|
|
24
|
+
if (type === _constants.PARAGRAPH) return true;
|
|
25
|
+
return false;
|
|
26
|
+
});
|
|
27
|
+
if (isMatch) return false; // enable
|
|
28
|
+
return true; // disable
|
|
29
|
+
};
|
|
30
|
+
exports.isInsertChartMenuDisabled = isInsertChartMenuDisabled;
|
|
31
|
+
const generateChartNode = editor => {
|
|
32
|
+
const element = (0, _core.generateEmptyElement)(_constants.CHART);
|
|
33
|
+
const initConfig = {
|
|
34
|
+
option: {
|
|
35
|
+
id: element.id,
|
|
36
|
+
table_id: editor.tables[0]._id // Default first table
|
|
37
|
+
},
|
|
38
|
+
tables: []
|
|
39
|
+
};
|
|
40
|
+
const model = new _seaChart.ChartModel(initConfig.option, initConfig.tables);
|
|
41
|
+
return {
|
|
42
|
+
...element,
|
|
43
|
+
stat_item: {
|
|
44
|
+
...model,
|
|
45
|
+
type: model.config.type
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
exports.generateChartNode = generateChartNode;
|
|
50
|
+
const insertChart = (editor, insertPosition) => {
|
|
51
|
+
const chartNode = generateChartNode(editor);
|
|
52
|
+
let path = _slate.Editor.path(editor, editor.selection)[0];
|
|
53
|
+
if (insertPosition === _constants.INSERT_POSITION.AFTER) {
|
|
54
|
+
path = path + 1;
|
|
55
|
+
}
|
|
56
|
+
_slate.Transforms.insertNodes(editor, chartNode, {
|
|
57
|
+
at: [path]
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
exports.insertChart = insertChart;
|
|
61
|
+
const isInViewPort = element => {
|
|
62
|
+
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
63
|
+
const {
|
|
64
|
+
top
|
|
65
|
+
} = element.getBoundingClientRect();
|
|
66
|
+
return top >= 0 && top <= viewHeight;
|
|
67
|
+
};
|
|
68
|
+
exports.isInViewPort = isInViewPort;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.sdoc-chart-hover-menu-container {
|
|
2
|
+
position: absolute;
|
|
3
|
+
height: 42px;
|
|
4
|
+
z-index: 101;
|
|
5
|
+
width: auto;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.sdoc-chart-hover-menu-container .hover-menu-container {
|
|
9
|
+
height: 36px;
|
|
10
|
+
padding: 7px 8px;
|
|
11
|
+
background-color: #fff;
|
|
12
|
+
display: flex;
|
|
13
|
+
justify-content: flex-start;
|
|
14
|
+
align-items: center;
|
|
15
|
+
border-radius: 3px;
|
|
16
|
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);
|
|
17
|
+
border: 1px solid #e8e8e8;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.sdoc-chart-hover-menu-container .hover-menu-container > span:not(:last-of-type) {
|
|
21
|
+
padding-right: 6px;
|
|
22
|
+
border-right: 1px solid #e5e5e5;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .op-item {
|
|
26
|
+
position: relative;
|
|
27
|
+
font-size: 12px;
|
|
28
|
+
color: #212529;
|
|
29
|
+
padding: 0 5px;
|
|
30
|
+
border-radius: 2px;
|
|
31
|
+
min-width: 24px;
|
|
32
|
+
height: 24px;
|
|
33
|
+
display: inline-flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .op-item:hover {
|
|
39
|
+
color: #212529;
|
|
40
|
+
text-decoration: none;
|
|
41
|
+
background: #f1f1f1;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.sdoc-chart-hover-menu-container .op-group-item:last-child .op-item {
|
|
45
|
+
margin-left: 8px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .active {
|
|
49
|
+
background: #f1f1f1;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .icon-font {
|
|
53
|
+
font-size: 12px;
|
|
54
|
+
color: #999999;
|
|
55
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactI18next = require("react-i18next");
|
|
11
|
+
var _commons = require("../../../commons");
|
|
12
|
+
var _tooltip = _interopRequireDefault(require("../../../../../components/tooltip"));
|
|
13
|
+
require("./index.css");
|
|
14
|
+
const ChartHoverMenu = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
menuPosition,
|
|
17
|
+
onEditChart,
|
|
18
|
+
onFullscreen,
|
|
19
|
+
t
|
|
20
|
+
} = _ref;
|
|
21
|
+
const [isShowTooltip, setIsShowTooltip] = (0, _react.useState)(false);
|
|
22
|
+
(0, _react.useEffect)(() => {
|
|
23
|
+
setIsShowTooltip(true);
|
|
24
|
+
}, []);
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_commons.ElementPopover, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
26
|
+
className: "sdoc-chart-hover-menu-container",
|
|
27
|
+
style: menuPosition
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
29
|
+
className: "hover-menu-container"
|
|
30
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
31
|
+
className: "op-group-item"
|
|
32
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
33
|
+
id: "sdoc_chart_edit",
|
|
34
|
+
role: "button",
|
|
35
|
+
className: "op-item",
|
|
36
|
+
onClick: onEditChart
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
38
|
+
className: "sdocfont sdoc-rename icon-font"
|
|
39
|
+
}), isShowTooltip && /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
40
|
+
target: "sdoc_chart_edit",
|
|
41
|
+
placement: "top",
|
|
42
|
+
fade: true
|
|
43
|
+
}, t('Edit_chart')))), /*#__PURE__*/_react.default.createElement("span", {
|
|
44
|
+
className: "op-group-item"
|
|
45
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
46
|
+
id: "sdoc_chart_full_screen_mode",
|
|
47
|
+
role: "button",
|
|
48
|
+
className: "op-item",
|
|
49
|
+
onClick: onFullscreen
|
|
50
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
51
|
+
className: "sdocfont sdoc-fullscreen icon-font"
|
|
52
|
+
}), isShowTooltip && /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
53
|
+
target: "sdoc_chart_full_screen_mode",
|
|
54
|
+
placement: "top",
|
|
55
|
+
fade: true
|
|
56
|
+
}, t('Full_screen_mode')))))));
|
|
57
|
+
};
|
|
58
|
+
var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(ChartHoverMenu);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
var _menu = _interopRequireDefault(require("./menu"));
|
|
10
|
+
var _plugin = _interopRequireDefault(require("./plugin"));
|
|
11
|
+
var _renderElem = _interopRequireDefault(require("./render-elem"));
|
|
12
|
+
const ChartPlugin = {
|
|
13
|
+
type: _constants.CHART,
|
|
14
|
+
nodeType: 'element',
|
|
15
|
+
editorMenus: [_menu.default],
|
|
16
|
+
editorPlugin: _plugin.default,
|
|
17
|
+
renderElements: [_renderElem.default]
|
|
18
|
+
};
|
|
19
|
+
var _default = exports.default = ChartPlugin;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _helpers = require("../helpers");
|
|
11
|
+
var _constants = require("../../../constants");
|
|
12
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
13
|
+
const ChartMenu = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
editor,
|
|
16
|
+
readonly,
|
|
17
|
+
toggle
|
|
18
|
+
} = _ref;
|
|
19
|
+
const disabled = (0, _helpers.isInsertChartMenuDisabled)(editor, readonly);
|
|
20
|
+
const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.CHART];
|
|
21
|
+
const onInsertChart = (0, _react.useCallback)(() => {
|
|
22
|
+
(0, _helpers.insertChart)(editor);
|
|
23
|
+
toggle && toggle();
|
|
24
|
+
}, [editor, toggle]);
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
26
|
+
disabled: disabled,
|
|
27
|
+
menuConfig: menuConfig,
|
|
28
|
+
onClick: onInsertChart
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
var _default = exports.default = ChartMenu;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _constants = require("../../constants");
|
|
8
|
+
const withChart = editor => {
|
|
9
|
+
const {
|
|
10
|
+
isVoid
|
|
11
|
+
} = editor;
|
|
12
|
+
const newEditor = editor;
|
|
13
|
+
|
|
14
|
+
// Rewrite isVoid
|
|
15
|
+
newEditor.isVoid = elem => {
|
|
16
|
+
const {
|
|
17
|
+
type
|
|
18
|
+
} = elem;
|
|
19
|
+
if (type === _constants.CHART) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return isVoid(elem);
|
|
23
|
+
};
|
|
24
|
+
return newEditor;
|
|
25
|
+
};
|
|
26
|
+
var _default = exports.default = withChart;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.sdoc-chart-container {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 300px;
|
|
4
|
+
padding: 8px;
|
|
5
|
+
cursor: pointer;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.sdoc-chart-container .sdoc-chart-view {
|
|
9
|
+
position: relative;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
padding: 10px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.sdoc-chart-container .sdoc-chart-view.init {
|
|
16
|
+
background-color: #f5f5f5;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.sdoc-chart-container .sdoc-chart-view .sdoc-chart-view-content {
|
|
20
|
+
width: 100%;
|
|
21
|
+
height: 100%;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.sdoc-chart-container .active {
|
|
25
|
+
box-shadow: 0 0 0 2px #007bff;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.sdoc-chart-container .active .sdoc-chart-view-rect {
|
|
29
|
+
display: inline-block;
|
|
30
|
+
width: 8px;
|
|
31
|
+
height: 8px;
|
|
32
|
+
background-color: #007bff;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.sdoc-chart-container .active .sdoc-chart-view-rect-lt {
|
|
36
|
+
position: absolute;
|
|
37
|
+
left: -5px;
|
|
38
|
+
top: -5px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.sdoc-chart-container .active .sdoc-chart-view-rect-lb {
|
|
42
|
+
position: absolute;
|
|
43
|
+
left: -5px;
|
|
44
|
+
bottom: -5px;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.sdoc-chart-container .active .sdoc-chart-view-rect-rt {
|
|
48
|
+
position: absolute;
|
|
49
|
+
right: -5px;
|
|
50
|
+
top: -5px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.sdoc-chart-container .active .sdoc-chart-view-rect-rb {
|
|
54
|
+
position: absolute;
|
|
55
|
+
right: -5px;
|
|
56
|
+
bottom: -5px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.sdoc-chart-container .sdoc-chart-view .sdoc-chart-tip {
|
|
60
|
+
top: 50%;
|
|
61
|
+
left: 50%;
|
|
62
|
+
transform: translate(-50%, -50%);
|
|
63
|
+
position: absolute;
|
|
64
|
+
}
|