@seafile/sdoc-editor 2.0.24 → 2.0.25-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 (56) hide show
  1. package/dist/basic-sdk/assets/css/dropdown-menu.css +1 -1
  2. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
  3. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  4. package/dist/basic-sdk/extension/constants/index.js +8 -2
  5. package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
  6. package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +17 -4
  7. package/dist/basic-sdk/extension/plugins/ai/ai-module/style.css +8 -0
  8. package/dist/basic-sdk/extension/plugins/index.js +7 -0
  9. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +414 -0
  10. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +76 -0
  11. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +209 -0
  12. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/ResizeHandle.js +38 -0
  13. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/index.css +384 -0
  14. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +125 -0
  15. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +144 -0
  16. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +161 -0
  17. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +47 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +98 -0
  19. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  20. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.css +3 -0
  21. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +46 -0
  22. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +62 -0
  23. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +124 -0
  26. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +160 -0
  27. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  28. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  29. package/dist/basic-sdk/extension/plugins/seatable-tables/formatter/index.js +7 -2
  30. package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +1 -0
  31. package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +2 -0
  32. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  33. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +3 -2
  34. package/dist/basic-sdk/extension/toolbar/insert-element-toolbar/index.js +1 -1
  35. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +2 -1
  36. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +2 -1
  37. package/dist/constants/index.js +1 -0
  38. package/dist/pages/document-plugin-editor.js +2 -1
  39. package/package.json +1 -1
  40. package/public/locales/cs/sdoc-editor.json +7 -1
  41. package/public/locales/de/sdoc-editor.json +66 -60
  42. package/public/locales/en/sdoc-editor.json +9 -1
  43. package/public/locales/es/sdoc-editor.json +7 -1
  44. package/public/locales/es_AR/sdoc-editor.json +7 -1
  45. package/public/locales/es_MX/sdoc-editor.json +7 -1
  46. package/public/locales/fr/sdoc-editor.json +240 -234
  47. package/public/locales/it/sdoc-editor.json +7 -1
  48. package/public/locales/ru/sdoc-editor.json +8 -2
  49. package/public/locales/zh_CN/sdoc-editor.json +6 -1
  50. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  51. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  52. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  53. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  54. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  55. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  56. package/public/media/sdoc-editor-font.css +11 -7
