@seafile/sdoc-editor 1.0.219 → 1.0.221-alph-0.0.1

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 (67) hide show
  1. package/dist/basic-sdk/assets/css/sdoc-editor-plugins.css +0 -23
  2. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
  3. package/dist/basic-sdk/extension/commons/search-list/index.css +28 -0
  4. package/dist/basic-sdk/extension/commons/search-list/index.js +150 -0
  5. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  6. package/dist/basic-sdk/extension/constants/index.js +8 -2
  7. package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
  8. package/dist/basic-sdk/extension/plugins/font/helpers.js +7 -0
  9. package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -1
  10. package/dist/basic-sdk/extension/plugins/image/helpers.js +9 -21
  11. package/dist/basic-sdk/extension/plugins/image/image-loader/index.css +37 -0
  12. package/dist/basic-sdk/extension/plugins/image/image-loader/index.js +23 -0
  13. package/dist/basic-sdk/extension/plugins/image/render-elem.js +24 -76
  14. package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +80 -0
  15. package/dist/basic-sdk/extension/plugins/index.js +7 -0
  16. package/dist/basic-sdk/extension/plugins/multi-column/plugin.js +1 -1
  17. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-item.js +36 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.css +4 -2
  19. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.js +8 -13
  20. package/dist/basic-sdk/extension/plugins/seatable-column/menu/index.js +5 -9
  21. package/dist/basic-sdk/extension/plugins/seatable-column/plugin.js +9 -1
  22. package/dist/basic-sdk/extension/plugins/seatable-column/render-elem.js +71 -7
  23. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/helpers.js +35 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +106 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +81 -0
  26. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +201 -0
  27. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-item.js +41 -0
  28. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +108 -0
  29. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +143 -0
  30. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +240 -0
  31. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +37 -0
  32. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table.js +134 -0
  33. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +90 -0
  34. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  35. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +44 -0
  36. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +61 -0
  37. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  38. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  39. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +123 -0
  40. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +161 -0
  41. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  42. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  43. package/dist/basic-sdk/extension/plugins/seatable-tables/menu/index.js +3 -6
  44. package/dist/basic-sdk/extension/plugins/text-style/helpers.js +1 -1
  45. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +10 -1
  46. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  47. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +7 -2
  48. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +3 -1
  49. package/dist/pages/document-plugin-editor.js +3 -1
  50. package/package.json +7 -7
  51. package/public/locales/cs/sdoc-editor.json +7 -1
  52. package/public/locales/de/sdoc-editor.json +66 -60
  53. package/public/locales/en/sdoc-editor.json +8 -1
  54. package/public/locales/es/sdoc-editor.json +7 -1
  55. package/public/locales/es_AR/sdoc-editor.json +7 -1
  56. package/public/locales/es_MX/sdoc-editor.json +7 -1
  57. package/public/locales/fr/sdoc-editor.json +240 -234
  58. package/public/locales/it/sdoc-editor.json +7 -1
  59. package/public/locales/ru/sdoc-editor.json +8 -2
  60. package/public/locales/zh_CN/sdoc-editor.json +7 -1
  61. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  62. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  63. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  64. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  65. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  66. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  67. package/public/media/sdoc-editor-font.css +11 -7
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _slate = require("@seafile/slate");
8
+ var _constants = require("../../constants");
9
+ var _core = require("../../core");
10
+ const withRow = editor => {
11
+ const {
12
+ isVoid,
13
+ deleteBackward,
14
+ normalizeNode
15
+ } = editor;
16
+ const newEditor = editor;
17
+ newEditor.isVoid = element => {
18
+ const {
19
+ type
20
+ } = element;
21
+ if (type === _constants.ELEMENT_TYPE.SEATABLE_ROW) return true;
22
+ return isVoid(element);
23
+ };
24
+ newEditor.deleteBackward = unit => {
25
+ const {
26
+ selection
27
+ } = editor;
28
+ const focusPoint = _slate.Editor.before(editor, selection);
29
+ const point = _slate.Editor.before(editor, selection, {
30
+ distance: 1
31
+ });
32
+ if (!point) return deleteBackward(unit);
33
+ const [node, path] = _slate.Editor.node(editor, [point.path[0], point.path[1]]);
34
+ const isPerviousSeaTableRow = node.type === _constants.SEATABLE_ROW;
35
+ if (isPerviousSeaTableRow && Range.isCollapsed(selection) && (0, _core.isBlockAboveEmpty)(editor) && !_slate.Path.isCommon(path, selection.anchor.path)) {
36
+ deleteBackward(unit);
37
+ (0, _core.focusEditor)(newEditor, _slate.Editor.end(newEditor, focusPoint));
38
+ return;
39
+ }
40
+ deleteBackward(unit);
41
+ };
42
+ newEditor.normalizeNode = _ref => {
43
+ let [node, path] = _ref;
44
+ const type = (0, _core.getNodeType)(node);
45
+ if (type !== _constants.SEATABLE_ROW) {
46
+ return normalizeNode([node, path]);
47
+ }
48
+
49
+ // insert empty node,continue editor
50
+ const isLast = (0, _core.isLastNode)(newEditor, node);
51
+ if (isLast) {
52
+ const p = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
53
+ _slate.Transforms.insertNodes(newEditor, p, {
54
+ at: [path[0] + 1]
55
+ });
56
+ }
57
+ };
58
+ return newEditor;
59
+ };
60
+ var _default = exports.default = withRow;
@@ -0,0 +1,123 @@
1
+ .seatable-rows-record-wrapper {
2
+ outline: none;
3
+ }
4
+
5
+ .seatable-rows-record-container {
6
+ margin-top: 5px;
7
+ border: 1.5px solid #ddd;
8
+ border-radius: 5px;
9
+ width: 100%;
10
+ overflow: auto;
11
+ position: relative;
12
+ user-select: none;
13
+ outline: none;
14
+ }
15
+
16
+ .seatable-rows-record-container .seatable-rows-record-table-name {
17
+ margin-left: 10px;
18
+ margin-top: 10px;
19
+ margin-bottom: 3px;
20
+ font-size: 15px;
21
+ font-weight: 500;
22
+ }
23
+
24
+
25
+ .seatable-rows-record-wrapper .seatable-rows-record-container table tr {
26
+ background-color: unset !important;
27
+ }
28
+
29
+ .seatable-rows-record-wrapper .seatable-rows-record-container table {
30
+ margin-top: unset !important;
31
+ margin-bottom: 3px !important;
32
+ }
33
+
34
+ .seatable-rows-record-wrapper .seatable-rows-record-container table th {
35
+ font-size: 12px;
36
+ color: #666;
37
+ font-weight: 400;
38
+ }
39
+
40
+ .seatable-rows-record-wrapper .seatable-rows-record-container table td {
41
+ font-size: 14px;
42
+ font-weight: 400;
43
+ }
44
+
45
+ .seatable-rows-record-wrapper .seatable-rows-record-container table,
46
+ .seatable-rows-record-wrapper .seatable-rows-record-container table td,
47
+ .seatable-rows-record-wrapper .seatable-rows-record-container table th {
48
+ border: unset !important;
49
+ padding-bottom: 5px !important;
50
+ padding-top: 5px !important;
51
+ }
52
+
53
+ .seatable-rows-record-container .seatable-view-records .seatable-rows-record-header,
54
+ .seatable-rows-record-wrapper .seatable-rows-record-container table td,
55
+ .seatable-rows-record-wrapper .seatable-rows-record-container table th {
56
+ height: 32px;
57
+ padding: 0 10px;
58
+ }
59
+
60
+ .seatable-rows-record-container.selected {
61
+ box-shadow: 0 0 0 2px #0aba45;
62
+ }
63
+
64
+ .seatable-rows-record-container .seatable-view-records {
65
+ margin: 0;
66
+ width: fit-content;
67
+ }
68
+
69
+ .seatable-rows-record-container .seatable-column-editor-wrapper {
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ position: absolute;
74
+ left: 0;
75
+ bottom: 0;
76
+ width: 100%;
77
+ height: 30px;
78
+ }
79
+
80
+ .seatable-rows-record-container .seatable-column-editor-wrapper .seatable-column-width-tip {
81
+ background-color: #0009;
82
+ border-radius: 3px;
83
+ color: #fff;
84
+ font-size: 13px;
85
+ line-height: 20px;
86
+ padding: 2px 8px;
87
+ }
88
+
89
+ .seatable-rows-record-header th {
90
+ display: inline-flex;
91
+ align-items: center;
92
+ justify-content: flex-start;
93
+ flex: unset !important;
94
+ }
95
+
96
+ .seatable-rows-record-header .seatable-rows-record-header-cell {
97
+ position: relative;
98
+ }
99
+
100
+ .seatable-rows-record-header .seatable-rows-record-header-cell span:first-child {
101
+ white-space: nowrap;
102
+ overflow: hidden;
103
+ }
104
+
105
+ .seatable-rows-record-body-cell {
106
+ display: inline-flex;
107
+ align-items: center;
108
+ justify-content: flex-start;
109
+ white-space: nowrap;
110
+ text-overflow: ellipsis;
111
+ overflow: hidden;
112
+ word-break: break-all;
113
+ flex: unset !important
114
+ }
115
+
116
+ .seatable-rows-record-body-cell .document-number-formatter {
117
+ text-align: right;
118
+ }
119
+
120
+ .seatable-rows-record-body-cell .collaborator-item .collaborator-avatar img {
121
+ min-width: 16px;
122
+ min-height: 16px;
123
+ }
@@ -0,0 +1,161 @@
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 _classnames = _interopRequireDefault(require("classnames"));
11
+ var _reactI18next = require("react-i18next");
12
+ var _slateReact = require("@seafile/slate-react");
13
+ var _dtableUtils = require("dtable-utils");
14
+ var _recordItem = _interopRequireDefault(require("./record-item"));
15
+ var _recordHeader = _interopRequireDefault(require("./record-header"));
16
+ require("./index.css");
17
+ const RowRecord = _ref => {
18
+ var _tableInfoRef$current, _tableInfoRef$current2;
19
+ let {
20
+ element,
21
+ attributes,
22
+ children,
23
+ editor
24
+ } = _ref;
25
+ const {
26
+ table_id,
27
+ selected_rows_id,
28
+ column_width = {}
29
+ } = element;
30
+ const [columns, setColumns] = (0, _react.useState)([]);
31
+ const [tableName, setTableName] = (0, _react.useState)(null);
32
+ const [shownRecords, setShownRecords] = (0, _react.useState)([]);
33
+ const [columnWidthMap, setColumnWidthMap] = (0, _react.useState)(column_width);
34
+ const [isShowColumnWidth, setIsShowColumnWidth] = (0, _react.useState)(false);
35
+ const [isCanModifyColumnWidth, setIsCanModifyColumnWidth] = (0, _react.useState)(false);
36
+ const isSelected = (0, _slateReact.useSelected)();
37
+ const {
38
+ t
39
+ } = (0, _reactI18next.useTranslation)('sdoc-editor');
40
+ const readOnly = (0, _slateReact.useReadOnly)();
41
+ const tableInfoRef = (0, _react.useRef)(null);
42
+ (0, _react.useEffect)(() => {
43
+ async function initTableData() {
44
+ const table = await editor.getTableById(table_id);
45
+ setTableName(table.name);
46
+ if (!tableInfoRef.current) {
47
+ tableInfoRef.current = {};
48
+ }
49
+ if (!tableInfoRef.current[table_id]) {
50
+ tableInfoRef.current[table_id] = {
51
+ formulaRows: editor.getTableFormulaResults(table, table.rows),
52
+ idRowMap: table.rows.reduce((result, item) => {
53
+ result[item._id] = item;
54
+ return result;
55
+ }, {})
56
+ };
57
+ }
58
+ const validRecords = table.rows;
59
+ const shownRecords = validRecords.filter(item => selected_rows_id.includes(item._id));
60
+ setShownRecords(shownRecords);
61
+ const updatedColumnWidthMap = Object.fromEntries(Object.entries(columnWidthMap).map(_ref2 => {
62
+ let [key, value] = _ref2;
63
+ return [key, value * 1.2];
64
+ }));
65
+ setColumnWidthMap(updatedColumnWidthMap);
66
+ let validColumns = table.columns;
67
+ validColumns = validColumns.map(column => {
68
+ const {
69
+ type
70
+ } = column;
71
+ if (type === _dtableUtils.CellType.LINK) {
72
+ const {
73
+ data
74
+ } = column;
75
+ const {
76
+ display_column_key,
77
+ array_type,
78
+ array_data
79
+ } = data;
80
+ const display_column = {
81
+ key: display_column_key || '0000',
82
+ type: array_type || _dtableUtils.CellType.TEXT,
83
+ data: array_data || null
84
+ };
85
+ return {
86
+ ...column,
87
+ data: {
88
+ ...data,
89
+ display_column
90
+ }
91
+ };
92
+ }
93
+ return column;
94
+ });
95
+ setColumns(validColumns);
96
+ }
97
+ initTableData();
98
+ // eslint-disable-next-line react-hooks/exhaustive-deps
99
+ }, [table_id]);
100
+ (0, _react.useEffect)(() => {
101
+ if (!isSelected) {
102
+ queueMicrotask(() => {
103
+ setIsShowColumnWidth(false);
104
+ setIsCanModifyColumnWidth(false);
105
+ });
106
+ }
107
+ }, [editor, element, isSelected]);
108
+ const onTableClick = (0, _react.useCallback)(event => {
109
+ if (readOnly) return;
110
+ setIsShowColumnWidth(true);
111
+ }, [readOnly]);
112
+ const onTableDoubleClick = (0, _react.useCallback)(event => {
113
+ if (readOnly) return;
114
+ setIsShowColumnWidth(false);
115
+ setIsCanModifyColumnWidth(true);
116
+ }, [readOnly]);
117
+ const formulaRows = (tableInfoRef === null || tableInfoRef === void 0 ? void 0 : (_tableInfoRef$current = tableInfoRef.current) === null || _tableInfoRef$current === void 0 ? void 0 : (_tableInfoRef$current2 = _tableInfoRef$current[table_id]) === null || _tableInfoRef$current2 === void 0 ? void 0 : _tableInfoRef$current2.formulaRows) || {};
118
+ return /*#__PURE__*/_react.default.createElement("div", Object.assign({}, attributes, {
119
+ className: "seatable-rows-record-wrapper"
120
+ }), /*#__PURE__*/_react.default.createElement("div", {
121
+ className: (0, _classnames.default)('seatable-rows-record-container', {
122
+ 'selected': isSelected
123
+ }),
124
+ onClick: onTableClick,
125
+ onDoubleClick: onTableDoubleClick
126
+ }, /*#__PURE__*/_react.default.createElement("div", {
127
+ className: "seatable-rows-record-table-name"
128
+ }, tableName), /*#__PURE__*/_react.default.createElement("table", {
129
+ className: "seatable-rows-record-table"
130
+ }, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement(_recordHeader.default, {
131
+ editor: editor,
132
+ element: element,
133
+ columns: columns,
134
+ isCanModifyColumnWidth: isCanModifyColumnWidth,
135
+ columnWidthMap: columnWidthMap,
136
+ setColumnWidthMap: setColumnWidthMap
137
+ })), /*#__PURE__*/_react.default.createElement("tbody", {
138
+ className: "seatable-rows-record-body-container"
139
+ }, shownRecords.map((record, index) => {
140
+ const formulaRow = formulaRows[record._id] || {};
141
+ return /*#__PURE__*/_react.default.createElement(_recordItem.default, {
142
+ key: record._id,
143
+ index: index,
144
+ editor: editor,
145
+ record: record,
146
+ formulaRow: formulaRow,
147
+ columns: columns,
148
+ columnWidthMap: columnWidthMap
149
+ });
150
+ }))), !readOnly && isShowColumnWidth && !isCanModifyColumnWidth && /*#__PURE__*/_react.default.createElement("div", {
151
+ className: "seatable-column-editor-wrapper"
152
+ }, /*#__PURE__*/_react.default.createElement("div", {
153
+ className: "seatable-column-width-tip"
154
+ }, t('Double_click_then_adjust_field_width'))), children));
155
+ };
156
+ const renderRow = (props, editor) => {
157
+ return /*#__PURE__*/_react.default.createElement(RowRecord, Object.assign({}, props, {
158
+ editor: editor
159
+ }));
160
+ };
161
+ var _default = exports.default = renderRow;
@@ -0,0 +1,78 @@
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 = RecordHeader;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _slateReact = require("@seafile/slate-react");
11
+ var _slate = require("@seafile/slate");
12
+ var _draggable = _interopRequireDefault(require("../../seatable-tables/draggable"));
13
+ const dragAbleStyle = {
14
+ position: 'absolute',
15
+ top: 0,
16
+ right: -3,
17
+ width: 5,
18
+ borderRadius: '3px',
19
+ zIndex: 2,
20
+ margin: '3px 0',
21
+ height: 'calc(100% - 6px)'
22
+ };
23
+ function RecordHeader(_ref) {
24
+ let {
25
+ editor,
26
+ element,
27
+ columns,
28
+ columnWidthMap,
29
+ setColumnWidthMap,
30
+ isCanModifyColumnWidth
31
+ } = _ref;
32
+ const headerCellRef = (0, _react.useRef)({});
33
+ const getWidthFromMouseEvent = (e, currentCell) => {
34
+ const right = e.pageX || e.touches && e.touches[0] && e.touches[0].pageX || e.changedTouches && e.changedTouches[e.changedTouches.length - 1].pageX;
35
+ const left = currentCell.getBoundingClientRect().left;
36
+ return right - left;
37
+ };
38
+ const onDrag = (e, currentCell, currentColumnKey) => {
39
+ const width = getWidthFromMouseEvent(e, currentCell);
40
+ if (width >= 80) {
41
+ const newColumnWidthMap = {
42
+ ...columnWidthMap,
43
+ [currentColumnKey]: width
44
+ };
45
+ setColumnWidthMap(newColumnWidthMap);
46
+ }
47
+ };
48
+ const onDragEnd = () => {
49
+ const path = _slateReact.ReactEditor.findPath(editor, element);
50
+ _slate.Transforms.setNodes(editor, {
51
+ column_width: columnWidthMap
52
+ }, {
53
+ at: [path[0]]
54
+ });
55
+ };
56
+ return /*#__PURE__*/_react.default.createElement("tr", {
57
+ className: "seatable-rows-record-header"
58
+ }, columns.map(column => {
59
+ const width = columnWidthMap[column.key];
60
+ return /*#__PURE__*/_react.default.createElement("th", {
61
+ ref: ref => {
62
+ headerCellRef.current[column.key] = ref;
63
+ },
64
+ className: "seatable-rows-record-header-cell",
65
+ key: column.key,
66
+ style: {
67
+ width,
68
+ minWidth: width
69
+ }
70
+ }, /*#__PURE__*/_react.default.createElement("span", null, column.name), isCanModifyColumnWidth && /*#__PURE__*/_react.default.createElement(_draggable.default, {
71
+ style: dragAbleStyle,
72
+ onDrag: e => {
73
+ onDrag(e, headerCellRef.current[column.key], column.key);
74
+ },
75
+ onDragEnd: onDragEnd
76
+ }));
77
+ }));
78
+ }
@@ -0,0 +1,41 @@
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 = RecordItem;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _dtableUtils = require("dtable-utils");
10
+ var _formatter = _interopRequireDefault(require("../../seatable-tables/formatter"));
11
+ function RecordItem(_ref) {
12
+ let {
13
+ record,
14
+ formulaRow,
15
+ columns,
16
+ editor,
17
+ columnWidthMap
18
+ } = _ref;
19
+ return /*#__PURE__*/_react.default.createElement("tr", {
20
+ className: "seatable-rows-record-body"
21
+ }, columns.map(column => {
22
+ const width = columnWidthMap[column.key];
23
+ let cellValue = record[column.key];
24
+ if ([_dtableUtils.CellType.LINK, _dtableUtils.CellType.LINK_FORMULA, _dtableUtils.CellType.FORMULA].includes(column.type)) {
25
+ cellValue = formulaRow[column.key];
26
+ }
27
+ return /*#__PURE__*/_react.default.createElement("td", {
28
+ className: "seatable-rows-record-body-cell",
29
+ key: record._id + '_' + column.key,
30
+ style: {
31
+ width,
32
+ minWidth: width
33
+ }
34
+ }, /*#__PURE__*/_react.default.createElement(_formatter.default, {
35
+ isSample: true,
36
+ column: column,
37
+ cellValue: cellValue,
38
+ collaborators: editor.collaborators
39
+ }));
40
+ }));
41
+ }
@@ -22,7 +22,6 @@ const SeaTableTableMenu = _ref => {
22
22
  toggle,
23
23
  isHidden = false
24
24
  } = _ref;
