@seafile/sdoc-editor 1.0.80 → 1.0.81

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.
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.isTopLevelListItem = exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeAcrossBlocks = exports.isMultiLevelList = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isEndPoint = exports.isCurrentLineHasText = exports.isCurrentLineEmpty = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getTopLevelBlockNode = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNodeById = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEditorString = exports.getDeepInlineChildren = exports.getCurrentNode = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
7
+ exports.isTopLevelListItem = exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeInSameBlock = exports.isRangeAcrossBlocks = exports.isMultiLevelList = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isEndPoint = exports.isCurrentLineHasText = exports.isCurrentLineEmpty = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getTopLevelBlockNode = exports.getStartPoint = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getPointBefore = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNodeById = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEndPoint = exports.getEditorString = exports.getDeepInlineChildren = exports.getCurrentNode = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
8
8
  var _slate = require("@seafile/slate");
9
9
  var _slateReact = require("@seafile/slate-react");
10
10
  var _utils = require("../utils");
@@ -521,4 +521,36 @@ const isTopLevelListItem = editor => {
521
521
  }
522
522
  return false;
523
523
  };
524
- exports.isTopLevelListItem = isTopLevelListItem;
524
+ exports.isTopLevelListItem = isTopLevelListItem;
525
+ const isRangeInSameBlock = function (editor) {
526
+ let {
527
+ at,
528
+ ...options
529
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
530
+ if (!at) at = editor.selection;
531
+ if (!at) return;
532
+ const [start, end] = _slate.Range.edges(at);
533
+ const startBlock = getAboveNode(editor, {
534
+ at: start,
535
+ ...options
536
+ });
537
+ const endBlock = getAboveNode(editor, {
538
+ at: end,
539
+ ...options
540
+ });
541
+ if (!startBlock || !endBlock) return;
542
+ return _slate.Path.equals(startBlock[1], endBlock[1]);
543
+ };
544
+ exports.isRangeInSameBlock = isRangeInSameBlock;
545
+ const getStartPoint = (editor, at) => {
546
+ return _slate.Editor.start(editor, at);
547
+ };
548
+ exports.getStartPoint = getStartPoint;
549
+ const getEndPoint = (editor, at) => {
550
+ return _slate.Editor.end(editor, at);
551
+ };
552
+ exports.getEndPoint = getEndPoint;
553
+ const getPointBefore = (editor, at) => {
554
+ return _slate.Editor.before(editor, at);
555
+ };
556
+ exports.getPointBefore = getPointBefore;
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.updateTableRowHeight = exports.updateColumnWidth = exports.splitCell = exports.setTableSelectedRange = exports.setTableFragmentData = exports.setCellStyle = exports.removeTableElement = exports.removeTable = exports.normalizeTableELement = exports.moveRows = exports.moveColumns = exports.isTableWidthFitScreen = exports.isTableMenuDisabled = exports.isTableLocation = exports.isSelectedAllCell = exports.isPreventResetTableSelectedRange = exports.isLastTableCell = exports.isInTable = exports.isHideDragHandlerLine = exports.isCursorAtCellStart = exports.isCursorAtCellEnd = exports.isCombineCellsDisabled = exports.isAllInTable = exports.insertTableRow = exports.insertTableElement = exports.insertTableColumn = exports.insertTableByTemplate = exports.insertTable = exports.insertMultipleRowsAndColumns = exports.handleInsertTable = exports.handleCombinedCellsBeforeDeleteTableRow = exports.handleCombinedCellsBeforeDeleteTableColumn = exports.handleCombinedCellsAfterInsertTableRow = exports.handleCombinedCellsAfterInsertTableColumn = exports.getTableSelectedRangeAfterDrag = exports.getTableRowSelectedRange = exports.getTableDragType = exports.getTableColumnsWidth = exports.getTableColumnsAfterInsertColumn = exports.getTableColumns = exports.getTableColumnSelectedRange = exports.getSelectedInfo = exports.getRowHeight = exports.getRowDomHeight = exports.getResizeMaskCellInfo = exports.getInsertPosition = exports.getHighlightClass = exports.getFirstTableCell = exports.getCellInheritStyles = exports.getCellHighlightClassName = exports.getCellColumn = exports.generateTableRow = exports.generateTableCell = exports.generateInheritStyle = exports.generateEmptyTable = exports.generateDragMoveElement = exports.focusClosestCellWhenJustifyCellSize = exports.focusCell = exports.fitTableColumnToScreen = exports.elementHasImage = exports.deleteTableRangeData = exports.deleteHandler = exports.combineCells = exports.colorBlend = exports.adjustCombinedCellRange = void 0;
7
+ exports.updateTableRowHeight = exports.updateColumnWidth = exports.splitCell = exports.setTableSelectedRange = exports.setTableFragmentData = exports.setCellStyle = exports.removeTableElement = exports.removeTable = exports.normalizeTableELement = exports.moveRows = exports.moveColumns = exports.isTableWidthFitScreen = exports.isTableMenuDisabled = exports.isTableLocation = exports.isSelectedAllCell = exports.isPreventResetTableSelectedRange = exports.isLastTableCell = exports.isInTable = exports.isHideDragHandlerLine = exports.isCursorAtCellStart = exports.isCursorAtCellEnd = exports.isCombineCellsDisabled = exports.isAllInTable = exports.insertTableRow = exports.insertTableElement = exports.insertTableColumn = exports.insertTableByTemplate = exports.insertTable = exports.insertMultipleRowsAndColumns = exports.handleInsertTable = exports.handleCombinedCellsBeforeDeleteTableRow = exports.handleCombinedCellsBeforeDeleteTableColumn = exports.handleCombinedCellsAfterInsertTableRow = exports.handleCombinedCellsAfterInsertTableColumn = exports.getTableSelectedRangeAfterDrag = exports.getTableRowSelectedRange = exports.getTableDragType = exports.getTableColumnsWidth = exports.getTableColumnsAfterInsertColumn = exports.getTableColumns = exports.getTableColumnSelectedRange = exports.getSelectedInfo = exports.getRowHeight = exports.getRowDomHeight = exports.getResizeMaskCellInfo = exports.getInsertPosition = exports.getHighlightClass = exports.getFirstTableCell = exports.getCellInheritStyles = exports.getCellHighlightClassName = exports.getCellColumn = exports.generateTableRow = exports.generateTableCell = exports.generateInheritStyle = exports.generateEmptyTable = exports.generateDragMoveElement = exports.focusClosestCellWhenJustifyCellSize = exports.focusCell = exports.fitTableColumnToScreen = exports.elementHasImage = exports.deleteTableSelectCells = exports.deleteTableRangeData = exports.deleteHandler = exports.combineCells = exports.colorBlend = exports.adjustCombinedCellRange = void 0;
8
8
  var _slugid = _interopRequireDefault(require("slugid"));
9
9
  var _slate = require("@seafile/slate");
10
10
  var _slateReact = require("@seafile/slate-react");
@@ -2018,4 +2018,62 @@ const fitTableColumnToScreen = editor => {
2018
2018
  at: tablePath
2019
2019
  });
