@seafile/sdoc-editor 0.1.39 → 0.1.41

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 (42) hide show
  1. package/dist/basic-sdk/assets/css/outline.css +1 -1
  2. package/dist/basic-sdk/extension/constants/element-type.js +1 -1
  3. package/dist/basic-sdk/extension/constants/index.js +26 -1
  4. package/dist/basic-sdk/extension/constants/keyboard.js +7 -0
  5. package/dist/basic-sdk/extension/core/queries/index.js +23 -0
  6. package/dist/basic-sdk/extension/menu/menu-item.js +7 -8
  7. package/dist/basic-sdk/extension/plugins/blockquote/menu/index.js +1 -1
  8. package/dist/basic-sdk/extension/plugins/blockquote/plugin.js +19 -2
  9. package/dist/basic-sdk/extension/plugins/check-list/helpers.js +7 -2
  10. package/dist/basic-sdk/extension/plugins/header/helpers.js +11 -5
  11. package/dist/basic-sdk/extension/plugins/header/menu/index.js +7 -3
  12. package/dist/basic-sdk/extension/plugins/header/menu/style.css +5 -1
  13. package/dist/basic-sdk/extension/plugins/image/helpers.js +9 -2
  14. package/dist/basic-sdk/extension/plugins/index.js +3 -2
  15. package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.css +7 -0
  16. package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.js +90 -0
  17. package/dist/basic-sdk/extension/plugins/table/helpers.js +81 -0
  18. package/dist/basic-sdk/extension/plugins/table/index.js +14 -0
  19. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +78 -0
  20. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.css +7 -0
  21. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +136 -0
  22. package/dist/basic-sdk/extension/plugins/table/menu/index.js +3 -0
  23. package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +60 -0
  24. package/dist/basic-sdk/extension/plugins/table/model.js +19 -0
  25. package/dist/basic-sdk/extension/plugins/table/number-input.js +28 -0
  26. package/dist/basic-sdk/extension/plugins/table/plugin.js +500 -0
  27. package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.css +57 -0
  28. package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +134 -0
  29. package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +32 -0
  30. package/dist/basic-sdk/extension/plugins/table/render/render-row.js +24 -0
  31. package/dist/basic-sdk/extension/plugins/table/render/render-table/index.css +30 -0
  32. package/dist/basic-sdk/extension/plugins/table/render/render-table/index.js +41 -0
  33. package/dist/basic-sdk/extension/plugins/table/render-elem.js +4 -0
  34. package/dist/basic-sdk/extension/plugins/text-style/helpers.js +1 -6
  35. package/dist/basic-sdk/extension/render/render-element.js +20 -2
  36. package/dist/basic-sdk/extension/toolbar/index.js +6 -1
  37. package/dist/basic-sdk/node-id/helpers.js +1 -1
  38. package/dist/basic-sdk/utils/event-handler.js +6 -0
  39. package/dist/basic-sdk/utils/object-utils.js +3 -0
  40. package/package.json +1 -1
  41. package/public/locales/en/sdoc-editor.json +4 -1
  42. package/public/locales/zh-CN/sdoc-editor.json +5 -1
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import classnames from 'classnames';
3
+ import { useSelected } from '@seafile/slate-react';
4
+ import ObjectUtils from '../../../../utils/object-utils';
5
+ import { STYLE_KEY } from '../../../constants';
6
+ function TableCell(props) {
7
+ var attributes = props.attributes,
8
+ element = props.element,
9
+ children = props.children,
10
+ isSelected = props.isSelected;
11
+ var cellValue = element.children[0];
12
+ var style = attributes.style || {};
13
+ if (ObjectUtils.hasProperty(cellValue, STYLE_KEY.TEXT_ALIGN)) {
14
+ style[STYLE_KEY.TEXT_ALIGN] = cellValue[STYLE_KEY.TEXT_ALIGN];
15
+ }
16
+ return /*#__PURE__*/React.createElement("td", Object.assign({}, attributes, {
17
+ style: style,
18
+ className: classnames('', attributes.className, {
19
+ 'cell-selected': isSelected
20
+ }),
21
+ "data-id": element.id
22
+ }), children);
23
+ }
24
+ function renderTableCell(props, editor) {
25
+ // eslint-disable-next-line react-hooks/rules-of-hooks
26
+ var isSelected = useSelected();
27
+ return /*#__PURE__*/React.createElement(TableCell, Object.assign({}, props, {
28
+ editor: editor,
29
+ isSelected: isSelected
30
+ }));
31
+ }
32
+ export default renderTableCell;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import classnames from 'classnames';
3
+ import { useSelected } from '@seafile/slate-react';
4
+ function TableRow(props) {
5
+ var attributes = props.attributes,
6
+ element = props.element,
7
+ children = props.children,
8
+ isSelected = props.isSelected;
9
+ return /*#__PURE__*/React.createElement("tr", Object.assign({}, attributes, {
10
+ className: classnames('', attributes.className, {
11
+ 'row-selected': isSelected
12
+ }),
13
+ "data-id": element.id
14
+ }), children);
15
+ }
16
+ function renderTableRow(props, editor) {
17
+ // eslint-disable-next-line react-hooks/rules-of-hooks
18
+ var isSelected = useSelected();
19
+ return /*#__PURE__*/React.createElement(TableRow, Object.assign({}, props, {
20
+ editor: editor,
21
+ isSelected: isSelected
22
+ }));
23
+ }
24
+ export default renderTableRow;
@@ -0,0 +1,30 @@
1
+ .sdoc-table-selected {
2
+ position: relative;
3
+ }
4
+
5
+ .sdoc-table-selected .sdoc-table-rows-header {
6
+ width: 12px;
7
+ left: -12px;
8
+ top: 0;
9
+ height: 100%;
10
+ background-color: rgb(243, 245, 247);
11
+ display: flex;
12
+ flex-direction: column;
13
+ }
14
+
15
+ .sdoc-table-selected .sdoc-table-rows-header .sdoc-table-rows-header-item {
16
+ border-bottom: 1px solid #ccc;
17
+ flex-shrink: 0;
18
+ }
19
+
20
+ .sdoc-table-selected .sdoc-table-rows-header .sdoc-table-rows-header-item:last-child {
21
+ border-bottom: none;
22
+ }
23
+
24
+ .sdoc-table tr:first-child {
25
+ font-weight: unset;
26
+ }
27
+
28
+ .sdoc-table tr:nth-child(2n+1) {
29
+ background-color: unset;
30
+ }
@@ -0,0 +1,41 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React, { Component } from 'react';
6
+ import classnames from 'classnames';
7
+ import { useSelected } from '@seafile/slate-react';
8
+ import './index.css';
9
+ var Table = /*#__PURE__*/function (_Component) {
10
+ _inherits(Table, _Component);
11
+ var _super = _createSuper(Table);
12
+ function Table() {
13
+ _classCallCheck(this, Table);
14
+ return _super.apply(this, arguments);
15
+ }
16
+ _createClass(Table, [{
17
+ key: "render",
18
+ value: function render() {
19
+ var _this$props = this.props,
20
+ className = _this$props.className,
21
+ attributes = _this$props.attributes,
22
+ children = _this$props.children,
23
+ isSelected = _this$props.isSelected;
24
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, attributes, {
25
+ className: classnames('sdoc-table', attributes.className, className, {
26
+ 'sdoc-table-selected': isSelected
27
+ })
28
+ }), /*#__PURE__*/React.createElement("table", null, /*#__PURE__*/React.createElement("tbody", null, children)));
29
+ }
30
+ }]);
31
+ return Table;
32
+ }(Component);
33
+ function renderTable(props, editor) {
34
+ // eslint-disable-next-line react-hooks/rules-of-hooks
35
+ var isSelected = useSelected();
36
+ return /*#__PURE__*/React.createElement(Table, Object.assign({}, props, {
37
+ editor: editor,
38
+ isSelected: isSelected
39
+ }));
40
+ }
41
+ export default renderTable;
@@ -0,0 +1,4 @@
1
+ import renderTable from './render/render-table';
2
+ import renderTableRow from './render/render-row';
3
+ import renderTableCell from './render/render-cell';
4
+ export { renderTable, renderTableRow, renderTableCell };
@@ -1,5 +1,5 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import { Editor, Transforms } from '@seafile/slate';
2
+ import { Editor } from '@seafile/slate';
3
3
  import { getNodeType } from '../../core';