25
- const dropDownMenuRef = (0, _react.useRef)(null);
26
25
  const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.SEATABLE_TABLE];
27
26
  let disabled = (0, _helpers.isInsertSeaTableTableDisabled)(editor, readonly);
28
27
  if (insertPosition === _constants.INSERT_POSITION.AFTER) {
@@ -37,17 +36,15 @@ const SeaTableTableMenu = _ref => {
37
36
  menuConfig: menuConfig,
38
37
  className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
39
38
  'sdoc-dropdown-menu-item-hidden': isHidden
40
- }),
41
- ref: dropDownMenuRef
39
+ })
42
40
  }, !disabled && /*#__PURE__*/_react.default.createElement("i", {
43
41
  className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
44
42
  }), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
45
43
  target: menuConfig.id,
46
44
  trigger: "hover",
47
- className: "sdoc-menu-popover sdoc-sub-dropdown-menu",
45
+ className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu",
48
46
  hideArrow: true,
49
- fade: false,
50
- container: dropDownMenuRef === null || dropDownMenuRef === void 0 ? void 0 : dropDownMenuRef.current
47
+ fade: false
51
48
  }, /*#__PURE__*/_react.default.createElement(_seatableList.default, {
52
49
  editor: editor,
53
50
  readonly: readonly,
@@ -16,7 +16,7 @@ const isMenuDisabled = (editor, readonly) => {
16
16
  match: n => {
17
17
  const type = (0, _core.getNodeType)(n);
18
18
  if (type === _elementType.CODE_BLOCK) return true; // Code block
19
- if (_slate.Editor.isVoid(editor, n)) return true; // void node
19
+ if (_slate.Editor.isVoid(editor, n) && (n === null || n === void 0 ? void 0 : n.type) !== _elementType.SEATABLE_COLUMN) return true; // void node
20
20
 
21
21
  return false;
22
22
  },
@@ -49,6 +49,10 @@ const TextStyleMenuList = _ref => {
49
49
  return (0, _helpers2.isMenuDisabled)(editor, readonly);
50
50
  // eslint-disable-next-line react-hooks/exhaustive-deps
51
51
  }, [editor, readonly]);
52
+ const isSelectedSeaTableColumn = (0, _react.useCallback)(() => {
53
+ const entery = (0, _core.getSelectedNodeByType)(editor, _constants.SEATABLE_COLUMN);
54
+ return !!entery;
55
+ }, [editor]);
52
56
  const openLinkDialog = (0, _react.useCallback)(() => {
53
57
  const eventBus = _eventBus.default.getInstance();
54
58
  eventBus.dispatch(_constants2.INTERNAL_EVENT.INSERT_ELEMENT, {
@@ -99,11 +103,16 @@ const TextStyleMenuList = _ref => {
99
103
  }, [editor, selectedFontSize, selectedFontSizeValue]);
100
104
  const getTextStyleList = (0, _react.useCallback)(key => {
101
105
  return _constants.MENUS_CONFIG_MAP[key].map(item => {
106
+ let disable = isDisabled();
107
+ const disableTypes = [_constants.TEXT_STYLE_MAP.CODE, _constants.TEXT_STYLE_MAP.LINK, _constants.TEXT_STYLE_MAP.SUPERSCRIPT, _constants.TEXT_STYLE_MAP.SUBSCRIPT];
108
+ if (disableTypes.includes(item.type)) {
109
+ disable = isSelectedSeaTableColumn() ? true : disable;
110
+ }
102
111
  let itemProps = {
103
112
  isRichEditor,
104
113
  className,
105
114
  ariaLabel: item === null || item === void 0 ? void 0 : item.ariaLabel,
106
- disabled: isDisabled(),
115
+ disabled: disable,
107
116
  isActive: isActive(item.type),
108
117
  onMouseDown: item.isColor ? () => {} : onMouseDown
109
118
  };
@@ -205,6 +205,11 @@ const CustomRenderElement = props => {
205
205
  const [renderColumn] = _plugins.SeaTableColumnPlugin.renderElements;
206
206
  return renderColumn(props, editor);
207
207
  }
208
+ case _elementType.SEATABLE_ROW:
209
+ {
210
+ const [renderRow] = _plugins.SeaTableRowPlugin.renderElements;
211
+ return renderRow(props, editor);
212
+ }
208
213
  case _elementType.SEATABLE_TABLE:
209
214
  {
210
215
  const [renderSeaTableTable] = _plugins.SeaTableViewsPlugin.renderElements;
@@ -18,7 +18,8 @@ var _menu4 = _interopRequireDefault(require("../../../plugins/code-block/menu"))
18
18
  var _menu5 = _interopRequireDefault(require("../../../plugins/sdoc-link/menu"));
19
19
  var _menu6 = _interopRequireDefault(require("../../../plugins/file-link/menu"));
20
20
  var _menu7 = _interopRequireDefault(require("../../../plugins/seatable-column/menu"));
21
- var _menu8 = _interopRequireDefault(require("../../../plugins/seatable-tables/menu"));
21
+ var _menu8 = _interopRequireDefault(require("../../../plugins/seatable-row/menu"));
22
+ var _menu9 = _interopRequireDefault(require("../../../plugins/seatable-tables/menu"));
22
23
  var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
23
24
  var _constants = require("../../../../constants");
24
25
  require("./index.css");
@@ -41,6 +42,10 @@ const InsertToolbar = _ref => {
41
42
  return _eventBus.default.getInstance();
42
43
  }, []);
43
44
  const toggle = (0, _react.useCallback)(event => {
45
+ var _event$target;
46
+ if (event !== null && event !== void 0 && event.target && (event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) === 'INPUT') {
47
+ return;
48
+ }
44
49
  popoverRef.current && popoverRef.current.toggle();
45
50
  setMenuShow(!isShowMenu);
46
51
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -97,7 +102,7 @@ const InsertToolbar = _ref => {
97
102
  }
98
103
  }, /*#__PURE__*/_react.default.createElement(_menu.default, props), /*#__PURE__*/_react.default.createElement(_tableMenu.default, props), (editor === null || editor === void 0 ? void 0 : editor.editorType) !== _constants.DOCUMENT_PLUGIN_EDITOR && /*#__PURE__*/_react.default.createElement(_menu2.default, props), /*#__PURE__*/_react.default.createElement(_menu3.default, props), /*#__PURE__*/_react.default.createElement(_menu4.default, props), /*#__PURE__*/_react.default.createElement("div", {
99
104
  className: "sdoc-dropdown-menu-divider"
100
- }), editor.columns && /*#__PURE__*/_react.default.createElement(_menu7.default, props), editor.tables && /*#__PURE__*/_react.default.createElement(_menu8.default, props), !editor.tables && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_menu5.default, props), /*#__PURE__*/_react.default.createElement(_menu6.default, props)))));
105
+ }), editor.tables && /*#__PURE__*/_react.default.createElement(_menu8.default, props), editor.columns && /*#__PURE__*/_react.default.createElement(_menu7.default, props), editor.tables && /*#__PURE__*/_react.default.createElement(_menu9.default, props), !editor.tables && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_menu5.default, props), /*#__PURE__*/_react.default.createElement(_menu6.default, props)))));
101
106
  };