2020
2020
  };
2021
- exports.fitTableColumnToScreen = fitTableColumnToScreen;
2021
+ exports.fitTableColumnToScreen = fitTableColumnToScreen;
2022
+ const deleteTableSelectCells = (editor, deleteRange) => {
2023
+ // eslint-disable-next-line no-unused-vars
2024
+ const {
2025
+ start,
2026
+ end,
2027
+ rowsLength,
2028
+ columnLength
2029
+ } = deleteRange;
2030
+ // table path [tableIdx, rowIdx, colIdx, ...];
2031
+ if (start.length <= 3) return;
2032
+ const tableIndex = start[0];
2033
+ const minRowIndex = start[1];
2034
+ let deletePaths = [];
2035
+ if (start[1] === end[1]) {
2036
+ const minColIndex = start[2];
2037
+ const maxColIndex = end[2];
2038
+ for (let colIndex = minColIndex; colIndex <= maxColIndex; colIndex++) {
2039
+ deletePaths.push([tableIndex, minRowIndex, colIndex]);
2040
+ }
2041
+ }
2042
+ if (start[1] !== end[1]) {
2043
+ const isAfter = end[1] - start[1] === 1;
2044
+ // push first row
2045
+ const minColIndex = start[2];
2046
+ for (let colIndex = minColIndex; colIndex <= columnLength - 1; colIndex++) {
2047
+ deletePaths.push([tableIndex, minRowIndex, colIndex]);
2048
+ }
2049
+
2050
+ // push center row
2051
+ if (!isAfter) {
2052
+ for (let i = start[1] + 1; i <= end[1] - 1; i++) {
2053
+ for (let j = 0; j <= columnLength - 1; j++) {
2054
+ deletePaths.push([tableIndex, i, j]);
2055
+ }
2056
+ }
2057
+ }
2058
+
2059
+ // push last row
2060
+ const maxColIndex = end[2];
2061
+ const maxRowIndex = end[1];
2062
+ for (let colIndex = 0; colIndex <= maxColIndex; colIndex++) {
2063
+ deletePaths.push([tableIndex, maxRowIndex, colIndex]);
2064
+ }
2065
+ }
2066
+ for (let i = 0; i < deletePaths.length; i++) {
2067
+ const path = deletePaths[i];
2068
+ const node = (0, _core.getNode)(editor, path);
2069
+ const firstNode = node.children[0];
2070
+ (0, _core.replaceNodeChildren)(editor, {
2071
+ at: path,
2072
+ nodes: {
2073
+ ...firstNode,
2074
+ text: ''
2075
+ }
2076
+ });
2077
+ }
2078
+ };
2079
+ exports.deleteTableSelectCells = deleteTableSelectCells;
@@ -27,7 +27,8 @@ const withTable = editor => {
27
27
  getFragment,
28
28
  setFragmentData,
29
29
  insertFragment,
30
- cut
30
+ cut,
31
+ deleteFragment
31
32
  } = editor;
32
33
  const newEditor = editor;
