@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.
Files changed (146) hide show
  1. package/configure/node_modules/immutable/LICENSE +21 -0
  2. package/configure/node_modules/immutable/README.md +657 -0
  3. package/configure/node_modules/immutable/dist/immutable-nonambient.d.ts +5607 -0
  4. package/configure/node_modules/immutable/dist/immutable.d.ts +5611 -0
  5. package/configure/node_modules/immutable/dist/immutable.es.js +5893 -0
  6. package/configure/node_modules/immutable/dist/immutable.js +5948 -0
  7. package/configure/node_modules/immutable/dist/immutable.js.flow +2340 -0
  8. package/configure/node_modules/immutable/dist/immutable.min.js +55 -0
  9. package/configure/node_modules/immutable/package.json +41 -0
  10. package/configure/node_modules/slate-edit-list/CHANGELOG.md +124 -0
  11. package/configure/node_modules/slate-edit-list/LICENSE +201 -0
  12. package/configure/node_modules/slate-edit-list/README.md +159 -0
  13. package/configure/node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js +73 -0
  14. package/configure/node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js.flow +88 -0
  15. package/configure/node_modules/slate-edit-list/dist/changes/increaseItemDepth.js +70 -0
  16. package/configure/node_modules/slate-edit-list/dist/changes/increaseItemDepth.js.flow +77 -0
  17. package/configure/node_modules/slate-edit-list/dist/changes/index.js +34 -0
  18. package/configure/node_modules/slate-edit-list/dist/changes/index.js.flow +13 -0
  19. package/configure/node_modules/slate-edit-list/dist/changes/splitListItem.js +27 -0
  20. package/configure/node_modules/slate-edit-list/dist/changes/splitListItem.js.flow +26 -0
  21. package/configure/node_modules/slate-edit-list/dist/changes/unwrapList.js +52 -0
  22. package/configure/node_modules/slate-edit-list/dist/changes/unwrapList.js.flow +46 -0
  23. package/configure/node_modules/slate-edit-list/dist/changes/wrapInList.js +67 -0
  24. package/configure/node_modules/slate-edit-list/dist/changes/wrapInList.js.flow +67 -0
  25. package/configure/node_modules/slate-edit-list/dist/core.js +80 -0
  26. package/configure/node_modules/slate-edit-list/dist/core.js.flow +76 -0
  27. package/configure/node_modules/slate-edit-list/dist/handlers/index.js +24 -0
  28. package/configure/node_modules/slate-edit-list/dist/handlers/index.js.flow +5 -0
  29. package/configure/node_modules/slate-edit-list/dist/handlers/onBackspace.js +45 -0
  30. package/configure/node_modules/slate-edit-list/dist/handlers/onBackspace.js.flow +44 -0
  31. package/configure/node_modules/slate-edit-list/dist/handlers/onEnter.js +54 -0
  32. package/configure/node_modules/slate-edit-list/dist/handlers/onEnter.js.flow +54 -0
  33. package/configure/node_modules/slate-edit-list/dist/handlers/onTab.js +39 -0
  34. package/configure/node_modules/slate-edit-list/dist/handlers/onTab.js.flow +34 -0
  35. package/configure/node_modules/slate-edit-list/dist/index.js +58 -0
  36. package/configure/node_modules/slate-edit-list/dist/index.js.flow +45 -0
  37. package/configure/node_modules/slate-edit-list/dist/options.js +34 -0
  38. package/configure/node_modules/slate-edit-list/dist/options.js.flow +26 -0
  39. package/configure/node_modules/slate-edit-list/dist/utils/getCurrentItem.js +24 -0
  40. package/configure/node_modules/slate-edit-list/dist/utils/getCurrentItem.js.flow +20 -0
  41. package/configure/node_modules/slate-edit-list/dist/utils/getCurrentList.js +31 -0
  42. package/configure/node_modules/slate-edit-list/dist/utils/getCurrentList.js.flow +21 -0
  43. package/configure/node_modules/slate-edit-list/dist/utils/getItemDepth.js +34 -0
  44. package/configure/node_modules/slate-edit-list/dist/utils/getItemDepth.js.flow +24 -0
  45. package/configure/node_modules/slate-edit-list/dist/utils/getItemsAtRange.js +60 -0
  46. package/configure/node_modules/slate-edit-list/dist/utils/getItemsAtRange.js.flow +51 -0
  47. package/configure/node_modules/slate-edit-list/dist/utils/getListForItem.js +25 -0
  48. package/configure/node_modules/slate-edit-list/dist/utils/getListForItem.js.flow +16 -0
  49. package/configure/node_modules/slate-edit-list/dist/utils/getPreviousItem.js +39 -0
  50. package/configure/node_modules/slate-edit-list/dist/utils/getPreviousItem.js.flow +29 -0
  51. package/configure/node_modules/slate-edit-list/dist/utils/index.js +49 -0
  52. package/configure/node_modules/slate-edit-list/dist/utils/index.js.flow +19 -0
  53. package/configure/node_modules/slate-edit-list/dist/utils/isList.js +15 -0
  54. package/configure/node_modules/slate-edit-list/dist/utils/isList.js.flow +13 -0
  55. package/configure/node_modules/slate-edit-list/dist/utils/isSelectionInList.js +22 -0
  56. package/configure/node_modules/slate-edit-list/dist/utils/isSelectionInList.js.flow +14 -0
  57. package/configure/node_modules/slate-edit-list/dist/validation/index.js +19 -0
  58. package/configure/node_modules/slate-edit-list/dist/validation/index.js.flow +4 -0
  59. package/configure/node_modules/slate-edit-list/dist/validation/schema.js +83 -0
  60. package/configure/node_modules/slate-edit-list/dist/validation/schema.js.flow +81 -0
  61. package/configure/node_modules/slate-edit-list/dist/validation/validateNode.js +61 -0
  62. package/configure/node_modules/slate-edit-list/dist/validation/validateNode.js.flow +61 -0
  63. package/configure/node_modules/slate-edit-list/package.json +67 -0
  64. package/configure/node_modules/slate-edit-table/CHANGELOG.md +192 -0
  65. package/configure/node_modules/slate-edit-table/LICENSE +201 -0
  66. package/configure/node_modules/slate-edit-table/README.md +269 -0
  67. package/configure/node_modules/slate-edit-table/dist/changes/clearCell.js +29 -0
  68. package/configure/node_modules/slate-edit-table/dist/changes/clearCell.js.flow +26 -0
  69. package/configure/node_modules/slate-edit-table/dist/changes/index.js +69 -0
  70. package/configure/node_modules/slate-edit-table/dist/changes/index.js.flow +27 -0
  71. package/configure/node_modules/slate-edit-table/dist/changes/insertColumn.js +43 -0
  72. package/configure/node_modules/slate-edit-table/dist/changes/insertColumn.js.flow +46 -0
  73. package/configure/node_modules/slate-edit-table/dist/changes/insertRow.js +36 -0
  74. package/configure/node_modules/slate-edit-table/dist/changes/insertRow.js.flow +35 -0
  75. package/configure/node_modules/slate-edit-table/dist/changes/insertTable.js +29 -0
  76. package/configure/node_modules/slate-edit-table/dist/changes/insertTable.js.flow +27 -0
  77. package/configure/node_modules/slate-edit-table/dist/changes/moveSelection.js +32 -0
  78. package/configure/node_modules/slate-edit-table/dist/changes/moveSelection.js.flow +31 -0
  79. package/configure/node_modules/slate-edit-table/dist/changes/moveSelectionBy.js +84 -0
  80. package/configure/node_modules/slate-edit-table/dist/changes/moveSelectionBy.js.flow +80 -0
  81. package/configure/node_modules/slate-edit-table/dist/changes/removeColumn.js +36 -0
  82. package/configure/node_modules/slate-edit-table/dist/changes/removeColumn.js.flow +28 -0
  83. package/configure/node_modules/slate-edit-table/dist/changes/removeColumnByKey.js +52 -0
  84. package/configure/node_modules/slate-edit-table/dist/changes/removeColumnByKey.js.flow +40 -0
  85. package/configure/node_modules/slate-edit-table/dist/changes/removeRow.js +36 -0
  86. package/configure/node_modules/slate-edit-table/dist/changes/removeRow.js.flow +27 -0
  87. package/configure/node_modules/slate-edit-table/dist/changes/removeRowByKey.js +41 -0
  88. package/configure/node_modules/slate-edit-table/dist/changes/removeRowByKey.js.flow +30 -0
  89. package/configure/node_modules/slate-edit-table/dist/changes/removeTable.js +26 -0
  90. package/configure/node_modules/slate-edit-table/dist/changes/removeTable.js.flow +17 -0
  91. package/configure/node_modules/slate-edit-table/dist/changes/removeTableByKey.js +56 -0
  92. package/configure/node_modules/slate-edit-table/dist/changes/removeTableByKey.js.flow +54 -0
  93. package/configure/node_modules/slate-edit-table/dist/core.js +88 -0
  94. package/configure/node_modules/slate-edit-table/dist/core.js.flow +94 -0
  95. package/configure/node_modules/slate-edit-table/dist/handlers/index.js +39 -0
  96. package/configure/node_modules/slate-edit-table/dist/handlers/index.js.flow +8 -0
  97. package/configure/node_modules/slate-edit-table/dist/handlers/onBackspace.js +82 -0
  98. package/configure/node_modules/slate-edit-table/dist/handlers/onBackspace.js.flow +87 -0
  99. package/configure/node_modules/slate-edit-table/dist/handlers/onEnter.js +34 -0
  100. package/configure/node_modules/slate-edit-table/dist/handlers/onEnter.js.flow +37 -0
  101. package/configure/node_modules/slate-edit-table/dist/handlers/onKeyDown.js +71 -0
  102. package/configure/node_modules/slate-edit-table/dist/handlers/onKeyDown.js.flow +56 -0
  103. package/configure/node_modules/slate-edit-table/dist/handlers/onModEnter.js +35 -0
  104. package/configure/node_modules/slate-edit-table/dist/handlers/onModEnter.js.flow +38 -0
  105. package/configure/node_modules/slate-edit-table/dist/handlers/onTab.js +56 -0
  106. package/configure/node_modules/slate-edit-table/dist/handlers/onTab.js.flow +51 -0
  107. package/configure/node_modules/slate-edit-table/dist/handlers/onUpDown.js +38 -0
  108. package/configure/node_modules/slate-edit-table/dist/handlers/onUpDown.js.flow +41 -0
  109. package/configure/node_modules/slate-edit-table/dist/index.js +36 -0
  110. package/configure/node_modules/slate-edit-table/dist/index.js.flow +27 -0
  111. package/configure/node_modules/slate-edit-table/dist/options.js +61 -0
  112. package/configure/node_modules/slate-edit-table/dist/options.js.flow +42 -0
  113. package/configure/node_modules/slate-edit-table/dist/utils/TablePosition.js +306 -0
  114. package/configure/node_modules/slate-edit-table/dist/utils/TablePosition.js.flow +211 -0
  115. package/configure/node_modules/slate-edit-table/dist/utils/createCell.js +30 -0
  116. package/configure/node_modules/slate-edit-table/dist/utils/createCell.js.flow +26 -0
  117. package/configure/node_modules/slate-edit-table/dist/utils/createRow.js +30 -0
  118. package/configure/node_modules/slate-edit-table/dist/utils/createRow.js.flow +28 -0
  119. package/configure/node_modules/slate-edit-table/dist/utils/createTable.js +30 -0
  120. package/configure/node_modules/slate-edit-table/dist/utils/createTable.js.flow +33 -0
  121. package/configure/node_modules/slate-edit-table/dist/utils/forEachCells.js +21 -0
  122. package/configure/node_modules/slate-edit-table/dist/utils/forEachCells.js.flow +22 -0
  123. package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js +22 -0
  124. package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js.flow +19 -0
  125. package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtRow.js +20 -0
  126. package/configure/node_modules/slate-edit-table/dist/utils/getCellsAtRow.js.flow +19 -0
  127. package/configure/node_modules/slate-edit-table/dist/utils/getPosition.js +24 -0
  128. package/configure/node_modules/slate-edit-table/dist/utils/getPosition.js.flow +19 -0
  129. package/configure/node_modules/slate-edit-table/dist/utils/getPositionByKey.js +26 -0
  130. package/configure/node_modules/slate-edit-table/dist/utils/getPositionByKey.js.flow +21 -0
  131. package/configure/node_modules/slate-edit-table/dist/utils/getRow.js +24 -0
  132. package/configure/node_modules/slate-edit-table/dist/utils/getRow.js.flow +19 -0
  133. package/configure/node_modules/slate-edit-table/dist/utils/index.js +64 -0
  134. package/configure/node_modules/slate-edit-table/dist/utils/index.js.flow +25 -0
  135. package/configure/node_modules/slate-edit-table/dist/utils/isSelectionInTable.js +34 -0
  136. package/configure/node_modules/slate-edit-table/dist/utils/isSelectionInTable.js.flow +27 -0
  137. package/configure/node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js +30 -0
  138. package/configure/node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js.flow +23 -0
  139. package/configure/node_modules/slate-edit-table/dist/validation/index.js +19 -0
  140. package/configure/node_modules/slate-edit-table/dist/validation/index.js.flow +4 -0
  141. package/configure/node_modules/slate-edit-table/dist/validation/schema.js +101 -0
  142. package/configure/node_modules/slate-edit-table/dist/validation/schema.js.flow +98 -0
  143. package/configure/node_modules/slate-edit-table/dist/validation/validateNode.js +56 -0
  144. package/configure/node_modules/slate-edit-table/dist/validation/validateNode.js.flow +49 -0
  145. package/configure/node_modules/slate-edit-table/package.json +69 -0
  146. 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;