102
107
  InsertToolbar.defaultProps = {
103
108
  isRichEditor: true,
@@ -134,7 +134,9 @@ const isVoidNode = node => {
134
134
  const isCodeBlock = node.type === _constants.CODE_BLOCK;
135
135
  const isCallout = node.type === _constants.CALL_OUT;
136
136
  const isSeaTableTable = node.type === _constants.SEATABLE_TABLE;
137
- return _slate.Node.string(node) === '' && !hasImage && !isVideo && !isTable && !isCodeBlock && !isCallout && !isSeaTableTable;
137
+ const isSeaTableColumn = node.type === _constants.SEATABLE_COLUMN;
138
+ const isSeaTableRow = node.type === _constants.SEATABLE_ROW;
139
+ return _slate.Node.string(node) === '' && !hasImage && !isVideo && !isTable && !isCodeBlock && !isCallout && !isSeaTableTable && !isSeaTableColumn && !isSeaTableRow;
138
140
  };
139
141
  exports.isVoidNode = isVoidNode;
140
142
  const isNotSupportTransform = node => {
@@ -28,6 +28,7 @@ const DocumentPluginEditor = _ref => {
28
28
  showOutline,
29
29
  tableId,
30
30
  columns,
31
+ rows,
31
32
  getColumnCellValue,
32
33
  tables,
33
34
  getTableById,
@@ -40,8 +41,9 @@ const DocumentPluginEditor = _ref => {
40
41
  const forceUpdate = (0, _useForceUpdate.default)();
41
42
  const validEditor = (0, _react.useMemo)(() => {
42
43
  const withColumnPlugin = _plugins.SeaTableColumnPlugin.editorPlugin;
44
+ const withRowPlugin = _plugins.SeaTableRowPlugin.editorPlugin;
43
45
  const withViewsPlugin = _plugins.SeaTableViewsPlugin.editorPlugin;
44
- const defaultEditor = withViewsPlugin(withColumnPlugin((0, _extension.createDefaultEditor)()));
46
+ const defaultEditor = withViewsPlugin(withRowPlugin(withColumnPlugin((0, _extension.createDefaultEditor)())));
45
47
 
46
48
  // getEditorConfig cache the config, so we need to update the uuid,for plugin editor
47
49
  docUuid && _context.default.updateConfigUuid(docUuid);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "1.0.219",
3
+ "version": "1.0.221-alph-0.0.1",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -39,7 +39,7 @@
39
39
  "remark-rehype": "11.0.0",
40
40
  "remark-stringify": "11.0.0",
41
41
  "slugid": "3.2.0",
42
- "socket.io-client": "4.6.1",
42
+ "socket.io-client": "4.8.1",
43
43
  "type-of": "2.0.1",
44
44
  "unified": "11.0.3",
45
45
  "url-join": "4.0.1",
@@ -100,7 +100,7 @@
100
100
  "css-minimizer-webpack-plugin": "5.0.1",
101
101
  "dotenv": "^10.0.0",
102
102
  "dotenv-expand": "^5.1.0",
103
- "dtable-sdk": "5.0.5",
103
+ "dtable-sdk": "5.0.6",
104
104
  "dtable-utils": "5.0.1",
105
105
  "ejs": "3.1.10",
106
106
  "eslint": "^8.3.0",
@@ -121,7 +121,7 @@
121
121
  "koa-router": "7.3.0",
122
122
  "koa-send": "5.0.1",
123
123
  "koa2-cors": "2.0.6",
124
- "lint-staged": "14.0.0",
124
+ "lint-staged": "15.4.3",
125
125
  "mini-css-extract-plugin": "^2.4.5",
126
126
  "node-polyfill-webpack-plugin": "2.0.1",
127
127
  "postcss": "^8.4.31",
@@ -141,7 +141,7 @@
141
141
  "react-refresh": "^0.11.0",
142
142
  "release-it": "17.3.0",
143
143
  "resolve": "^1.20.0",
144
- "resolve-url-loader": "^4.0.0",
144
+ "resolve-url-loader": "5.0.0",
145
145
  "sass-loader": "^12.3.0",
146
146
  "seafile-js": "0.2.235",
147
147
  "source-map-loader": "^3.0.0",
@@ -150,8 +150,8 @@
150
150
  "terser-webpack-plugin": "^5.2.5",
151
151
  "url-loader": "^4.1.1",
152
152
  "web-vitals": "2.1.4",
153
- "webpack": "5.64.4",
154
- "webpack-dev-server": "4.15.1",
153
+ "webpack": "5.98.0",
154
+ "webpack-dev-server": "5.2.0",
155
155
  "webpack-manifest-plugin": "5.0.0",
156
156
  "webpack-merge": "5.8.0",
157
157
  "workbox-webpack-plugin": "7.0.0"
@@ -613,5 +613,11 @@
613
613
  "Support_Youtube_Tencent_Bilibili_and_more": "Support Youtube, Tencent, Bilibili and more",
614
614
  "Image_cannot_be_copied_Please_download_the_source_image": "Image cannot be copied. Please download the source image,",
615
615
  "And_select_insert_-_image_to_upload": "and select 「insert」 - 「image」 to upload.",
616
- "Image_copy_error": "Image copy error"
616
+ "Image_copy_error": "Image copy error",
617
+ "Image_is_uploading": "Image is uploading...",
618
+ "Select_at_least_one_row_record": "Select at least one row record",
619
+ "Selected_row_records_cannot_exceed_10_rows": "Selected row records cannot exceed 10 rows",
620
+ "Select_seatable_rows": "Select seatable rows",
621
+ "Add_rows_record": "Add rows record",
622
+ "Double_click_then_adjust_field_width": "Double click, then adjust field width"
617
623
  }