@seafile/sdoc-editor 1.0.220 → 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 +1 -1
  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,240 @@
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 _reactI18next = require("react-i18next");
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+ // import { getFormattedCell, getRowRecord } from '../../utils/row-record-utils';
15
+ // import Highlighter from '../highlighter';
16
+ // import LinkContent from '../../lib/formatters/widgets/link-content';
17
+ // import { EventTypes } from '../../lib/constants';
18
+
19
+ const EMPTY_LINK = /*#__PURE__*/_react.default.createElement("span", {
20
+ className: "row-cell-value-empty"
21
+ });
22
+ class RowCardItem extends _react.PureComponent {
23
+ constructor(props) {
24
+ super(props);
25
+ (0, _defineProperty2.default)(this, "setDraggedCell", draggedCell => {
26
+ this.setState({
27
+ draggedCell
28
+ });
29
+ });
30
+ (0, _defineProperty2.default)(this, "onSelectRow", e => {
31
+ const {
32
+ rowCardType,
33
+ isAdditionEditorView,
34
+ row,
35
+ table,
36
+ closeSelect,
37
+ onSelectRow,
38
+ onExpandRow
39
+ } = this.props;
40
+
41
+ // 1. row card opened by other module(statistic, search)
42
+ if (rowCardType !== 'link') {
43
+ window.app.expandRow(row, table);
44
+ return;
45
+ }
46
+
47
+ // 2. row card opened by link module
48
+ // 2.1 mobile
49
+ if (window.isMobile) {
50
+ // add link
51
+ if (isAdditionEditorView) {
52
+ onSelectRow && onSelectRow(row);
53
+ } else {
54
+ // preview link
55
+ if (!row._deleted && onExpandRow) {
56
+ onExpandRow(row, table);
57
+ }
58
+ }
59
+ return;
60
+ }
61
+
62
+ // 2.2 pc: add link | preview link
63
+ const expandedRowPosition = e.target.getBoundingClientRect();
64
+ window.app.setExpandRowPosition(expandedRowPosition);
65
+ closeSelect && closeSelect();
66
+ // add link
67
+ if (isAdditionEditorView) {
68
+ e.nativeEvent.stopImmediatePropagation();
69
+ e.stopPropagation();
70
+ onSelectRow && onSelectRow(row, e);
71
+ return;
72
+ }
73
+ // preview link
74
+ if (row._deleted) return; // the linked row has been deleted, can not be expand row's detail
75
+ onExpandRow && onExpandRow(row, table);
76
+ });
77
+ (0, _defineProperty2.default)(this, "getRowRecord", () => {
78
+ // let { row, table, columns, rowCardType, unShowColumnKeyList, matchResult } = this.props;
79
+ // let { _id: tableId } = table;
80
+ // if (rowCardType === 'search') {
81
+ // return getRowRecord(tableId, row, columns, unShowColumnKeyList, matchResult);
82
+ // }
83
+ return this.linkRowRecord();
84
+ });
85
+ (0, _defineProperty2.default)(this, "linkRowRecord", () => {
86
+ let {
87
+ row,
88
+ formulaRow,
89
+ columns,
90
+ table,
91
+ rowCardType,
92
+ isShowColumnName
93
+ } = this.props;
94
+ const {
95
+ draggedCell
96
+ } = this.state;
97
+ const {
98
+ _id: tableId
99
+ } = table;
100
+ return columns.map(column => {
101
+ const {
102
+ key,
103
+ type,
104
+ data,
105
+ width,
106
+ name
107
+ } = column;
108
+ const draggedCellId = `${tableId}-${key}`;
109
+ const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
110
+ let columnWidth = existedWidth && rowCardType === 'link' ? existedWidth : width;
111
+ if (draggedCell.id === draggedCellId) {
112
+ columnWidth = draggedCell.width;
113
+ }
114
+ if (type === _dtableStore.CellType.LINK) {
115
+ const {
116
+ display_column_key,
117
+ array_type,
118
+ array_data
119
+ } = data;
120
+ // linked table's linked column
121
+ const linkedColumn = {
122
+ key: display_column_key,
123
+ type: array_type,
124
+ data: array_data
125
+ };
126
+ return /*#__PURE__*/_react.default.createElement("div", {
127
+ className: `row-cell-value text-truncate ${isShowColumnName && 'show-name'}`,
128
+ key: row._id + '_' + key,
129
+ style: {
130
+ width: columnWidth
131
+ }
132
+ }, isShowColumnName && /*#__PURE__*/_react.default.createElement("span", {
133
+ className: "column-name text-truncate"
134
+ }, name), /*#__PURE__*/_react.default.createElement("div", {
135
+ className: "links-formatter"
136
+ }, /*#__PURE__*/_react.default.createElement("div", {
137
+ className: "formatter-show"
138
+ })));
139
+ }
140
+ return null;
141
+ // return getFormattedCell(column, row, { formulaRow, tableId }, columnWidth, isShowColumnName);
142
+ });
143
+ });
144
+ (0, _defineProperty2.default)(this, "removeCardItem", e => {
145
+ e.stopPropagation();
146
+ let {
147
+ row,
148
+ removeCardItem,
149
+ closeSelect
150
+ } = this.props;
151
+ closeSelect && closeSelect();
152
+ removeCardItem && removeCardItem(row._id);
153
+ });
154
+ (0, _defineProperty2.default)(this, "changeScroll", event => {
155
+ event.stopPropagation();
156
+ const {
157
+ setItemScrollLeft,
158
+ rowIdx
159
+ } = this.props;
160
+ if (this.scrollActive) {
161
+ this.scrollActive = false;
162
+ return;
163
+ }
164
+ if (setItemScrollLeft) setItemScrollLeft(this.cardRecordsItemRef.scrollLeft, rowIdx);
165
+ });
166
+ (0, _defineProperty2.default)(this, "setScrollLeft", scrollLeft => {
167
+ this.scrollActive = true;
168
+ this.cardRecordsItemRef.scrollLeft = scrollLeft;
169
+ });
170
+ (0, _defineProperty2.default)(this, "getScrollLeft", () => {
171
+ return this.cardRecordsItemRef.scrollLeft;
172
+ });
173
+ (0, _defineProperty2.default)(this, "setCardRecordsItemRef", ref => {
174
+ this.cardRecordsItemRef = ref;
175
+ });
176
+ this.state = {
177
+ draggedCell: {}
178
+ };
179
+ }
180
+ componentDidMount() {
181
+ const {
182
+ rowIdx,
183
+ onRef
184
+ } = this.props;
185
+ onRef && onRef(this, rowIdx);
186
+ // const { eventBus } = window.app;
187
+ // this.unsubscribeChangeHeaderWidth = eventBus.subscribe(EventTypes.CHANGE_HEADER_WIDTH, this.setDraggedCell);
188
+ }
189
+ componentWillUnmount() {
190
+ this.unsubscribeChangeHeaderWidth();
191
+ }
192
+ UNSAFE_componentWillUpdate(nextProps) {
193
+ const {
194
+ onRef
195
+ } = this.props;
196
+ onRef && onRef(this, nextProps.rowIdx);
197
+ }
198
+ render() {
199
+ const {
200
+ row,
201
+ t,
202
+ matchResult,
203
+ isShowRemoveCardItemBtn,
204
+ displayRowName
205
+ } = this.props;
206
+ const cardItemClass = (0, _classnames.default)('row-card-item', {
207
+ 'row-card-item-highlight': this.props.isHighlightRow
208
+ });
209
+ return /*#__PURE__*/_react.default.createElement("div", {
210
+ tabIndex: 0,
211
+ "aria-label": displayRowName,
212
+ className: cardItemClass,
213
+ onClick: this.onSelectRow
214
+ }, /*#__PURE__*/_react.default.createElement("div", {
215
+ className: "row-card-item-container"
216
+ }, /*#__PURE__*/_react.default.createElement("div", {
217
+ className: "row-card-item-header"
218
+ }, row.isShowTick && /*#__PURE__*/_react.default.createElement("span", {
219
+ className: "row-card-item-check dtable-font dtable-icon-check-circle"
220
+ }), isShowRemoveCardItemBtn && /*#__PURE__*/_react.default.createElement("span", {
221
+ className: "row-card-item-remove d-print-none",
222
+ onClick: this.removeCardItem
223
+ }, /*#__PURE__*/_react.default.createElement("i", {
224
+ className: "row-card-remove-icon dtable-font dtable-icon-x-"
225
+ }))), /*#__PURE__*/_react.default.createElement("div", {
226
+ className: "row-card-item-content",
227
+ onScroll: this.changeScroll,
228
+ ref: this.setCardRecordsItemRef
229
+ }, row._deleted ? /*#__PURE__*/_react.default.createElement("div", {
230
+ className: "d-flex flex-fill justify-content-center error"
231
+ }, t('The_linked_row_has_been_deleted')) : /*#__PURE__*/_react.default.createElement("div", {
232
+ className: "d-inline-flex"
233
+ }, this.getRowRecord()))));
234
+ }
235
+ }
236
+ RowCardItem.defaultProps = {
237
+ isShowColumnName: false,
238
+ unShowColumnKeyList: ['0000']
239
+ };
240
+ var _default = exports.default = (0, _reactI18next.withTranslation)('dtable')(RowCardItem);
@@ -0,0 +1,37 @@
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 _dtableUtils = require("dtable-utils");
10
+ var _recordContent = _interopRequireDefault(require("./record-content"));
11
+ const SeatableTableRecord = _ref => {
12
+ let {
13
+ table
14
+ } = _ref;
15
+ console.log(1, table);
16
+ const renderedColumns = () => {
17
+ var _table$columns;
18
+ return table === null || table === void 0 ? void 0 : (_table$columns = table.columns) === null || _table$columns === void 0 ? void 0 : _table$columns.filter(column => {
19
+ if (column.type === _dtableUtils.CellType.LONG_TEXT) {
20
+ return false;
21
+ }
22
+ // if (['0000', ...hiddenColumns].includes(column.key)) {
23
+ // return false;
24
+ // }
25
+ return true;
26
+ }).map(column => Object.assign({}, column, {
27
+ width: 100
28
+ }));
29
+ };
30
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_recordContent.default, {
31
+ table: table,
32
+ renderedColumns: renderedColumns(),
33
+ columns: renderedColumns(),
34
+ rows: table.rows
35
+ }));
36
+ };
37
+ var _default = exports.default = SeatableTableRecord;
@@ -0,0 +1,134 @@
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 _dtableUtils = require("dtable-utils");
11
+ var _recordItem = _interopRequireDefault(require("./record-item"));
12
+ const SeatableTable = _ref => {
13
+ var _tableInfoRef$current, _tableInfoRef$current2;
14
+ let {
15
+ tableID,
16
+ setSelectedRowsID,
17
+ editor
18
+ } = _ref;
19
+ const tableInfoRef = (0, _react.useRef)(null);
20
+ const [shownRecords, setShownRecords] = (0, _react.useState)([]);
21
+ const [columns, setColumns] = (0, _react.useState)([]);
22
+ const headerCellRef = (0, _react.useRef)({});
23
+ (0, _react.useEffect)(() => {
24
+ async function initTableData() {
25
+ const table = await editor.getTableById(tableID);
26
+ if (!tableInfoRef.current) {
27
+ tableInfoRef.current = {};
28
+ }
29
+ if (!tableInfoRef.current[tableID]) {
30
+ tableInfoRef.current[tableID] = {
31
+ formulaRows: editor.getTableFormulaResults(table, table.rows),
32
+ idRowMap: table.rows.reduce((result, item) => {
33
+ result[item._id] = item;
34
+ return result;
35
+ }, {})
36
+ };
37
+ }
38
+ const validRecords = table.rows;
39
+ setShownRecords(validRecords);
40
+ let validColumns = table.columns;
41
+
42
+ // formatted columns
43
+ validColumns = validColumns.map(column => {
44
+ const {
45
+ type
46
+ } = column;
47
+ if (type === _dtableUtils.CellType.LINK) {
48
+ const {
49
+ data
50
+ } = column;
51
+ const {
52
+ display_column_key,
53
+ array_type,
54
+ array_data
55
+ } = data;
56
+ const display_column = {
57
+ key: display_column_key || '0000',
58
+ type: array_type || _dtableUtils.CellType.TEXT,
59
+ data: array_data || null
60
+ };
61
+ return {
62
+ ...column,
63
+ data: {
64
+ ...data,
65
+ display_column
66
+ }
67
+ };
68
+ }
69
+ return column;
70
+ });
71
+ setColumns(validColumns);
72
+ }
73
+ initTableData();
74
+
75
+ // eslint-disable-next-line react-hooks/exhaustive-deps
76
+ }, [tableID]);
77
+ const onClick = (0, _react.useCallback)(e => {
78
+ const domCell = e.target;
79
+ const recordId = domCell.getAttribute('data-record-id') ? domCell.getAttribute('data-record-id') : domCell.parentNode.getAttribute('data-record-id');
80
+ setSelectedRowsID(prevSelectedRowsID => {
81
+ if (!prevSelectedRowsID.includes(recordId)) {
82
+ var _domCell$closest;
83
+ (_domCell$closest = domCell.closest('tr')) === null || _domCell$closest === void 0 ? void 0 : _domCell$closest.classList.add('isSelected');
84
+ return [...prevSelectedRowsID, recordId];
85
+ } else {
86
+ var _domCell$closest2;
87
+ (_domCell$closest2 = domCell.closest('tr')) === null || _domCell$closest2 === void 0 ? void 0 : _domCell$closest2.classList.remove('isSelected');
88
+ return prevSelectedRowsID.filter(id => id !== recordId);
89
+ }
90
+ });
91
+ }, [setSelectedRowsID]);
92
+ const formulaRows = (tableInfoRef === null || tableInfoRef === void 0 ? void 0 : (_tableInfoRef$current = tableInfoRef.current) === null || _tableInfoRef$current === void 0 ? void 0 : (_tableInfoRef$current2 = _tableInfoRef$current[tableID]) === null || _tableInfoRef$current2 === void 0 ? void 0 : _tableInfoRef$current2.formulaRows) || {};
93
+ (0, _react.useEffect)(() => {
94
+ const seatableRowsContaniner = document.getElementById('seatable-table-rows-view');
95
+ seatableRowsContaniner.addEventListener('click', onClick);
96
+ return () => {
97
+ seatableRowsContaniner.removeEventListener('click', onClick);
98
+ };
99
+ }, [onClick]);
100
+ return /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "seatable-table-wrapper"
102
+ }, /*#__PURE__*/_react.default.createElement("table", {
103
+ className: "seatable-view-records"
104
+ }, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", {
105
+ className: "seatable-view-column-header-row"
106
+ }, columns.map(column => {
107
+ const width = 100;
108
+ return /*#__PURE__*/_react.default.createElement("th", {
109
+ ref: ref => {
110
+ headerCellRef.current[column.key] = ref;
111
+ },
112
+ className: "seatable-view-column-header-cell",
113
+ key: column.key,
114
+ style: {
115
+ width,
116
+ minWidth: width
117
+ }
118
+ }, /*#__PURE__*/_react.default.createElement("span", null, column.name));
119
+ }))), /*#__PURE__*/_react.default.createElement("tbody", {
120
+ className: "seatable-view-body-row",
121
+ id: "seatable-table-rows-view"
122
+ }, shownRecords.map((record, index) => {
123
+ const formulaRow = formulaRows[record._id] || {};
124
+ return /*#__PURE__*/_react.default.createElement(_recordItem.default, {
125
+ key: record._id,
126
+ index: index,
127
+ editor: editor,
128
+ record: record,
129
+ formulaRow: formulaRow,
130
+ columns: columns
131
+ });
132
+ }))));
133
+ };
134
+ var _default = exports.default = SeatableTable;
@@ -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
+ console.log(3, item);
38
+ const eventBus = _eventBus.default.getInstance();
39
+ eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
40
+ type: _constants2.ELEMENT_TYPE.SEATABLE_ROW,
41
+ data: {
42
+ table: item
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;