@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,306 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
+
9
+ var _immutable = require('immutable');
10
+
11
+ var _slate = require('slate');
12
+
13
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
+
15
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
16
+
17
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
18
+
19
+ var TablePosition = function (_Record) {
20
+ _inherits(TablePosition, _Record);
21
+
22
+ function TablePosition() {
23
+ _classCallCheck(this, TablePosition);
24
+
25
+ return _possibleConstructorReturn(this, (TablePosition.__proto__ || Object.getPrototypeOf(TablePosition)).apply(this, arguments));
26
+ }
27
+
28
+ _createClass(TablePosition, [{
29
+ key: 'isInCell',
30
+
31
+
32
+ /**
33
+ * Check to see if this position is within a cell
34
+ */
35
+ value: function isInCell() {
36
+ return Boolean(this.cellBlock);
37
+ }
38
+
39
+ /**
40
+ * Check to see if this position is within a row
41
+ */
42
+
43
+ }, {
44
+ key: 'isInRow',
45
+ value: function isInRow() {
46
+ return Boolean(this.rowBlock);
47
+ }
48
+
49
+ /**
50
+ * Check to see if this position is within a table
51
+ */
52
+
53
+ }, {
54
+ key: 'isInTable',
55
+ value: function isInTable() {
56
+ return Boolean(this.tableBlock);
57
+ }
58
+
59
+ /**
60
+ * Check to see if this position is at the top of the cell.
61
+ */
62
+
63
+ }, {
64
+ key: 'isTopOfCell',
65
+ value: function isTopOfCell() {
66
+ var contentBlock = this.contentBlock,
67
+ cellBlock = this.cellBlock;
68
+
69
+
70
+ if (!contentBlock || !cellBlock) {
71
+ return false;
72
+ }
73
+
74
+ var nodes = cellBlock.nodes;
75
+
76
+ var index = nodes.findIndex(function (block) {
77
+ return block.key == contentBlock.key;
78
+ });
79
+
80
+ return index == 0;
81
+ }
82
+
83
+ /**
84
+ * Check to see if this position is at the bottom of the cell.
85
+ */
86
+
87
+ }, {
88
+ key: 'isBottomOfCell',
89
+ value: function isBottomOfCell() {
90
+ var contentBlock = this.contentBlock,
91
+ cellBlock = this.cellBlock;
92
+
93
+
94
+ if (!contentBlock || !cellBlock) {
95
+ return false;
96
+ }
97
+
98
+ var nodes = cellBlock.nodes;
99
+
100
+ var index = nodes.findIndex(function (block) {
101
+ return block.key == contentBlock.key;
102
+ });
103
+
104
+ return index == nodes.size - 1;
105
+ }
106
+
107
+ /**
108
+ * Get count of columns
109
+ */
110
+
111
+ }, {
112
+ key: 'getWidth',
113
+ value: function getWidth() {
114
+ var table = this.table;
115
+
116
+ var rows = table.nodes;
117
+ var cells = rows.get(0).nodes;
118
+
119
+ return cells.size;
120
+ }
121
+
122
+ /**
123
+ * Get count of rows
124
+ */
125
+
126
+ }, {
127
+ key: 'getHeight',
128
+ value: function getHeight() {
129
+ var table = this.table;
130
+
131
+ var rows = table.nodes;
132
+
133
+ return rows.size;
134
+ }
135
+
136
+ /**
137
+ * Get index of current row in the table.
138
+ */
139
+
140
+ }, {
141
+ key: 'getRowIndex',
142
+ value: function getRowIndex() {
143
+ var table = this.table,
144
+ row = this.row;
145
+
146
+ var rows = table.nodes;
147
+
148
+ return rows.findIndex(function (x) {
149
+ return x === row;
150
+ });
151
+ }
152
+
153
+ /**
154
+ * Get index of current column in the row.
155
+ */
156
+
157
+ }, {
158
+ key: 'getColumnIndex',
159
+ value: function getColumnIndex() {
160
+ var row = this.row,
161
+ cell = this.cell;
162
+
163
+ var cells = row.nodes;
164
+
165
+ return cells.findIndex(function (x) {
166
+ return x === cell;
167
+ });
168
+ }
169
+
170
+ /**
171
+ * True if on first cell of the table
172
+ */
173
+
174
+ }, {
175
+ key: 'isFirstCell',
176
+ value: function isFirstCell() {
177
+ return this.isFirstRow() && this.isFirstColumn();
178
+ }
179
+
180
+ /**
181
+ * True if on last cell of the table
182
+ */
183
+
184
+ }, {
185
+ key: 'isLastCell',
186
+ value: function isLastCell() {
187
+ return this.isLastRow() && this.isLastColumn();
188
+ }
189
+
190
+ /**
191
+ * True if on first row
192
+ */
193
+
194
+ }, {
195
+ key: 'isFirstRow',
196
+ value: function isFirstRow() {
197
+ return this.getRowIndex() === 0;
198
+ }
199
+
200
+ /**
201
+ * True if on last row
202
+ */
203
+
204
+ }, {
205
+ key: 'isLastRow',
206
+ value: function isLastRow() {
207
+ return this.getRowIndex() === this.getHeight() - 1;
208
+ }
209
+
210
+ /**
211
+ * True if on first column
212
+ */
213
+
214
+ }, {
215
+ key: 'isFirstColumn',
216
+ value: function isFirstColumn() {
217
+ return this.getColumnIndex() === 0;
218
+ }
219
+
220
+ /**
221
+ * True if on last column
222
+ */
223
+
224
+ }, {
225
+ key: 'isLastColumn',
226
+ value: function isLastColumn() {
227
+ return this.getColumnIndex() === this.getWidth() - 1;
228
+ }
229
+ }, {
230
+ key: 'table',
231
+ get: function get() {
232
+ if (!this.tableBlock) {
233
+ throw new Error('Not in a table');
234
+ }
235
+ return this.tableBlock;
236
+ }
237
+ }, {
238
+ key: 'row',
239
+ get: function get() {
240
+ if (!this.rowBlock) {
241
+ throw new Error('Not in a row');
242
+ }
243
+ return this.rowBlock;
244
+ }
245
+ }, {
246
+ key: 'cell',
247
+ get: function get() {
248
+ if (!this.cellBlock) {
249
+ throw new Error('Not in a cell');
250
+ }
251
+ return this.cellBlock;
252
+ }
253
+ }], [{
254
+ key: 'create',
255
+
256
+
257
+ /**
258
+ * Create a new instance of a TablePosition from a Slate document
259
+ * and a node key.
260
+ */
261
+
262
+
263
+ // Block for current cell
264
+
265
+ // Block container for the table
266
+ value: function create(opts, containerNode, key) {
267
+ var node = containerNode.getDescendant(key);
268
+ var ancestors = containerNode.getAncestors(key).push(node);
269
+ var tableBlock = ancestors.findLast(function (p) {
270
+ return p.type === opts.typeTable;
271
+ });
272
+ var rowBlock = ancestors.findLast(function (p) {
273
+ return p.type === opts.typeRow;
274
+ });
275
+
276
+ var cellBlock = ancestors.findLast(function (p) {
277
+ return p.type === opts.typeCell;
278
+ });
279
+ var contentBlock = ancestors.skipUntil(function (ancestor) {
280
+ return ancestor === cellBlock;
281
+ }).skip(1).first();
282
+
283
+ return new TablePosition({
284
+ tableBlock: tableBlock,
285
+ rowBlock: rowBlock,
286
+ cellBlock: cellBlock,
287
+ contentBlock: contentBlock
288
+ });
289
+ }
290
+
291
+ // Current content block in the cell
292
+
293
+
294
+ // Block for current row
295
+
296
+ }]);
297
+
298
+ return TablePosition;
299
+ }((0, _immutable.Record)({
300
+ tableBlock: null,
301
+ rowBlock: null,
302
+ cellBlock: null,
303
+ contentBlock: null
304
+ }));
305
+
306
+ exports.default = TablePosition;
@@ -0,0 +1,211 @@
1
+ // @flow
2
+ import { Record } from 'immutable';
3
+ import { Block, type Node } from 'slate';
4
+
5
+ import type Options from '../options';
6
+
7
+ class TablePosition extends Record({
8
+ tableBlock: null,
9
+ rowBlock: null,
10
+ cellBlock: null,
11
+ contentBlock: null
12
+ }) {
13
+ // Block container for the table
14
+ tableBlock: ?Block;
15
+
16
+ // Block for current row
17
+ rowBlock: ?Block;
18
+
19
+ // Block for current cell
20
+ cellBlock: ?Block;
21
+
22
+ // Current content block in the cell
23
+ contentBlock: ?Block;
24
+
25
+ /**
26
+ * Create a new instance of a TablePosition from a Slate document
27
+ * and a node key.
28
+ */
29
+ static create(
30
+ opts: Options,
31
+ containerNode: Node,
32
+ key: string
33
+ ): TablePosition {
34
+ const node = containerNode.getDescendant(key);
35
+ const ancestors = containerNode.getAncestors(key).push(node);
36
+ const tableBlock = ancestors.findLast(p => p.type === opts.typeTable);
37
+ const rowBlock = ancestors.findLast(p => p.type === opts.typeRow);
38
+
39
+ const cellBlock = ancestors.findLast(p => p.type === opts.typeCell);
40
+ const contentBlock = ancestors
41
+ .skipUntil(ancestor => ancestor === cellBlock)
42
+ .skip(1)
43
+ .first();
44
+
45
+ return new TablePosition({
46
+ tableBlock,
47
+ rowBlock,
48
+ cellBlock,
49
+ contentBlock
50
+ });
51
+ }
52
+
53
+ get table(): Block {
54
+ if (!this.tableBlock) {
55
+ throw new Error('Not in a table');
56
+ }
57
+ return this.tableBlock;
58
+ }
59
+
60
+ get row(): Block {
61
+ if (!this.rowBlock) {
62
+ throw new Error('Not in a row');
63
+ }
64
+ return this.rowBlock;
65
+ }
66
+
67
+ get cell(): Block {
68
+ if (!this.cellBlock) {
69
+ throw new Error('Not in a cell');
70
+ }
71
+ return this.cellBlock;
72
+ }
73
+
74
+ /**
75
+ * Check to see if this position is within a cell
76
+ */
77
+ isInCell(): boolean {
78
+ return Boolean(this.cellBlock);
79
+ }
80
+
81
+ /**
82
+ * Check to see if this position is within a row
83
+ */
84
+ isInRow(): boolean {
85
+ return Boolean(this.rowBlock);
86
+ }
87
+
88
+ /**
89
+ * Check to see if this position is within a table
90
+ */
91
+ isInTable(): boolean {
92
+ return Boolean(this.tableBlock);
93
+ }
94
+
95
+ /**
96
+ * Check to see if this position is at the top of the cell.
97
+ */
98
+ isTopOfCell(): boolean {
99
+ const { contentBlock, cellBlock } = this;
100
+
101
+ if (!contentBlock || !cellBlock) {
102
+ return false;
103
+ }
104
+
105
+ const { nodes } = cellBlock;
106
+ const index = nodes.findIndex(block => block.key == contentBlock.key);
107
+
108
+ return index == 0;
109
+ }
110
+
111
+ /**
112
+ * Check to see if this position is at the bottom of the cell.
113
+ */
114
+ isBottomOfCell(): boolean {
115
+ const { contentBlock, cellBlock } = this;
116
+
117
+ if (!contentBlock || !cellBlock) {
118
+ return false;
119
+ }
120
+
121
+ const { nodes } = cellBlock;
122
+ const index = nodes.findIndex(block => block.key == contentBlock.key);
123
+
124
+ return index == nodes.size - 1;
125
+ }
126
+
127
+ /**
128
+ * Get count of columns
129
+ */
130
+ getWidth(): number {
131
+ const { table } = this;
132
+ const rows = table.nodes;
133
+ const cells = rows.get(0).nodes;
134
+
135
+ return cells.size;
136
+ }
137
+
138
+ /**
139
+ * Get count of rows
140
+ */
141
+ getHeight(): number {
142
+ const { table } = this;
143
+ const rows = table.nodes;
144
+
145
+ return rows.size;
146
+ }
147
+
148
+ /**
149
+ * Get index of current row in the table.
150
+ */
151
+ getRowIndex(): number {
152
+ const { table, row } = this;
153
+ const rows = table.nodes;
154
+
155
+ return rows.findIndex(x => x === row);
156
+ }
157
+
158
+ /**
159
+ * Get index of current column in the row.
160
+ */
161
+ getColumnIndex(): number {
162
+ const { row, cell } = this;
163
+ const cells = row.nodes;
164
+
165
+ return cells.findIndex(x => x === cell);
166
+ }
167
+
168
+ /**
169
+ * True if on first cell of the table
170
+ */
171
+ isFirstCell(): boolean {
172
+ return this.isFirstRow() && this.isFirstColumn();
173
+ }
174
+
175
+ /**
176
+ * True if on last cell of the table
177
+ */
178
+ isLastCell(): boolean {
179
+ return this.isLastRow() && this.isLastColumn();
180
+ }
181
+
182
+ /**
183
+ * True if on first row
184
+ */
185
+ isFirstRow(): boolean {
186
+ return this.getRowIndex() === 0;
187
+ }
188
+
189
+ /**
190
+ * True if on last row
191
+ */
192
+ isLastRow(): boolean {
193
+ return this.getRowIndex() === this.getHeight() - 1;
194
+ }
195
+
196
+ /**
197
+ * True if on first column
198
+ */
199
+ isFirstColumn(): boolean {
200
+ return this.getColumnIndex() === 0;
201
+ }
202
+
203
+ /**
204
+ * True if on last column
205
+ */
206
+ isLastColumn(): boolean {
207
+ return this.getColumnIndex() === this.getWidth() - 1;
208
+ }
209
+ }
210
+
211
+ export default TablePosition;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _slate = require('slate');
8
+
9
+ /**
10
+ * Create a new cell
11
+ */
12
+ function createCell(opts, nodes) {
13
+ return _slate.Block.create({
14
+ type: opts.typeCell,
15
+ nodes: nodes || [createEmptyContent(opts)]
16
+ });
17
+ }
18
+
19
+ /**
20
+ * Create a new default content block
21
+ */
22
+
23
+ function createEmptyContent(opts) {
24
+ return _slate.Block.create({
25
+ type: opts.typeContent,
26
+ nodes: [_slate.Text.create()]
27
+ });
28
+ }
29
+
30
+ exports.default = createCell;
@@ -0,0 +1,26 @@
1
+ // @flow
2
+ import { Block, Text, type Node } from 'slate';
3
+
4
+ import type Options from '../options';
5
+
6
+ /**
7
+ * Create a new cell
8
+ */
9
+ function createCell(opts: Options, nodes?: Node[]): Block {
10
+ return Block.create({
11
+ type: opts.typeCell,
12
+ nodes: nodes || [createEmptyContent(opts)]
13
+ });
14
+ }
15
+
16
+ /**
17
+ * Create a new default content block
18
+ */
19
+ function createEmptyContent(opts: Options): Block {
20
+ return Block.create({
21
+ type: opts.typeContent,
22
+ nodes: [Text.create()]
23
+ });
24
+ }
25
+
26
+ export default createCell;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _immutable = require('immutable');
8
+
9
+ var _slate = require('slate');
10
+
11
+ var _createCell = require('./createCell');
12
+
13
+ var _createCell2 = _interopRequireDefault(_createCell);
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+
17
+ /**
18
+ * Create a new row block
19
+ */
20
+ function createRow(opts, columns, getCellContent) {
21
+ var cellNodes = (0, _immutable.Range)(0, columns).map(function (i) {
22
+ return (0, _createCell2.default)(opts, getCellContent ? getCellContent(i) : undefined);
23
+ }).toList();
24
+
25
+ return _slate.Block.create({
26
+ type: opts.typeRow,
27
+ nodes: cellNodes
28
+ });
29
+ }
30
+ exports.default = createRow;
@@ -0,0 +1,28 @@
1
+ // @flow
2
+ import { Range } from 'immutable';
3
+ import { Block, type Node } from 'slate';
4
+
5
+ import type Options from '../options';
6
+ import createCell from './createCell';
7
+
8
+ /**
9
+ * Create a new row block
10
+ */
11
+ function createRow(
12
+ opts: Options,
13
+ columns: number,
14
+ getCellContent?: (column: number) => Node[]
15
+ ): Block {
16
+ const cellNodes = Range(0, columns)
17
+ .map(i =>
18
+ createCell(opts, getCellContent ? getCellContent(i) : undefined)
19
+ )
20
+ .toList();
21
+
22
+ return Block.create({
23
+ type: opts.typeRow,
24
+ nodes: cellNodes
25
+ });
26
+ }
27
+
28
+ export default createRow;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _immutable = require('immutable');
8
+
9
+ var _slate = require('slate');
10
+
11
+ var _createRow = require('./createRow');
12
+
13
+ var _createRow2 = _interopRequireDefault(_createRow);
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+
17
+ /**
18
+ * Create a table
19
+ */
20
+ function createTable(opts, columns, rows, getCellContent) {
21
+ var rowNodes = (0, _immutable.Range)(0, rows).map(function (i) {
22
+ return (0, _createRow2.default)(opts, columns, getCellContent ? getCellContent.bind(null, i) : undefined);
23
+ }).toList();
24
+
25
+ return _slate.Block.create({
26
+ type: opts.typeTable,
27
+ nodes: rowNodes
28
+ });
29
+ }
30
+ exports.default = createTable;
@@ -0,0 +1,33 @@
1
+ // @flow
2
+ import { Range } from 'immutable';
3
+ import { Block, type Node } from 'slate';
4
+
5
+ import type Options from '../options';
6
+ import createRow from './createRow';
7
+
8
+ /**
9
+ * Create a table
10
+ */
11
+ function createTable(
12
+ opts: Options,
13
+ columns: number,
14
+ rows: number,
15
+ getCellContent?: (row: number, column: number) => Node[]
16
+ ): Block {
17
+ const rowNodes = Range(0, rows)
18
+ .map(i =>
19
+ createRow(
20
+ opts,
21
+ columns,
22
+ getCellContent ? getCellContent.bind(null, i) : undefined
23
+ )
24
+ )
25
+ .toList();
26
+
27
+ return Block.create({
28
+ type: opts.typeTable,
29
+ nodes: rowNodes
30
+ });
31
+ }
32
+
33
+ export default createTable;