@seafile/sdoc-editor 2.0.17 → 2.0.18-alph-0.0.2

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 (48) 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 +2 -1
  3. package/dist/basic-sdk/extension/constants/index.js +8 -2
  4. package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
  5. package/dist/basic-sdk/extension/plugins/index.js +7 -0
  6. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/helpers.js +35 -0
  7. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +106 -0
  8. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +81 -0
  9. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +201 -0
  10. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-item.js +41 -0
  11. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +108 -0
  12. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +143 -0
  13. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +240 -0
  14. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +37 -0
  15. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table.js +134 -0
  16. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +90 -0
  17. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +44 -0
  19. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +61 -0
  20. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  21. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  22. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +123 -0
  23. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +161 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  26. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  27. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +3 -2
  28. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +2 -1
  29. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +4 -4
  30. package/dist/pages/document-plugin-editor.js +3 -1
  31. package/package.json +1 -1
  32. package/public/locales/cs/sdoc-editor.json +7 -1
  33. package/public/locales/de/sdoc-editor.json +66 -60
  34. package/public/locales/en/sdoc-editor.json +7 -1
  35. package/public/locales/es/sdoc-editor.json +7 -1
  36. package/public/locales/es_AR/sdoc-editor.json +7 -1
  37. package/public/locales/es_MX/sdoc-editor.json +7 -1
  38. package/public/locales/fr/sdoc-editor.json +240 -234
  39. package/public/locales/it/sdoc-editor.json +7 -1
  40. package/public/locales/ru/sdoc-editor.json +8 -2
  41. package/public/locales/zh_CN/sdoc-editor.json +6 -1
  42. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  43. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  44. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  45. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  46. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  47. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  48. package/public/media/sdoc-editor-font.css +11 -7
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.updateSeaTableTable = exports.isInsertSeaTableRowDisabled = exports.insertSeaTableRow = exports.generateSeaTableRow = void 0;
8
+ var _slate = require("@seafile/slate");
9
+ var _slugid = _interopRequireDefault(require("slugid"));
10
+ var _core = require("../../core");
11
+ var _helpers = require("../seatable-column/helpers");
12
+ var _constants = require("../../constants");
13
+ var _helper = require("../paragraph/helper");
14
+ const isInsertSeaTableRowDisabled = (editor, readonly) => {
15
+ if (readonly) return true;
16
+ const {
17
+ selection
18
+ } = editor;
19
+ if (selection === null) return true;
20
+ const [match] = _slate.Editor.nodes(editor, {
21
+ match: n => {
22
+ let type = (0, _core.getNodeType)(n);
23
+ if (!type && (0, _core.isTextNode)(n) && n.id) {
24
+ const parentNode = (0, _core.getParentNode)(editor.children, n.id);
25
+ type = (0, _core.getNodeType)(parentNode);
26
+ }
27
+ if (type.startsWith('header')) return true;
28
+ if (type === _constants.ELEMENT_TYPE.TITLE) return true;
29
+ if (type === _constants.ELEMENT_TYPE.SUBTITLE) return true;
30
+ if (type === _constants.ELEMENT_TYPE.CODE_BLOCK) return true;
31
+ if (type === _constants.ELEMENT_TYPE.ORDERED_LIST) return true;
32
+ if (type === _constants.ELEMENT_TYPE.UNORDERED_LIST) return true;
33
+ if (type === _constants.ELEMENT_TYPE.BLOCKQUOTE) return true;
34
+ if (type === _constants.ELEMENT_TYPE.LIST_ITEM) return true;
35
+ if (type === _constants.ELEMENT_TYPE.TABLE) return true;
36
+ if (type === _constants.ELEMENT_TYPE.TABLE_CELL) return true;
37
+ if (type === _constants.ELEMENT_TYPE.TABLE_ROW) return true;
38
+ if (type === _constants.ELEMENT_TYPE.CALL_OUT) return true;
39
+ if (type === _constants.ELEMENT_TYPE.MULTI_COLUMN) return true;
40
+ if (_slate.Editor.isVoid(editor, n)) return true;
41
+ return false;
42
+ },
43
+ universal: true
44
+ });
45
+ if (match) return true;
46
+ return false;
47
+ };
48
+ exports.isInsertSeaTableRowDisabled = isInsertSeaTableRowDisabled;
49
+ const generateSeaTableRow = (table_id, selectedRowsID, editor) => {
50
+ const table = editor.getTableById(table_id);
51
+ const columnWidth = {};
52
+ table.columns.forEach(item => {
53
+ columnWidth[item.key] = (0, _helpers.getColumnWidth)(item);
54
+ });
55
+ return {
56
+ id: _slugid.default.nice(),
57
+ type: _constants.SEATABLE_ROW,
58
+ table_id: table_id,
59
+ selected_rows_id: selectedRowsID,
60
+ column_width: columnWidth,
61
+ children: [(0, _core.generateDefaultText)()]
62
+ };
63
+ };
64
+ exports.generateSeaTableRow = generateSeaTableRow;
65
+ const insertSeaTableRow = function (editor, table_id, selectedRowsID) {
66
+ let insertPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.INSERT_POSITION.CURRENT;
67
+ const seatableRowNode = generateSeaTableRow(table_id, selectedRowsID, editor);
68
+ if (insertPosition === _constants.INSERT_POSITION.AFTER) {
69
+ const path = _slate.Editor.path(editor, editor.selection);
70
+ const currentNode = (0, _core.getNode)(editor, [path[0]]);
71
+
72
+ // Insert into selection position if in empty paragraph nodes
73
+ if (currentNode.type === _constants.PARAGRAPH && (0, _helper.isEmptyNode)(currentNode)) {
74
+ _slate.Transforms.setNodes(editor, seatableRowNode);
75
+ return;
76
+ }
77
+ path && _slate.Transforms.insertNodes(editor, seatableRowNode, {
78
+ at: [path[0] + 1]
79
+ });
80
+ return;
81
+ }
82
+ _slate.Transforms.setNodes(editor, seatableRowNode);
83
+ };
84
+ exports.insertSeaTableRow = insertSeaTableRow;
85
+ const updateSeaTableTable = (editor, props, options) => {
86
+ _slate.Transforms.setNodes(editor, {
87
+ ...props
88
+ }, options);
89
+ };
90
+ exports.updateSeaTableTable = updateSeaTableTable;
@@ -0,0 +1,17 @@
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 _elementType = require("../../constants/element-type");
9
+ var _plugin = _interopRequireDefault(require("./plugin"));
10
+ var _renderElem = _interopRequireDefault(require("./render-elem"));
11
+ const SeaTableRowPlugin = {
12
+ type: _elementType.SEATABLE_ROW,
13
+ nodeType: 'element',
14
+ editorPlugin: _plugin.default,
15
+ renderElements: [_renderElem.default]
16
+ };
17
+ var _default = exports.default = SeaTableRowPlugin;
@@ -0,0 +1,44 @@
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 _react = _interopRequireDefault(require("react"));
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _reactstrap = require("reactstrap");
11
+ var _constants = require("../../../constants");
12
+ var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
13
+ var _helpers = require("../helpers");
14
+ var _seatableList = _interopRequireDefault(require("./seatable-list"));
15
+ const SeaTableRowMenu = _ref => {
16
+ let {
17
+ editor,
18
+ readonly,
19
+ toggle,
20
+ isHidden = false
21
+ } = _ref;
22
+ const disabled = (0, _helpers.isInsertSeaTableRowDisabled)(editor, readonly);
23
+ const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.ELEMENT_TYPE.SEATABLE_ROW];
24
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
25
+ disabled: disabled,
26
+ menuConfig: menuConfig,
27
+ className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
28
+ 'sdoc-dropdown-menu-item-hidden': isHidden
29
+ })
30
+ }, !disabled && /*#__PURE__*/_react.default.createElement("i", {
31
+ className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
32
+ })), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
33
+ target: menuConfig.id,
34
+ hideArrow: true,
35
+ trigger: "hover",
36
+ fade: false,
37
+ className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu"
38
+ }, /*#__PURE__*/_react.default.createElement(_seatableList.default, {
39
+ editor: editor,
40
+ readonly: readonly,
41
+ toggle: toggle
42
+ })));
43
+ };
44
+ var _default = exports.default = SeaTableRowMenu;
@@ -0,0 +1,61 @@
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 _utils = require("../../../utils");
11
+ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
12
+ var _constants = require("../../../../constants");
13
+ var _constants2 = require("../../../constants");
14
+ const SeaTableList = _ref => {
15
+ let {
16
+ editor,
17
+ toggle
18
+ } = _ref;
19
+ const seatableRef = (0, _react.useRef)(null);
20
+ const [computedStyle, setComputedStyle] = (0, _react.useState)({});
21
+ const tables = editor.tables;
22
+ (0, _react.useEffect)(() => {
23
+ if (seatableRef.current) {
24
+ // bottom overflow
25
+ if ((0, _utils.isOverflowPortByDirection)(seatableRef.current, 'bottom')) {
26
+ return setComputedStyle({
27
+ bottom: '0px'
28
+ });
29
+ }
30
+ // default
31
+ setComputedStyle({
32
+ top: '-20px'
33
+ });
34
+ }
35
+ }, []);
36
+ const openSelectSeatableTableDialog = (0, _react.useCallback)(item => {
37
+ const eventBus = _eventBus.default.getInstance();
38
+ eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
39
+ type: _constants2.ELEMENT_TYPE.SEATABLE_ROW,
40
+ data: {
41
+ tableID: item._id,
42
+ tableName: item.name
43
+ }
44
+ });
45
+ toggle && toggle();
46
+
47
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48
+ }, [toggle]);
49
+ return /*#__PURE__*/_react.default.createElement("div", {
50
+ ref: seatableRef,
51
+ className: "sdoc-dropdown-menu-container sdoc-seatable-selected-table-list-wrapper",
52
+ style: computedStyle
53
+ }, tables.map(item => {
54
+ return /*#__PURE__*/_react.default.createElement("div", {
55
+ key: item._id,
56
+ className: "sdoc-dropdown-menu-item text-truncate d-block",
57
+ onClick: () => openSelectSeatableTableDialog(item)
58
+ }, item.name);
59
+ }));
60
+ };
61
+ var _default = exports.default = SeaTableList;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _constants = require("../../constants");
8
+ class Row {
9
+ constructor(option) {
10
+ this.type = option.type || _constants.SEATABLE_ROW;
11
+ this.table_id = option.table_id;
12
+ this.selected_rows_id = option.selected_rows_id;
13
+ this.column_width = option.column_width;
14
+ this.children = option.children || [{
15
+ text: ''
16
+ }];
17
+ }
18
+ }
19
+ var _default = exports.default = Row;
@@ -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
+ }