33
34
  newEditor.tableSelectedRange = _constants2.EMPTY_SELECTED_RANGE;
@@ -158,6 +159,128 @@ const withTable = editor => {
158
159
  }
159
160
  deleteBackward(unit);
160
161
  };
162
+ newEditor.deleteFragment = unit => {
163
+ const {
164
+ selection
165
+ } = editor;
166
+ if (!selection) {
167
+ return deleteFragment(unit);
168
+ }
169
+ const match = n => n.type === _constants.TABLE;
170
+ if (_slate.Range.isRange(selection) && (0, _core.isRangeAcrossBlocks)(editor, {
171
+ at: selection,
172
+ match
173
+ })) {
174
+ const anchorEntry = (0, _core.getAboveBlockNode)(editor, {
175
+ at: selection.anchor,
176
+ match
177
+ });
178
+ if (anchorEntry) {
179
+ const columnLength = anchorEntry[0].columns.length;
180
+ const {
181
+ anchor
182
+ } = selection;
183
+ const isForward = _slate.Range.isForward(selection);
184
+ if (isForward) {
185
+ if (!(0, _core.isStartPoint)(editor, anchor, anchorEntry[1])) {
186
+ // delete table cells
187
+ const endPoint = (0, _core.getEndPoint)(editor, anchorEntry[1]);
188
+ (0, _helpers.deleteTableSelectCells)(editor, {
189
+ start: anchor.path,
190
+ end: endPoint.path,
191
+ columnLength
192
+ });
193
+
194
+ // delete other module
195
+ const newAnchor = (0, _core.getStartPoint)(editor, _slate.Path.next(anchorEntry[1]));
196
+ _slate.Transforms.delete(editor, {
197
+ at: {
198
+ ...selection,
199
+ anchor: newAnchor
200
+ }
201
+ });
202
+ (0, _core.focusEditor)(editor, newAnchor.path);
203
+ return;
204
+ }
205
+ } else {
206
+ if (!(0, _core.isEndPoint)(editor, anchor, anchorEntry[1])) {
207
+ // delete table cells
208
+ const startPoint = (0, _core.getStartPoint)(editor, anchorEntry[1]);
209
+ (0, _helpers.deleteTableSelectCells)(editor, {
210
+ start: startPoint.path,
211
+ end: anchor.path,
212
+ columnLength
213
+ });
214
+
215
+ // delete other module
216
+ const newAnchor = (0, _core.getEndPoint)(editor, _slate.Path.previous(anchorEntry[1]));
217
+ _slate.Transforms.delete(editor, {
218
+ at: {
219
+ ...selection,
220
+ anchor: newAnchor
221
+ }
222
+ });
223
+ (0, _core.focusEditor)(editor, newAnchor.path);
224
+ return;
225
+ }
226
+ }
227
+ } else {
228
+ const focusEntry = (0, _core.getAboveBlockNode)(editor, {
229
+ at: selection.focus,
230
+ match
231
+ });
232
+ const columnLength = focusEntry[0].columns.length;
233
+ if (focusEntry) {
234
+ const {
235
+ focus
236
+ } = selection;
237
+ const isForward = _slate.Range.isForward(selection);
238
+ if (isForward) {
239
+ if (!(0, _core.isEndPoint)(editor, focus, focusEntry[1])) {
240
+ const startPoint = (0, _core.getStartPoint)(editor, focusEntry[1]);
241
+ (0, _helpers.deleteTableSelectCells)(editor, {
242
+ start: startPoint.path,
243
+ end: focus.path,
244
+ columnLength
245
+ });
246
+
247
+ // delete other module
248
+ const newFocus = (0, _core.getEndPoint)(editor, _slate.Path.previous(focusEntry[1]));
249
+ _slate.Transforms.delete(editor, {
250
+ at: {
251
+ ...selection,
252
+ focus: newFocus
253
+ }
254
+ });
255
+ (0, _core.focusEditor)(editor, focus.path);
256
+ return;
257
+ }
258
+ } else {
259
+ if (!(0, _core.isEndPoint)(editor, focus, focusEntry[1])) {
260
+ const endPoint = (0, _core.getEndPoint)(editor, focusEntry[1]);
261
+ (0, _helpers.deleteTableSelectCells)(editor, {
262
+ start: focus.path,
263
+ end: endPoint.path,
264
+ columnLength
265
+ });
266
+
267
+ // delete other module
268
+ const newFocus = (0, _core.getStartPoint)(editor, _slate.Path.next(focusEntry[1]));
269
+ _slate.Transforms.delete(editor, {
270
+ at: {
271
+ ...selection,
272
+ focus: newFocus
273
+ }
274
+ });
275
+ (0, _core.focusEditor)(editor, focus.path);
276
+ return;
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ deleteFragment(unit);
283
+ };
161
284
  newEditor.deleteForward = unit => {
162
285
  const nextNode = _slate.Editor.next(newEditor);
163
286
  const newNodeParent = (0, _core.getParentNode)(newEditor.children, nextNode[0].id);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "1.0.80",
3
+ "version": "1.0.81",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",