@pie-element/ebsr 6.6.3-next.411 → 6.6.3-next.412
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.
- package/configure/node_modules/immutable/LICENSE +21 -0
- package/configure/node_modules/immutable/README.md +657 -0
- package/configure/node_modules/immutable/dist/immutable-nonambient.d.ts +5607 -0
- package/configure/node_modules/immutable/dist/immutable.d.ts +5611 -0
- package/configure/node_modules/immutable/dist/immutable.es.js +5893 -0
- package/configure/node_modules/immutable/dist/immutable.js +5948 -0
- package/configure/node_modules/immutable/dist/immutable.js.flow +2340 -0
- package/configure/node_modules/immutable/dist/immutable.min.js +55 -0
- package/configure/node_modules/immutable/package.json +41 -0
- package/configure/node_modules/slate-edit-list/CHANGELOG.md +124 -0
- package/configure/node_modules/slate-edit-list/LICENSE +201 -0
- package/configure/node_modules/slate-edit-list/README.md +159 -0
- package/configure/node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js +73 -0
- package/configure/node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js.flow +88 -0
- package/configure/node_modules/slate-edit-list/dist/changes/increaseItemDepth.js +70 -0
- package/configure/node_modules/slate-edit-list/dist/changes/increaseItemDepth.js.flow +77 -0
- package/configure/node_modules/slate-edit-list/dist/changes/index.js +34 -0
- package/configure/node_modules/slate-edit-list/dist/changes/index.js.flow +13 -0
- package/configure/node_modules/slate-edit-list/dist/changes/splitListItem.js +27 -0
- package/configure/node_modules/slate-edit-list/dist/changes/splitListItem.js.flow +26 -0
- package/configure/node_modules/slate-edit-list/dist/changes/unwrapList.js +52 -0
- package/configure/node_modules/slate-edit-list/dist/changes/unwrapList.js.flow +46 -0
- package/configure/node_modules/slate-edit-list/dist/changes/wrapInList.js +67 -0
- package/configure/node_modules/slate-edit-list/dist/changes/wrapInList.js.flow +67 -0
- package/configure/node_modules/slate-edit-list/dist/core.js +80 -0
- package/configure/node_modules/slate-edit-list/dist/core.js.flow +76 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/index.js +24 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/index.js.flow +5 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/onBackspace.js +45 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/onBackspace.js.flow +44 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/onEnter.js +54 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/onEnter.js.flow +54 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/onTab.js +39 -0
- package/configure/node_modules/slate-edit-list/dist/handlers/onTab.js.flow +34 -0
- package/configure/node_modules/slate-edit-list/dist/index.js +58 -0
- package/configure/node_modules/slate-edit-list/dist/index.js.flow +45 -0
- package/configure/node_modules/slate-edit-list/dist/options.js +34 -0
- package/configure/node_modules/slate-edit-list/dist/options.js.flow +26 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getCurrentItem.js +24 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getCurrentItem.js.flow +20 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getCurrentList.js +31 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getCurrentList.js.flow +21 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getItemDepth.js +34 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getItemDepth.js.flow +24 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getItemsAtRange.js +60 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getItemsAtRange.js.flow +51 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getListForItem.js +25 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getListForItem.js.flow +16 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getPreviousItem.js +39 -0
- package/configure/node_modules/slate-edit-list/dist/utils/getPreviousItem.js.flow +29 -0
- package/configure/node_modules/slate-edit-list/dist/utils/index.js +49 -0
- package/configure/node_modules/slate-edit-list/dist/utils/index.js.flow +19 -0
- package/configure/node_modules/slate-edit-list/dist/utils/isList.js +15 -0
- package/configure/node_modules/slate-edit-list/dist/utils/isList.js.flow +13 -0
- package/configure/node_modules/slate-edit-list/dist/utils/isSelectionInList.js +22 -0
- package/configure/node_modules/slate-edit-list/dist/utils/isSelectionInList.js.flow +14 -0
- package/configure/node_modules/slate-edit-list/dist/validation/index.js +19 -0
- package/configure/node_modules/slate-edit-list/dist/validation/index.js.flow +4 -0
- package/configure/node_modules/slate-edit-list/dist/validation/schema.js +83 -0
- package/configure/node_modules/slate-edit-list/dist/validation/schema.js.flow +81 -0
- package/configure/node_modules/slate-edit-list/dist/validation/validateNode.js +61 -0
- package/configure/node_modules/slate-edit-list/dist/validation/validateNode.js.flow +61 -0
- package/configure/node_modules/slate-edit-list/package.json +67 -0
- package/configure/node_modules/slate-edit-table/CHANGELOG.md +192 -0
- package/configure/node_modules/slate-edit-table/LICENSE +201 -0
- package/configure/node_modules/slate-edit-table/README.md +269 -0
- package/configure/node_modules/slate-edit-table/dist/changes/clearCell.js +29 -0
- package/configure/node_modules/slate-edit-table/dist/changes/clearCell.js.flow +26 -0
- package/configure/node_modules/slate-edit-table/dist/changes/index.js +69 -0
- package/configure/node_modules/slate-edit-table/dist/changes/index.js.flow +27 -0
- package/configure/node_modules/slate-edit-table/dist/changes/insertColumn.js +43 -0
- package/configure/node_modules/slate-edit-table/dist/changes/insertColumn.js.flow +46 -0
- package/configure/node_modules/slate-edit-table/dist/changes/insertRow.js +36 -0
- package/configure/node_modules/slate-edit-table/dist/changes/insertRow.js.flow +35 -0
- package/configure/node_modules/slate-edit-table/dist/changes/insertTable.js +29 -0
- package/configure/node_modules/slate-edit-table/dist/changes/insertTable.js.flow +27 -0
- package/configure/node_modules/slate-edit-table/dist/changes/moveSelection.js +32 -0
- package/configure/node_modules/slate-edit-table/dist/changes/moveSelection.js.flow +31 -0
- package/configure/node_modules/slate-edit-table/dist/changes/moveSelectionBy.js +84 -0
- package/configure/node_modules/slate-edit-table/dist/changes/moveSelectionBy.js.flow +80 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeColumn.js +36 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeColumn.js.flow +28 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeColumnByKey.js +52 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeColumnByKey.js.flow +40 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeRow.js +36 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeRow.js.flow +27 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeRowByKey.js +41 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeRowByKey.js.flow +30 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeTable.js +26 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeTable.js.flow +17 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeTableByKey.js +56 -0
- package/configure/node_modules/slate-edit-table/dist/changes/removeTableByKey.js.flow +54 -0
- package/configure/node_modules/slate-edit-table/dist/core.js +88 -0
- package/configure/node_modules/slate-edit-table/dist/core.js.flow +94 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/index.js +39 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/index.js.flow +8 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onBackspace.js +82 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onBackspace.js.flow +87 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onEnter.js +34 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onEnter.js.flow +37 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onKeyDown.js +71 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onKeyDown.js.flow +56 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onModEnter.js +35 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onModEnter.js.flow +38 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onTab.js +56 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onTab.js.flow +51 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onUpDown.js +38 -0
- package/configure/node_modules/slate-edit-table/dist/handlers/onUpDown.js.flow +41 -0
- package/configure/node_modules/slate-edit-table/dist/index.js +36 -0
- package/configure/node_modules/slate-edit-table/dist/index.js.flow +27 -0
- package/configure/node_modules/slate-edit-table/dist/options.js +61 -0
- package/configure/node_modules/slate-edit-table/dist/options.js.flow +42 -0
- package/configure/node_modules/slate-edit-table/dist/utils/TablePosition.js +306 -0
- package/configure/node_modules/slate-edit-table/dist/utils/TablePosition.js.flow +211 -0
- package/configure/node_modules/slate-edit-table/dist/utils/createCell.js +30 -0
- package/configure/node_modules/slate-edit-table/dist/utils/createCell.js.flow +26 -0
- package/configure/node_modules/slate-edit-table/dist/utils/createRow.js +30 -0
- package/configure/node_modules/slate-edit-table/dist/utils/createRow.js.flow +28 -0
- package/configure/node_modules/slate-edit-table/dist/utils/createTable.js +30 -0
- package/configure/node_modules/slate-edit-table/dist/utils/createTable.js.flow +33 -0
- package/configure/node_modules/slate-edit-table/dist/utils/forEachCells.js +21 -0
- package/configure/node_modules/slate-edit-table/dist/utils/forEachCells.js.flow +22 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js +22 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js.flow +19 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtRow.js +20 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtRow.js.flow +19 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getPosition.js +24 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getPosition.js.flow +19 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getPositionByKey.js +26 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getPositionByKey.js.flow +21 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getRow.js +24 -0
- package/configure/node_modules/slate-edit-table/dist/utils/getRow.js.flow +19 -0
- package/configure/node_modules/slate-edit-table/dist/utils/index.js +64 -0
- package/configure/node_modules/slate-edit-table/dist/utils/index.js.flow +25 -0
- package/configure/node_modules/slate-edit-table/dist/utils/isSelectionInTable.js +34 -0
- package/configure/node_modules/slate-edit-table/dist/utils/isSelectionInTable.js.flow +27 -0
- package/configure/node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js +30 -0
- package/configure/node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js.flow +23 -0
- package/configure/node_modules/slate-edit-table/dist/validation/index.js +19 -0
- package/configure/node_modules/slate-edit-table/dist/validation/index.js.flow +4 -0
- package/configure/node_modules/slate-edit-table/dist/validation/schema.js +101 -0
- package/configure/node_modules/slate-edit-table/dist/validation/schema.js.flow +98 -0
- package/configure/node_modules/slate-edit-table/dist/validation/validateNode.js +56 -0
- package/configure/node_modules/slate-edit-table/dist/validation/validateNode.js.flow +49 -0
- package/configure/node_modules/slate-edit-table/package.json +69 -0
- package/package.json +2 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import { type Change } from 'slate';
|
|
3
|
+
|
|
4
|
+
import { TablePosition } from '../utils';
|
|
5
|
+
import clearCell from './clearCell';
|
|
6
|
+
import type Options from '../options';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Remove the row associated to a given key in a table.
|
|
10
|
+
* Clear thw row if last remaining row
|
|
11
|
+
*/
|
|
12
|
+
function removeRowByKey(opts: Options, change: Change, key: string): Change {
|
|
13
|
+
const { value } = change;
|
|
14
|
+
|
|
15
|
+
const pos = TablePosition.create(opts, value.document, key);
|
|
16
|
+
|
|
17
|
+
// Update table by removing the row
|
|
18
|
+
if (pos.getHeight() > 1) {
|
|
19
|
+
change.removeNodeByKey(key);
|
|
20
|
+
} else {
|
|
21
|
+
// If last remaining row, clear it instead
|
|
22
|
+
pos.row.nodes.forEach(cell => {
|
|
23
|
+
cell.nodes.forEach(node => clearCell(opts, change, cell));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return change;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default removeRowByKey;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
require('slate');
|
|
8
|
+
|
|
9
|
+
var _removeTableByKey = require('./removeTableByKey');
|
|
10
|
+
|
|
11
|
+
var _removeTableByKey2 = _interopRequireDefault(_removeTableByKey);
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Delete the whole table at position
|
|
17
|
+
*/
|
|
18
|
+
function removeTable(opts, change) {
|
|
19
|
+
var value = change.value;
|
|
20
|
+
var startKey = value.startKey;
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
return (0, _removeTableByKey2.default)(opts, change, startKey);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.default = removeTable;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import { type Change } from 'slate';
|
|
3
|
+
|
|
4
|
+
import type Options from '../options';
|
|
5
|
+
import removeTableByKey from './removeTableByKey';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Delete the whole table at position
|
|
9
|
+
*/
|
|
10
|
+
function removeTable(opts: Options, change: Change): Change {
|
|
11
|
+
const { value } = change;
|
|
12
|
+
const { startKey } = value;
|
|
13
|
+
|
|
14
|
+
return removeTableByKey(opts, change, startKey);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default removeTable;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _slate = require('slate');
|
|
8
|
+
|
|
9
|
+
var _utils = require('../utils');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Delete the whole table at the given node key
|
|
13
|
+
*/
|
|
14
|
+
function removeTableByKey(opts, change, key) {
|
|
15
|
+
var value = change.value;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var pos = _utils.TablePosition.create(opts, value.document, key);
|
|
19
|
+
var table = pos.table;
|
|
20
|
+
var document = change.value.document;
|
|
21
|
+
|
|
22
|
+
var nextFocusBlock = null;
|
|
23
|
+
var shouldCollapseToEnd = false;
|
|
24
|
+
|
|
25
|
+
var nextBlock = change.value.document.getNextBlock(table.key);
|
|
26
|
+
if (nextBlock) {
|
|
27
|
+
nextFocusBlock = nextBlock;
|
|
28
|
+
} else {
|
|
29
|
+
var prevBlock = change.value.document.getPreviousBlock(table.key);
|
|
30
|
+
if (prevBlock) {
|
|
31
|
+
nextFocusBlock = prevBlock;
|
|
32
|
+
shouldCollapseToEnd = true;
|
|
33
|
+
} else if (opts.exitBlockType) {
|
|
34
|
+
nextFocusBlock = _slate.Block.create({
|
|
35
|
+
type: opts.exitBlockType,
|
|
36
|
+
nodes: [_slate.Text.create('')]
|
|
37
|
+
});
|
|
38
|
+
var tableParent = document.getParent(table.key);
|
|
39
|
+
var insertionIndex = tableParent.nodes.indexOf(table) + 1;
|
|
40
|
+
change.insertNodeByKey(tableParent.key, insertionIndex, nextFocusBlock);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
change.removeNodeByKey(table.key);
|
|
45
|
+
if (!nextFocusBlock) {
|
|
46
|
+
return change;
|
|
47
|
+
}
|
|
48
|
+
if (shouldCollapseToEnd) {
|
|
49
|
+
change.collapseToEndOf(nextFocusBlock).focus();
|
|
50
|
+
} else {
|
|
51
|
+
change.collapseToStartOf(nextFocusBlock).focus();
|
|
52
|
+
}
|
|
53
|
+
return change;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.default = removeTableByKey;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import { Block, Text, type Change } from 'slate';
|
|
3
|
+
|
|
4
|
+
import { TablePosition } from '../utils';
|
|
5
|
+
import type Options from '../options';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Delete the whole table at the given node key
|
|
9
|
+
*/
|
|
10
|
+
function removeTableByKey(opts: Options, change: Change, key: string): Change {
|
|
11
|
+
const { value } = change;
|
|
12
|
+
|
|
13
|
+
const pos = TablePosition.create(opts, value.document, key);
|
|
14
|
+
const { table } = pos;
|
|
15
|
+
const { document } = change.value;
|
|
16
|
+
let nextFocusBlock = null;
|
|
17
|
+
let shouldCollapseToEnd = false;
|
|
18
|
+
|
|
19
|
+
const nextBlock = change.value.document.getNextBlock(table.key);
|
|
20
|
+
if (nextBlock) {
|
|
21
|
+
nextFocusBlock = nextBlock;
|
|
22
|
+
} else {
|
|
23
|
+
const prevBlock = change.value.document.getPreviousBlock(table.key);
|
|
24
|
+
if (prevBlock) {
|
|
25
|
+
nextFocusBlock = prevBlock;
|
|
26
|
+
shouldCollapseToEnd = true;
|
|
27
|
+
} else if (opts.exitBlockType) {
|
|
28
|
+
nextFocusBlock = Block.create({
|
|
29
|
+
type: opts.exitBlockType,
|
|
30
|
+
nodes: [Text.create('')]
|
|
31
|
+
});
|
|
32
|
+
const tableParent = document.getParent(table.key);
|
|
33
|
+
const insertionIndex = tableParent.nodes.indexOf(table) + 1;
|
|
34
|
+
change.insertNodeByKey(
|
|
35
|
+
tableParent.key,
|
|
36
|
+
insertionIndex,
|
|
37
|
+
nextFocusBlock
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
change.removeNodeByKey(table.key);
|
|
43
|
+
if (!nextFocusBlock) {
|
|
44
|
+
return change;
|
|
45
|
+
}
|
|
46
|
+
if (shouldCollapseToEnd) {
|
|
47
|
+
change.collapseToEndOf(nextFocusBlock).focus();
|
|
48
|
+
} else {
|
|
49
|
+
change.collapseToStartOf(nextFocusBlock).focus();
|
|
50
|
+
}
|
|
51
|
+
return change;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default removeTableByKey;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _changes = require('./changes');
|
|
8
|
+
|
|
9
|
+
var _utils = require('./utils');
|
|
10
|
+
|
|
11
|
+
var _validation = require('./validation');
|
|
12
|
+
|
|
13
|
+
var _options = require('./options');
|
|
14
|
+
|
|
15
|
+
var _options2 = _interopRequireDefault(_options);
|
|
16
|
+
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
|
|
19
|
+
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Returns the core of the plugin, limited to the validation and normalization
|
|
23
|
+
* part of `slate-edit-table`, and utils.
|
|
24
|
+
*
|
|
25
|
+
* Import this directly: `import EditTable from 'slate-edit-table/lib/core'`
|
|
26
|
+
* if you don't care about behavior/rendering and you
|
|
27
|
+
* are only manipulating `Slate.Values` without rendering them.
|
|
28
|
+
* That way you do not depend on `slate-react`.
|
|
29
|
+
*/
|
|
30
|
+
function core(optionsParam) {
|
|
31
|
+
var opts = new _options2.default(optionsParam);
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
schema: (0, _validation.schema)(opts),
|
|
35
|
+
validateNode: (0, _validation.validateNode)(opts),
|
|
36
|
+
|
|
37
|
+
utils: {
|
|
38
|
+
isSelectionInTable: _utils.isSelectionInTable.bind(null, opts),
|
|
39
|
+
isSelectionOutOfTable: _utils.isSelectionOutOfTable.bind(null, opts),
|
|
40
|
+
getPosition: _utils.getPosition.bind(null, opts),
|
|
41
|
+
getPositionByKey: _utils.getPositionByKey.bind(null, opts),
|
|
42
|
+
createCell: _utils.createCell.bind(null, opts),
|
|
43
|
+
createRow: _utils.createRow.bind(null, opts),
|
|
44
|
+
createTable: _utils.createTable.bind(null, opts),
|
|
45
|
+
forEachCells: _utils.forEachCells.bind(null, opts),
|
|
46
|
+
getCellsAtRow: _utils.getCellsAtRow.bind(null, opts),
|
|
47
|
+
getCellsAtColumn: _utils.getCellsAtColumn.bind(null, opts)
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
changes: {
|
|
51
|
+
insertTable: _changes.insertTable.bind(null, opts),
|
|
52
|
+
clearCell: _changes.clearCell.bind(null, opts),
|
|
53
|
+
removeRowByKey: _changes.removeRowByKey.bind(null, opts),
|
|
54
|
+
removeColumnByKey: _changes.removeColumnByKey.bind(null, opts),
|
|
55
|
+
removeTableByKey: _changes.removeTableByKey.bind(null, opts),
|
|
56
|
+
insertRow: bindAndScopeChange(opts, _changes.insertRow),
|
|
57
|
+
removeRow: bindAndScopeChange(opts, _changes.removeRow),
|
|
58
|
+
insertColumn: bindAndScopeChange(opts, _changes.insertColumn),
|
|
59
|
+
removeColumn: bindAndScopeChange(opts, _changes.removeColumn),
|
|
60
|
+
removeTable: bindAndScopeChange(opts, _changes.removeTable),
|
|
61
|
+
moveSelection: bindAndScopeChange(opts, _changes.moveSelection),
|
|
62
|
+
moveSelectionBy: bindAndScopeChange(opts, _changes.moveSelectionBy)
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Bind a change to given options, and scope it to act only inside a table
|
|
69
|
+
*/
|
|
70
|
+
function bindAndScopeChange(opts, fn) {
|
|
71
|
+
return function (change) {
|
|
72
|
+
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
73
|
+
args[_key - 1] = arguments[_key];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
var value = change.value;
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
if (!(0, _utils.isSelectionInTable)(opts, value)) {
|
|
80
|
+
return change;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// $FlowFixMe
|
|
84
|
+
return fn.apply(undefined, _toConsumableArray([opts, change].concat(args)));
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
exports.default = core;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import {
|
|
3
|
+
insertTable,
|
|
4
|
+
insertRow,
|
|
5
|
+
removeRow,
|
|
6
|
+
insertColumn,
|
|
7
|
+
removeColumn,
|
|
8
|
+
removeTable,
|
|
9
|
+
clearCell,
|
|
10
|
+
moveSelection,
|
|
11
|
+
moveSelectionBy,
|
|
12
|
+
removeRowByKey,
|
|
13
|
+
removeColumnByKey,
|
|
14
|
+
removeTableByKey
|
|
15
|
+
} from './changes';
|
|
16
|
+
import {
|
|
17
|
+
isSelectionInTable,
|
|
18
|
+
isSelectionOutOfTable,
|
|
19
|
+
getPosition,
|
|
20
|
+
getPositionByKey,
|
|
21
|
+
createCell,
|
|
22
|
+
createRow,
|
|
23
|
+
createTable,
|
|
24
|
+
forEachCells,
|
|
25
|
+
getCellsAtRow,
|
|
26
|
+
getCellsAtColumn
|
|
27
|
+
} from './utils';
|
|
28
|
+
import { schema, validateNode } from './validation';
|
|
29
|
+
|
|
30
|
+
import Options, { type OptionsFormat } from './options';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Returns the core of the plugin, limited to the validation and normalization
|
|
34
|
+
* part of `slate-edit-table`, and utils.
|
|
35
|
+
*
|
|
36
|
+
* Import this directly: `import EditTable from 'slate-edit-table/lib/core'`
|
|
37
|
+
* if you don't care about behavior/rendering and you
|
|
38
|
+
* are only manipulating `Slate.Values` without rendering them.
|
|
39
|
+
* That way you do not depend on `slate-react`.
|
|
40
|
+
*/
|
|
41
|
+
function core(optionsParam: Options | OptionsFormat): Object {
|
|
42
|
+
const opts = new Options(optionsParam);
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
schema: schema(opts),
|
|
46
|
+
validateNode: validateNode(opts),
|
|
47
|
+
|
|
48
|
+
utils: {
|
|
49
|
+
isSelectionInTable: isSelectionInTable.bind(null, opts),
|
|
50
|
+
isSelectionOutOfTable: isSelectionOutOfTable.bind(null, opts),
|
|
51
|
+
getPosition: getPosition.bind(null, opts),
|
|
52
|
+
getPositionByKey: getPositionByKey.bind(null, opts),
|
|
53
|
+
createCell: createCell.bind(null, opts),
|
|
54
|
+
createRow: createRow.bind(null, opts),
|
|
55
|
+
createTable: createTable.bind(null, opts),
|
|
56
|
+
forEachCells: forEachCells.bind(null, opts),
|
|
57
|
+
getCellsAtRow: getCellsAtRow.bind(null, opts),
|
|
58
|
+
getCellsAtColumn: getCellsAtColumn.bind(null, opts)
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
changes: {
|
|
62
|
+
insertTable: insertTable.bind(null, opts),
|
|
63
|
+
clearCell: clearCell.bind(null, opts),
|
|
64
|
+
removeRowByKey: removeRowByKey.bind(null, opts),
|
|
65
|
+
removeColumnByKey: removeColumnByKey.bind(null, opts),
|
|
66
|
+
removeTableByKey: removeTableByKey.bind(null, opts),
|
|
67
|
+
insertRow: bindAndScopeChange(opts, insertRow),
|
|
68
|
+
removeRow: bindAndScopeChange(opts, removeRow),
|
|
69
|
+
insertColumn: bindAndScopeChange(opts, insertColumn),
|
|
70
|
+
removeColumn: bindAndScopeChange(opts, removeColumn),
|
|
71
|
+
removeTable: bindAndScopeChange(opts, removeTable),
|
|
72
|
+
moveSelection: bindAndScopeChange(opts, moveSelection),
|
|
73
|
+
moveSelectionBy: bindAndScopeChange(opts, moveSelectionBy)
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Bind a change to given options, and scope it to act only inside a table
|
|
80
|
+
*/
|
|
81
|
+
function bindAndScopeChange(opts: Options, fn: *): * {
|
|
82
|
+
return (change, ...args) => {
|
|
83
|
+
const { value } = change;
|
|
84
|
+
|
|
85
|
+
if (!isSelectionInTable(opts, value)) {
|
|
86
|
+
return change;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// $FlowFixMe
|
|
90
|
+
return fn(...[opts, change].concat(args));
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export default core;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.onKeyDown = exports.onUpDown = exports.onBackspace = exports.onTab = exports.onModEnter = exports.onEnter = undefined;
|
|
7
|
+
|
|
8
|
+
var _onEnter = require('./onEnter');
|
|
9
|
+
|
|
10
|
+
var _onEnter2 = _interopRequireDefault(_onEnter);
|
|
11
|
+
|
|
12
|
+
var _onModEnter = require('./onModEnter');
|
|
13
|
+
|
|
14
|
+
var _onModEnter2 = _interopRequireDefault(_onModEnter);
|
|
15
|
+
|
|
16
|
+
var _onTab = require('./onTab');
|
|
17
|
+
|
|
18
|
+
var _onTab2 = _interopRequireDefault(_onTab);
|
|
19
|
+
|
|
20
|
+
var _onBackspace = require('./onBackspace');
|
|
21
|
+
|
|
22
|
+
var _onBackspace2 = _interopRequireDefault(_onBackspace);
|
|
23
|
+
|
|
24
|
+
var _onUpDown = require('./onUpDown');
|
|
25
|
+
|
|
26
|
+
var _onUpDown2 = _interopRequireDefault(_onUpDown);
|
|
27
|
+
|
|
28
|
+
var _onKeyDown = require('./onKeyDown');
|
|
29
|
+
|
|
30
|
+
var _onKeyDown2 = _interopRequireDefault(_onKeyDown);
|
|
31
|
+
|
|
32
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
+
|
|
34
|
+
exports.onEnter = _onEnter2.default;
|
|
35
|
+
exports.onModEnter = _onModEnter2.default;
|
|
36
|
+
exports.onTab = _onTab2.default;
|
|
37
|
+
exports.onBackspace = _onBackspace2.default;
|
|
38
|
+
exports.onUpDown = _onUpDown2.default;
|
|
39
|
+
exports.onKeyDown = _onKeyDown2.default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import onEnter from './onEnter';
|
|
2
|
+
import onModEnter from './onModEnter';
|
|
3
|
+
import onTab from './onTab';
|
|
4
|
+
import onBackspace from './onBackspace';
|
|
5
|
+
import onUpDown from './onUpDown';
|
|
6
|
+
import onKeyDown from './onKeyDown';
|
|
7
|
+
|
|
8
|
+
export { onEnter, onModEnter, onTab, onBackspace, onUpDown, onKeyDown };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
require('slate');
|
|
8
|
+
|
|
9
|
+
var _changes = require('../changes');
|
|
10
|
+
|
|
11
|
+
function onBackspace(event, change, editor, opts) {
|
|
12
|
+
var value = change.value;
|
|
13
|
+
var startBlock = value.startBlock,
|
|
14
|
+
startOffset = value.startOffset,
|
|
15
|
+
isCollapsed = value.isCollapsed,
|
|
16
|
+
endBlock = value.endBlock,
|
|
17
|
+
document = value.document;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var startCell = document.getClosest(startBlock.key, opts.isCell);
|
|
21
|
+
var endCell = document.getClosest(endBlock.key, opts.isCell);
|
|
22
|
+
|
|
23
|
+
var startBlockIndex = startCell.nodes.findIndex(function (block) {
|
|
24
|
+
return block.key == startBlock.key;
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// If a cursor is collapsed at the start of the first block, do nothing
|
|
28
|
+
if (startOffset === 0 && isCollapsed && startBlockIndex === 0) {
|
|
29
|
+
if (startBlock.isVoid) {
|
|
30
|
+
// Delete the block normally if it is a void block
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
event.preventDefault();
|
|
35
|
+
return change;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// If "normal" deletion, we continue
|
|
39
|
+
if (startCell === endCell) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// If cursor is between multiple blocks,
|
|
44
|
+
// we clear the content of the cells.
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
|
|
47
|
+
var blocks = value.blocks;
|
|
48
|
+
|
|
49
|
+
// Get all cells that contains the selection
|
|
50
|
+
|
|
51
|
+
var cells = blocks.map(function (node) {
|
|
52
|
+
return node.type === opts.typeCell ? node : document.getClosest(node.key, function (a) {
|
|
53
|
+
return a.type === opts.typeCell;
|
|
54
|
+
});
|
|
55
|
+
}).toSet();
|
|
56
|
+
|
|
57
|
+
// If the cursor is at the very end of the first cell, ignore it.
|
|
58
|
+
// If the cursor is at the very start of the last cell, ignore it.
|
|
59
|
+
// This behavior is to compensate hanging selection behaviors:
|
|
60
|
+
// https://github.com/ianstormtaylor/slate/pull/1605
|
|
61
|
+
var ignoreFirstCell = value.selection.collapseToStart().isAtEndOf(cells.first());
|
|
62
|
+
var ignoreLastCell = value.selection.collapseToEnd().isAtStartOf(cells.last());
|
|
63
|
+
|
|
64
|
+
var cellsToClear = cells;
|
|
65
|
+
if (ignoreFirstCell) {
|
|
66
|
+
cellsToClear = cellsToClear.rest();
|
|
67
|
+
}
|
|
68
|
+
if (ignoreLastCell) {
|
|
69
|
+
cellsToClear = cellsToClear.butLast();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Clear all the selection
|
|
73
|
+
cellsToClear.forEach(function (cell) {
|
|
74
|
+
return (0, _changes.clearCell)(opts, change, cell);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Update the selection properly, and avoid reset of selection
|
|
78
|
+
var updatedStartCell = change.value.document.getDescendant(cellsToClear.first().key);
|
|
79
|
+
return change.collapseToStartOf(updatedStartCell);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
exports.default = onBackspace;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import { type Change } from 'slate';
|
|
3
|
+
|
|
4
|
+
import type Options from '../options';
|
|
5
|
+
import { clearCell } from '../changes';
|
|
6
|
+
|
|
7
|
+
function onBackspace(
|
|
8
|
+
event: *,
|
|
9
|
+
change: Change,
|
|
10
|
+
editor: *,
|
|
11
|
+
opts: Options
|
|
12
|
+
): void | Change {
|
|
13
|
+
const { value } = change;
|
|
14
|
+
const { startBlock, startOffset, isCollapsed, endBlock, document } = value;
|
|
15
|
+
|
|
16
|
+
const startCell = document.getClosest(startBlock.key, opts.isCell);
|
|
17
|
+
const endCell = document.getClosest(endBlock.key, opts.isCell);
|
|
18
|
+
|
|
19
|
+
const startBlockIndex = startCell.nodes.findIndex(
|
|
20
|
+
block => block.key == startBlock.key
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
// If a cursor is collapsed at the start of the first block, do nothing
|
|
24
|
+
if (startOffset === 0 && isCollapsed && startBlockIndex === 0) {
|
|
25
|
+
if (startBlock.isVoid) {
|
|
26
|
+
// Delete the block normally if it is a void block
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
return change;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// If "normal" deletion, we continue
|
|
35
|
+
if (startCell === endCell) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// If cursor is between multiple blocks,
|
|
40
|
+
// we clear the content of the cells.
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
|
|
43
|
+
const { blocks } = value;
|
|
44
|
+
|
|
45
|
+
// Get all cells that contains the selection
|
|
46
|
+
const cells = blocks
|
|
47
|
+
.map(
|
|
48
|
+
node =>
|
|
49
|
+
node.type === opts.typeCell
|
|
50
|
+
? node
|
|
51
|
+
: document.getClosest(
|
|
52
|
+
node.key,
|
|
53
|
+
a => a.type === opts.typeCell
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
.toSet();
|
|
57
|
+
|
|
58
|
+
// If the cursor is at the very end of the first cell, ignore it.
|
|
59
|
+
// If the cursor is at the very start of the last cell, ignore it.
|
|
60
|
+
// This behavior is to compensate hanging selection behaviors:
|
|
61
|
+
// https://github.com/ianstormtaylor/slate/pull/1605
|
|
62
|
+
const ignoreFirstCell = value.selection
|
|
63
|
+
.collapseToStart()
|
|
64
|
+
.isAtEndOf(cells.first());
|
|
65
|
+
const ignoreLastCell = value.selection
|
|
66
|
+
.collapseToEnd()
|
|
67
|
+
.isAtStartOf(cells.last());
|
|
68
|
+
|
|
69
|
+
let cellsToClear = cells;
|
|
70
|
+
if (ignoreFirstCell) {
|
|
71
|
+
cellsToClear = cellsToClear.rest();
|
|
72
|
+
}
|
|
73
|
+
if (ignoreLastCell) {
|
|
74
|
+
cellsToClear = cellsToClear.butLast();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Clear all the selection
|
|
78
|
+
cellsToClear.forEach(cell => clearCell(opts, change, cell));
|
|
79
|
+
|
|
80
|
+
// Update the selection properly, and avoid reset of selection
|
|
81
|
+
const updatedStartCell = change.value.document.getDescendant(
|
|
82
|
+
cellsToClear.first().key
|
|
83
|
+
);
|
|
84
|
+
return change.collapseToStartOf(updatedStartCell);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export default onBackspace;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
require('slate');
|
|
8
|
+
|
|
9
|
+
var _utils = require('../utils');
|
|
10
|
+
|
|
11
|
+
var _changes = require('../changes');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Insert a new row when pressing "Enter"
|
|
15
|
+
*/
|
|
16
|
+
function onEnter(event, change, editor, opts) {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
var _change$value = change.value,
|
|
19
|
+
selection = _change$value.selection,
|
|
20
|
+
document = _change$value.document;
|
|
21
|
+
|
|
22
|
+
var pos = _utils.TablePosition.create(opts, document, selection.startKey);
|
|
23
|
+
|
|
24
|
+
if (!selection.hasFocusAtStartOf(pos.cell) && !selection.hasFocusAtEndOf(pos.cell)) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (event.shiftKey) {
|
|
29
|
+
return change.splitBlock().setBlocks({ type: opts.typeContent, data: {} });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return (0, _changes.insertRow)(opts, change);
|
|
33
|
+
}
|
|
34
|
+
exports.default = onEnter;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
import { type Change } from 'slate';
|
|
3
|
+
|
|
4
|
+
import type Options from '../options';
|
|
5
|
+
import { TablePosition } from '../utils';
|
|
6
|
+
import { insertRow } from '../changes';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Insert a new row when pressing "Enter"
|
|
10
|
+
*/
|
|
11
|
+
function onEnter(
|
|
12
|
+
event: *,
|
|
13
|
+
change: Change,
|
|
14
|
+
editor: *,
|
|
15
|
+
opts: Options
|
|
16
|
+
): void | Change {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
const { selection, document } = change.value;
|
|
19
|
+
const pos = TablePosition.create(opts, document, selection.startKey);
|
|
20
|
+
|
|
21
|
+
if (
|
|
22
|
+
!selection.hasFocusAtStartOf(pos.cell) &&
|
|
23
|
+
!selection.hasFocusAtEndOf(pos.cell)
|
|
24
|
+
) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (event.shiftKey) {
|
|
29
|
+
return change
|
|
30
|
+
.splitBlock()
|
|
31
|
+
.setBlocks({ type: opts.typeContent, data: {} });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return insertRow(opts, change);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default onEnter;
|