@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.
Files changed (62) hide show
  1. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
  2. package/dist/basic-sdk/extension/constants/element-type.js +3 -1
  3. package/dist/basic-sdk/extension/constants/index.js +14 -2
  4. package/dist/basic-sdk/extension/constants/menus-config.js +17 -0
  5. package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +12 -3
  6. package/dist/basic-sdk/extension/plugins/ai/ai-module/style.css +6 -0
  7. package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.css +20 -0
  8. package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.js +63 -0
  9. package/dist/basic-sdk/extension/plugins/chart/helpers.js +68 -0
  10. package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.css +55 -0
  11. package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.js +58 -0
  12. package/dist/basic-sdk/extension/plugins/chart/index.js +19 -0
  13. package/dist/basic-sdk/extension/plugins/chart/menu/index.js +31 -0
  14. package/dist/basic-sdk/extension/plugins/chart/plugin.js +26 -0
  15. package/dist/basic-sdk/extension/plugins/chart/render-elem.css +64 -0
  16. package/dist/basic-sdk/extension/plugins/chart/render-elem.js +154 -0
  17. package/dist/basic-sdk/extension/plugins/index.js +15 -1
  18. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +414 -0
  19. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +76 -0
  20. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +209 -0
  21. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/ResizeHandle.js +38 -0
  22. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/index.css +384 -0
  23. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +125 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +144 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +161 -0
  26. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +47 -0
  27. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +98 -0
  28. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  29. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.css +3 -0
  30. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +46 -0
  31. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +62 -0
  32. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  33. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  34. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +124 -0
  35. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +160 -0
  36. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  37. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  38. package/dist/basic-sdk/extension/plugins/seatable-tables/formatter/index.js +7 -2
  39. package/dist/basic-sdk/extension/render/custom-element.js +10 -0
  40. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +5 -3
  41. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +3 -2
  42. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +14 -2
  43. package/dist/constants/index.js +1 -0
  44. package/dist/pages/document-plugin-editor.js +4 -1
  45. package/package.json +3 -2
  46. package/public/locales/cs/sdoc-editor.json +10 -1
  47. package/public/locales/de/sdoc-editor.json +69 -60
  48. package/public/locales/en/sdoc-editor.json +13 -1
  49. package/public/locales/es/sdoc-editor.json +10 -1
  50. package/public/locales/es_AR/sdoc-editor.json +10 -1
  51. package/public/locales/es_MX/sdoc-editor.json +10 -1
  52. package/public/locales/fr/sdoc-editor.json +243 -234
  53. package/public/locales/it/sdoc-editor.json +10 -1
  54. package/public/locales/ru/sdoc-editor.json +11 -2
  55. package/public/locales/zh_CN/sdoc-editor.json +9 -1
  56. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  57. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  58. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  59. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  60. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  61. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  62. 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
- p.children[0].text = searchResult;
357
- _slate.Transforms.insertNodes(editor, p, {
358
- at: nextPath
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
+ }