@@ -0,0 +1,125 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactDom = _interopRequireDefault(require("react-dom"));
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ var _ResizeHandle = _interopRequireDefault(require("./resize-handle/ResizeHandle"));
13
+ var _constants = require("../../../../../../constants");
14
+ var _basicSdk = require("../../../../../../basic-sdk");
15
+ class RowCardHeaderCell extends _react.default.Component {
16
+ constructor(props) {
17
+ super(props);
18
+ (0, _defineProperty2.default)(this, "getHeaderCellWidth", () => {
19
+ const {
20
+ column,
21
+ rowCardType,
22
+ table
23
+ } = this.props;
24
+ const {
25
+ key,
26
+ width
27
+ } = column;
28
+ let headerCellWidth = width;
29
+ if (rowCardType === 'link') {
30
+ const tableId = table._id;
31
+ const draggedCellId = `${tableId}-${key}`;
32
+ const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
33
+ if (existedWidth) {
34
+ headerCellWidth = existedWidth;
35
+ }
36
+ }
37
+ return headerCellWidth;
38
+ });
39
+ (0, _defineProperty2.default)(this, "onDrag", e => {
40
+ const headerCellWidth = this.getWidthFromMouseEvent(e);
41
+ this.setState({
42
+ headerCellWidth
43
+ });
44
+ });
45
+ (0, _defineProperty2.default)(this, "onDragStart", e => {
46
+ this.setState({
47
+ resizing: true
48
+ });
49
+ });
50
+ (0, _defineProperty2.default)(this, "onDragEnd", e => {
51
+ const {
52
+ column,
53
+ table
54
+ } = this.props;
55
+ const columnKey = column.key;
56
+ const {
57
+ _id: tableId
58
+ } = table;
59
+ const draggedCellId = `${tableId}-${columnKey}`;
60
+ let width = this.getWidthFromMouseEvent(e);
61
+ this.setState({
62
+ resizing: false
63
+ });
64
+ const eventBus = _basicSdk.EventBus.getInstance();
65
+ eventBus.dispatch(_constants.EXTERNAL_EVENT.CHANGE_HEADER_WIDTH, {
66
+ id: draggedCellId,
67
+ width
68
+ });
69
+ localStorage.setItem(draggedCellId, width);
70
+ });
71
+ (0, _defineProperty2.default)(this, "getWidthFromMouseEvent", e => {
72
+ let right = e.pageX || e.touches && e.touches[0] && e.touches[0].pageX || e.changedTouches && e.changedTouches[e.changedTouches.length - 1].pageX;
73
+ if (e.pageX === 0) {
74
+ right = 0;
75
+ }
76
+ const left = _reactDom.default.findDOMNode(this.headerCell).getBoundingClientRect().left;
77
+ // add 5px is ResizeHandle component DOM width, and the draggable column minimum width is 50px
78
+ return Math.max(right - left + 5, 50);
79
+ });
80
+ this.state = {
81
+ resizing: false,
82
+ headerCellWidth: this.getHeaderCellWidth(),
83
+ isDraggable: props.rowCardType === 'link'
84
+ };
85
+ }
86
+ render() {
87
+ const {
88
+ column
89
+ } = this.props;
90
+ const {
91
+ headerCellWidth,
92
+ resizing,
93
+ isDraggable
94
+ } = this.state;
95
+ const {
96
+ name,
97
+ key
98
+ } = column;
99
+ return /*#__PURE__*/_react.default.createElement("div", {
100
+ className: (0, _classnames.default)('row-card-column-name text-truncate position-relative', {
101
+ 'row-card-column--resizing': resizing
102
+ }, {
103
+ 'row-card-draggable': isDraggable
104
+ })
105
+ }, /*#__PURE__*/_react.default.createElement("div", {
106
+ ref: ref => this.headerCell = ref,
107
+ className: "row-card-column-name-item position-relative",
108
+ style: {
109
+ width: headerCellWidth
110
+ },
111
+ key: key,
112
+ title: name
113
+ }, /*#__PURE__*/_react.default.createElement("span", {
114
+ title: name
115
+ }, name)), isDraggable && /*#__PURE__*/_react.default.createElement(_ResizeHandle.default, {
116
+ style: {
117
+ right: 0
118
+ },
119
+ onDrag: this.onDrag,
120
+ onDragStart: this.onDragStart,
121
+ onDragEnd: this.onDragEnd
122
+ }));
123
+ }
124
+ }
125
+ var _default = exports.default = RowCardHeaderCell;
@@ -0,0 +1,144 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _rowCardHeaderCell = _interopRequireDefault(require("./row-card-header-cell"));
12
+ class RowCardHeader extends _react.default.Component {
13
+ constructor(props) {
14
+ super(props);
15
+ (0, _defineProperty2.default)(this, "onScrollControlClick", type => {
16
+ const tablesNav = this.linkRecordsHeader;
17
+ const {
18
+ offsetWidth,
19
+ scrollWidth,
20
+ scrollLeft
21
+ } = tablesNav;
22
+ let targetScrollLeft;
23
+ if (type === 'prev') {
24
+ if (scrollLeft === 0) {
25
+ return;
26
+ }
27
+ targetScrollLeft = scrollLeft - offsetWidth;
28
+ targetScrollLeft = targetScrollLeft > 0 ? targetScrollLeft : 0;
29
+ }
30
+ if (type === 'next') {
31
+ if (scrollLeft + offsetWidth === scrollWidth) {
32
+ return;
33
+ }
34
+ targetScrollLeft = scrollLeft + offsetWidth;
35
+ targetScrollLeft = targetScrollLeft > scrollWidth - offsetWidth ? scrollWidth - offsetWidth : targetScrollLeft;
36
+ }
37
+ if (this.state.canCardHeaderScroll) {
38
+ this.setState({
39
+ canCardHeaderScroll: false
40
+ });
41
+ let timer = null;
42
+ let step = (targetScrollLeft - scrollLeft) / 10;
43
+ step = step > 0 ? Math.ceil(step) : Math.floor(step);
44
+ timer = setInterval(() => {
45
+ tablesNav.scrollLeft = tablesNav.scrollLeft + step;
46
+ if (Math.abs(targetScrollLeft - tablesNav.scrollLeft) <= Math.abs(step)) {
47
+ tablesNav.scrollLeft = targetScrollLeft;
48
+ clearInterval(timer);
49
+ this.setState({
50
+ canCardHeaderScroll: true
51
+ });
52
+ }
53
+ }, 30);
54
+ }
55
+ });
56
+ (0, _defineProperty2.default)(this, "onScrollHeader", () => {
57
+ let {
58
+ scrollLeft
59
+ } = this.linkRecordsHeader;
60
+ this.props.setItemScrollLeft(scrollLeft, -1);
61
+ if (this.timer) {
62
+ clearTimeout(this.timer);
63
+ }
64
+ this.timer = setTimeout(() => {
65
+ this.props.setScrollLeft(scrollLeft);
66
+ }, 60);
67
+ });
68
+ (0, _defineProperty2.default)(this, "setHeaderScrollLeft", scrollLeft => {
69
+ this.linkRecordsHeader.scrollLeft = scrollLeft;
70
+ });
71
+ (0, _defineProperty2.default)(this, "getCardHeaderCells", () => {
72
+ const cardHeaderCells = [];
73
+ const {
74
+ renderedColumns,
75
+ rowCardType,
76
+ table
77
+ } = this.props;
78
+ // Start from the second column without name
79
+ for (let i = 1; i < renderedColumns.length; i++) {
80
+ const renderedColumn = renderedColumns[i];
81
+ cardHeaderCells.push( /*#__PURE__*/_react.default.createElement(_rowCardHeaderCell.default, {
82
+ key: renderedColumn.key,
83
+ column: renderedColumn,
84
+ rowCardType: rowCardType,
85
+ table: table
86
+ }));
87
+ }
88
+ return cardHeaderCells;
89
+ });
90
+ this.state = {
91
+ canCardHeaderScroll: true,
92
+ linkRecordsNavScrollWidth: 0,
93
+ linkRecordsNavWidth: 0
94
+ };
95
+ }
96
+ componentDidUpdate(prevProps, prevState) {
97
+ const {
98
+ offsetWidth,
99
+ scrollWidth
100
+ } = this.linkRecordsHeader;
101
+ if (prevState.linkRecordsNavScrollWidth !== scrollWidth || prevState.linkRecordsNavWidth !== offsetWidth) {
102
+ this.props.getCurrentDisplayRowMaxIndex();
103
+ this.setState({
104
+ linkRecordsNavScrollWidth: scrollWidth,
105
+ linkRecordsNavWidth: offsetWidth
106
+ });
107
+ }
108
+ }
109
+ render() {
110
+ const {
111
+ showScrollBtn,
112
+ scrollLeft,
113
+ cardHeaderClassName
114
+ } = this.props;
115
+ const {
116
+ linkRecordsNavWidth,
117
+ linkRecordsNavScrollWidth
118
+ } = this.state;
119
+ const cardHeaderCells = this.getCardHeaderCells();
120
+ return /*#__PURE__*/_react.default.createElement("div", {
121
+ className: `row-card-header ${cardHeaderClassName ? cardHeaderClassName : ''}`
122
+ }, /*#__PURE__*/_react.default.createElement("div", {
123
+ className: "row-card-column-names records-column-names",
124
+ ref: ref => this.recordItemRef = ref
125
+ }, showScrollBtn && /*#__PURE__*/_react.default.createElement("span", {
126
+ className: (0, _classnames.default)('dtable-font', 'dtable-icon-left', 'row-card-scroll', 'link-scroll-prev', {
127
+ 'scroll-active': scrollLeft > 0
128
+ }),
129
+ onClick: this.onScrollControlClick.bind(this, 'prev')
130
+ }), /*#__PURE__*/_react.default.createElement("div", {
131
+ className: "row-card-columns-container",
132
+ onScroll: this.onScrollHeader,
133
+ ref: ref => this.linkRecordsHeader = ref
134
+ }, /*#__PURE__*/_react.default.createElement("div", {
135
+ className: "d-inline-flex"
136
+ }, cardHeaderCells)), showScrollBtn && /*#__PURE__*/_react.default.createElement("span", {
137
+ className: (0, _classnames.default)('dtable-font', 'dtable-icon-right', 'row-card-scroll', 'link-scroll-next', {
138
+ 'scroll-active': scrollLeft + linkRecordsNavWidth < linkRecordsNavScrollWidth
139
+ }),
140
+ onClick: this.onScrollControlClick.bind(this, 'next')
141
+ })));
142
+ }
143
+ }
144
+ var _default = exports.default = RowCardHeader;
@@ -0,0 +1,161 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _dtableStore = require("dtable-store");
12
+ var _helpers = require("../../helpers");
13
+ var _constants = require("../../../../../../constants");
14
+ var _basicSdk = require("../../../../../../basic-sdk");
15
+ var _formatter = _interopRequireDefault(require("../../../seatable-tables/formatter"));
16
+ const emptyComponent = /*#__PURE__*/_react.default.createElement("span", {
17
+ className: "row-cell-empty d-inline-block"
18
+ });
19
+ class RowCardItem extends _react.PureComponent {
20
+ constructor(props) {
21
+ super(props);
22
+ (0, _defineProperty2.default)(this, "setDraggedCell", draggedCell => {
23
+ this.setState({
24
+ draggedCell
25
+ });
26
+ });
27
+ (0, _defineProperty2.default)(this, "getRowRecord", () => {
28
+ return this.linkRowRecord();
29
+ });
30
+ (0, _defineProperty2.default)(this, "linkRowRecord", () => {
31
+ let {
32
+ row,
33
+ formulaRow,
34
+ columns,
35
+ table,
36
+ rowCardType
37
+ } = this.props;
38
+ const {
39
+ draggedCell
40
+ } = this.state;
41
+ const {
42
+ _id: tableId
43
+ } = table;
44
+ return columns.filter(column => column.key !== '0000').map(column => {
45
+ const {
46
+ key,
47
+ width
48
+ } = column;
49
+ const draggedCellId = `${tableId}-${key}`;
50
+ const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
51
+ let columnWidth = existedWidth && rowCardType === 'link' ? existedWidth : width;
52
+ if (draggedCell.id === draggedCellId) {
53
+ columnWidth = draggedCell.width;
54
+ }
55
+ let cellValue = row[column.key];
56
+ if ([_dtableStore.CellType.LINK, _dtableStore.CellType.LINK_FORMULA, _dtableStore.CellType.FORMULA].includes(column.type)) {
57
+ cellValue = formulaRow[column.key];
58
+ }
59
+ return /*#__PURE__*/_react.default.createElement("div", {
60
+ className: "row-cell-value text-truncate",
61
+ key: row._id + '_' + key,
62
+ style: {
63
+ width: columnWidth
64
+ }
65
+ }, /*#__PURE__*/_react.default.createElement(_formatter.default, {
66
+ isSample: true,
67
+ column: column,
68
+ cellValue: cellValue,
69
+ collaborators: (0, _helpers.getAllCollaborators)(),
70
+ components: {
71
+ emptyComponent
72
+ },
73
+ isSeatableRow: true
74
+ }));
75
+ });
76
+ });
77
+ (0, _defineProperty2.default)(this, "changeScroll", event => {
78
+ event.stopPropagation();
79
+ const {
80
+ setItemScrollLeft,
81
+ rowIdx
82
+ } = this.props;
83
+ if (this.scrollActive) {
84
+ this.scrollActive = false;
85
+ return;
86
+ }
87
+ if (setItemScrollLeft) setItemScrollLeft(this.cardRecordsItemRef.scrollLeft, rowIdx);
88
+ });
89
+ (0, _defineProperty2.default)(this, "setScrollLeft", scrollLeft => {
90
+ this.scrollActive = true;
91
+ this.cardRecordsItemRef.scrollLeft = scrollLeft;
92
+ });
93
+ (0, _defineProperty2.default)(this, "getScrollLeft", () => {
94
+ return this.cardRecordsItemRef.scrollLeft;
95
+ });
96
+ (0, _defineProperty2.default)(this, "setCardRecordsItemRef", ref => {
97
+ this.cardRecordsItemRef = ref;
98
+ });
99
+ this.state = {
100
+ draggedCell: {},
101
+ isShowTick: false
102
+ };
103
+ }
104
+ componentDidMount() {
105
+ const {
106
+ rowIdx,
107
+ onRef
108
+ } = this.props;
109
+ onRef && onRef(this, rowIdx);
110
+ const eventBus = _basicSdk.EventBus.getInstance();
111
+ this.unsubscribeChangeHeaderWidth = eventBus.subscribe(_constants.EXTERNAL_EVENT.CHANGE_HEADER_WIDTH, this.setDraggedCell);
112
+ }
113
+ componentWillUnmount() {
114
+ this.unsubscribeChangeHeaderWidth();
115
+ }
116
+ UNSAFE_componentWillUpdate(nextProps) {
117
+ const {
118
+ onRef
119
+ } = this.props;
120
+ onRef && onRef(this, nextProps.rowIdx);
121
+ }
122
+ render() {
123
+ const {
124
+ row,
125
+ columns,
126
+ isSelected,
127
+ onRowClick
128
+ } = this.props;
129
+ const nameColumn = columns.find(column => column.key === '0000');
130
+ const cellValue = row['0000'];
131
+ return /*#__PURE__*/_react.default.createElement("div", {
132
+ tabIndex: 0,
133
+ "aria-label": row['0000'],
134
+ className: "row-card-item",
135
+ onClick: onRowClick
136
+ }, /*#__PURE__*/_react.default.createElement("div", {
137
+ className: "row-card-item-container"
138
+ }, /*#__PURE__*/_react.default.createElement("div", {
139
+ className: "row-card-item-header"
140
+ }, /*#__PURE__*/_react.default.createElement("div", {
141
+ className: "row-card-item-name seatable-row-card-name"
142
+ }, /*#__PURE__*/_react.default.createElement(_formatter.default, {
143
+ isSample: true,
144
+ column: nameColumn,
145
+ cellValue: cellValue,
146
+ collaborators: (0, _helpers.getAllCollaborators)(),
147
+ components: {
148
+ emptyComponent
149
+ }
150
+ })), isSelected && /*#__PURE__*/_react.default.createElement("span", {
151
+ className: "row-card-item-check dtable-font dtable-icon-check-circle"
152
+ })), /*#__PURE__*/_react.default.createElement("div", {
153
+ className: "row-card-item-content",
154
+ onScroll: this.changeScroll,
155
+ ref: this.setCardRecordsItemRef
156
+ }, /*#__PURE__*/_react.default.createElement("div", {
157
+ className: "d-inline-flex"
158
+ }, this.getRowRecord()))));
159
+ }
160
+ }
161
+ var _default = exports.default = RowCardItem;
@@ -0,0 +1,47 @@
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 _reactI18next = require("react-i18next");
10
+ var _dtableUtils = require("dtable-utils");
11
+ var _recordContent = _interopRequireDefault(require("./record-content"));
12
+ const SeatableTableRecord = _ref => {
13
+ let {
14
+ table,
15
+ setSelectedRow
16
+ } = _ref;
17
+ const {
18
+ t
19
+ } = (0, _reactI18next.useTranslation)('sdoc-editor');
20
+ const renderedColumns = () => {
21
+ var _table$columns;
22
+ return table === null || table === void 0 ? void 0 : (_table$columns = table.columns) === null || _table$columns === void 0 ? void 0 : _table$columns.filter(column => {
23
+ if (column.type === _dtableUtils.CellType.LONG_TEXT) {
24
+ return false;
25
+ }
26
+ return true;
27
+ }).map(column => Object.assign({}, column, {
28
+ width: 100
29
+ }));
30
+ };
31
+ return /*#__PURE__*/_react.default.createElement(_recordContent.default, {
32
+ table: table,
33
+ renderedColumns: renderedColumns(),
34
+ columns: renderedColumns(),
35
+ rows: table.rows,
36
+ rowCardType: "link",
37
+ isAdditionEditorView: false,
38
+ showScrollBtn: !window.isMobile,
39
+ isShowRowCardHeader: true,
40
+ cardListClassName: window.isMobile ? 'mobile-link-row-card-list' : '',
41
+ cardHeaderClassName: window.isMobile ? 'mobile-link-row-card-header' : '',
42
+ noCardItemTip: t('No_linked_records'),
43
+ setSelectedRow: setSelectedRow,
44
+ t: t
45
+ });
46
+ };
47
+ var _default = exports.default = SeatableTableRecord;
@@ -0,0 +1,98 @@
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.getAllCollaborators = 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, selectedRowID, 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
+ row_id: selectedRowID,
60
+ column_width: columnWidth,
61
+ children: [(0, _core.generateDefaultText)()]
62
+ };
63
+ };
64
+ exports.generateSeaTableRow = generateSeaTableRow;
65
+ const insertSeaTableRow = function (editor, table_id, selectedRowID) {
66
+ let insertPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.INSERT_POSITION.CURRENT;
67
+ const seatableRowNode = generateSeaTableRow(table_id, selectedRowID, 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;
91
+ const getAllCollaborators = () => {
92
+ const {
93
+ collaboratorManager
94
+ } = window.seafile || window.seafileConfig;
95
+ const collaborators = Object.values(collaboratorManager === null || collaboratorManager === void 0 ? void 0 : collaboratorManager.emailUserMap);
96
+ return collaborators;
97
+ };
98
+ exports.getAllCollaborators = getAllCollaborators;
@@ -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,3 @@
1
+ .sdoc-insert-seatable-row-menu-popover .sdoc-seatable-selected-table-list-wrapper {
2
+ left: unset !important;
3
+ }
@@ -0,0 +1,46 @@
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
+ require("./index.css");
16
+ const SeaTableRowMenu = _ref => {
17
+ let {
18
+ editor,
19
+ readonly,
20
+ toggle,
21
+ isHidden = false
22
+ } = _ref;
23
+ const disabled = (0, _helpers.isInsertSeaTableRowDisabled)(editor, readonly);
24
+ const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.ELEMENT_TYPE.SEATABLE_ROW];
25
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
26
+ disabled: disabled,
27
+ menuConfig: menuConfig,
28
+ className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
29
+ 'sdoc-dropdown-menu-item-hidden': isHidden
30
+ })
31
+ }, !disabled && /*#__PURE__*/_react.default.createElement("i", {
32
+ className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
33
+ })), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
34
+ target: menuConfig.id,
35
+ hideArrow: true,
36
+ trigger: "hover",
37
+ fade: false,
38
+ placement: "right-start",
39
+ className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-seatable-row-menu-popover"
40
+ }, /*#__PURE__*/_react.default.createElement(_seatableList.default, {
41
+ editor: editor,
42
+ readonly: readonly,
43
+ toggle: toggle
44
+ })));
45
+ };
46
+ var _default = exports.default = SeaTableRowMenu;