4
4
  export var isMenuDisabled = function isMenuDisabled(editor) {
5
5
  if (editor.selection == null) return true;
@@ -25,11 +25,6 @@ export var addMark = function addMark(editor, type) {
25
25
  };
26
26
  export var removeMark = function removeMark(editor, type) {
27
27
  Editor.removeMark(editor, type);
28
- Transforms.setNodes(editor, {
29
- type: 'paragraph'
30
- }, {
31
- mode: 'highest'
32
- });
33
28
  };
34
29
 
35
30
  // Whether mark is included
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React from 'react';
3
- import { BLOCKQUOTE, LINK, CHECK_LIST_ITEM, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, LIST_ITEM, LIST_LIC, ORDERED_LIST, PARAGRAPH, UNORDERED_LIST, CODE_BLOCK, IMAGE } from '../constants';
4
- import { BlockquotePlugin, LinkPlugin, CheckListPlugin, HeaderPlugin, ListPlugin, CodeBlockPlugin, ImagePlugin } from '../plugins';
3
+ import { BLOCKQUOTE, LINK, CHECK_LIST_ITEM, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, LIST_ITEM, LIST_LIC, ORDERED_LIST, PARAGRAPH, UNORDERED_LIST, CODE_BLOCK, IMAGE, ELEMENT_TYPE } from '../constants';
4
+ import { BlockquotePlugin, LinkPlugin, CheckListPlugin, HeaderPlugin, ListPlugin, CodeBlockPlugin, ImagePlugin, TablePlugin } from '../plugins';
5
5
  var renderElement = function renderElement(props, editor) {
6
6
  var attributes = props.attributes,
7
7
  children = props.children,
@@ -73,6 +73,24 @@ var renderElement = function renderElement(props, editor) {
73
73
  renderImage = _ImagePlugin$renderEl[0];
74
74
  return renderImage(props, editor);
75
75
  }
76
+ case ELEMENT_TYPE.TABLE:
77
+ {
78
+ var _TablePlugin$renderEl = _slicedToArray(TablePlugin.renderElements, 1),
79
+ renderTable = _TablePlugin$renderEl[0];
80
+ return renderTable(props, editor);
81
+ }
82
+ case ELEMENT_TYPE.TABLE_ROW:
83
+ {
84
+ var _TablePlugin$renderEl2 = _slicedToArray(TablePlugin.renderElements, 2),
85
+ renderTableRow = _TablePlugin$renderEl2[1];
86
+ return renderTableRow(props, editor);
87
+ }
88
+ case ELEMENT_TYPE.TABLE_CELL:
89
+ {
90
+ var _TablePlugin$renderEl3 = _slicedToArray(TablePlugin.renderElements, 3),
91
+ renderTableCell = _TablePlugin$renderEl3[2];
92
+ return renderTableCell(props, editor);
93
+ }
76
94
  default:
77
95
  {
78
96
  return /*#__PURE__*/React.createElement("p", Object.assign({
@@ -14,6 +14,7 @@ import CheckListMenu from '../plugins/check-list/menu';
14
14
  import TextStyleMenuList from '../plugins/text-style/menu';
15
15
  import CodeBlockMenu from '../plugins/code-block/menu';
16
16
  import HistoryMenu from './redo-undo';
17
+ import { TableMenu, ActiveTableMenu } from '../plugins/table/menu';
17
18
  var Toolbar = /*#__PURE__*/function (_React$Component) {
18
19
  _inherits(Toolbar, _React$Component);
19
20
  var _super = _createSuper(Toolbar);
@@ -46,7 +47,11 @@ var Toolbar = /*#__PURE__*/function (_React$Component) {
46
47
  editor: this.props.editor
47
48
  })), /*#__PURE__*/React.createElement(MenuGroup, null, /*#__PURE__*/React.createElement(CodeBlockMenu, {
48
49
  editor: this.props.editor
49
- })), /*#__PURE__*/React.createElement(MenuGroup, null, /*#__PURE__*/React.createElement(ImageMenu, {
50
+ }), /*#__PURE__*/React.createElement(TableMenu, {
51
+ editor: this.props.editor
52
+ })), /*#__PURE__*/React.createElement(ActiveTableMenu, {
53
+ editor: this.props.editor
54
+ }), /*#__PURE__*/React.createElement(MenuGroup, null, /*#__PURE__*/React.createElement(ImageMenu, {
50
55
  editor: this.props.editor
51
56
  })));
52
57
  }
@@ -42,7 +42,7 @@ export var decorateOperation = function decorateOperation(editor, operation) {
42
42
  case OPERATION.SPLIT_NODE:
43
43
  {
44
44
  // child: split [7, 0] -> [[7, 0],[7, 1]]
45
- // parent: split [[7, 0], [7, 1]] -> [[7], [8]]
45
+ // parent: split [[7, 0], [7, 1]] -> [[7], [8]]
46
46
  var _path4 = newOperation.path,
47
47
  _newOperation$propert = newOperation.properties,
48
48
  properties = _newOperation$propert === void 0 ? {} : _newOperation$propert;
@@ -1,6 +1,8 @@
1
1
  import _createClass from "@babel/runtime/helpers/esm/createClass";
2
2
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
3
  import isHotkey from 'is-hotkey';
4
+ import { getSelectedNodeByType } from '../extension/core/queries/';
5
+ import { ELEMENT_TYPE } from '../extension/constants';
4
6
  var EventProxy = /*#__PURE__*/_createClass(function EventProxy(_editor) {
5
7
  var _this = this;
6
8
  _classCallCheck(this, EventProxy);
@@ -46,6 +48,10 @@ var EventProxy = /*#__PURE__*/_createClass(function EventProxy(_editor) {
46
48
  if (isHotkey('tab', event) || isHotkey('shift+tab', event)) {
47
49
  editor.handleTab && editor.handleTab(event);
48
50
  }
51
+ var node = getSelectedNodeByType(editor, ELEMENT_TYPE.TABLE);
52
+ if (node) {
53
+ _this.editor.tableOnKeyDown(event);
54
+ }
49
55
  };
50
56
  this.onCopy = function (event) {
51
57
  event.stopPropagation();
@@ -54,4 +54,7 @@ var ObjectUtils = /*#__PURE__*/function () {
54
54
  }]);
55
55
  return ObjectUtils;
56
56
  }();
57
+ ObjectUtils.hasProperty = function (obj, prop) {
58
+ return Object.prototype.hasOwnProperty.call(obj, prop);
59
+ };
57
60
  export default ObjectUtils;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -239,5 +239,8 @@
239
239
  "Open_parent_folder": "Open parent folder",
240
240
  "redo": "redo",
241
241
  "undo": "undo",
242
- "Open_link": "Open link"
242
+ "Open_link": "Open link",
243
+ "Customize_the_number_of_rows_and_columns": "Customize the number of rows and columns",
244
+ "Rows": "Rows",
245
+ "Columns": "Columns"
243
246
  }
@@ -232,5 +232,9 @@
232
232
  "Outline": "目录",
233
233
  "Headings_you_add_to_the_document_will_appear_here": "您添加到文档中的标题将显示在此处",
234
234
  "redo": "重做",
235
- "undo": "撤销"
235
+ "undo": "撤销",
236
+ "Open_link": "打开链接",
237
+ "Customize_the_number_of_rows_and_columns": "自定义行列数",
238
+ "Rows": "行数",
239
+ "Columns": "列数"
236
240
  }