@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.
- package/dist/basic-sdk/assets/css/outline.css +1 -1
- package/dist/basic-sdk/extension/constants/element-type.js +1 -1
- package/dist/basic-sdk/extension/constants/index.js +26 -1
- package/dist/basic-sdk/extension/constants/keyboard.js +7 -0
- package/dist/basic-sdk/extension/core/queries/index.js +23 -0
- package/dist/basic-sdk/extension/menu/menu-item.js +7 -8
- package/dist/basic-sdk/extension/plugins/blockquote/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/blockquote/plugin.js +19 -2
- package/dist/basic-sdk/extension/plugins/check-list/helpers.js +7 -2
- package/dist/basic-sdk/extension/plugins/header/helpers.js +11 -5
- package/dist/basic-sdk/extension/plugins/header/menu/index.js +7 -3
- package/dist/basic-sdk/extension/plugins/header/menu/style.css +5 -1
- package/dist/basic-sdk/extension/plugins/image/helpers.js +9 -2
- package/dist/basic-sdk/extension/plugins/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.css +7 -0
- package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.js +90 -0
- package/dist/basic-sdk/extension/plugins/table/helpers.js +81 -0
- package/dist/basic-sdk/extension/plugins/table/index.js +14 -0
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +78 -0
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.css +7 -0
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +136 -0
- package/dist/basic-sdk/extension/plugins/table/menu/index.js +3 -0
- package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +60 -0
- package/dist/basic-sdk/extension/plugins/table/model.js +19 -0
- package/dist/basic-sdk/extension/plugins/table/number-input.js +28 -0
- package/dist/basic-sdk/extension/plugins/table/plugin.js +500 -0
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.css +57 -0
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +134 -0
- package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +32 -0
- package/dist/basic-sdk/extension/plugins/table/render/render-row.js +24 -0
- package/dist/basic-sdk/extension/plugins/table/render/render-table/index.css +30 -0
- package/dist/basic-sdk/extension/plugins/table/render/render-table/index.js +41 -0
- package/dist/basic-sdk/extension/plugins/table/render-elem.js +4 -0
- package/dist/basic-sdk/extension/plugins/text-style/helpers.js +1 -6
- package/dist/basic-sdk/extension/render/render-element.js +20 -2
- package/dist/basic-sdk/extension/toolbar/index.js +6 -1
- package/dist/basic-sdk/node-id/helpers.js +1 -1
- package/dist/basic-sdk/utils/event-handler.js +6 -0
- package/dist/basic-sdk/utils/object-utils.js +3 -0
- package/package.json +1 -1
- package/public/locales/en/sdoc-editor.json +4 -1
- 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;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import { Editor
|
|
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
|
-
})
|
|
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();
|
package/package.json
CHANGED
|
@@ -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
|
}
|