@pie-lib/editable-html 11.4.0 → 11.6.0

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 (106) hide show
  1. package/CHANGELOG.md +24 -52
  2. package/package.json +8 -7
  3. package/src/editor.jsx +2 -2
  4. package/src/plugins/media/media-dialog.js +1 -1
  5. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +1 -1
  6. package/src/plugins/toolbar/editor-and-toolbar.jsx +1 -1
  7. package/lib/block-tags.js +0 -25
  8. package/lib/block-tags.js.map +0 -1
  9. package/lib/constants.js +0 -16
  10. package/lib/constants.js.map +0 -1
  11. package/lib/editor.js +0 -1355
  12. package/lib/editor.js.map +0 -1
  13. package/lib/index.js +0 -269
  14. package/lib/index.js.map +0 -1
  15. package/lib/parse-html.js +0 -16
  16. package/lib/parse-html.js.map +0 -1
  17. package/lib/plugins/characters/custom-popper.js +0 -73
  18. package/lib/plugins/characters/custom-popper.js.map +0 -1
  19. package/lib/plugins/characters/index.js +0 -305
  20. package/lib/plugins/characters/index.js.map +0 -1
  21. package/lib/plugins/characters/utils.js +0 -381
  22. package/lib/plugins/characters/utils.js.map +0 -1
  23. package/lib/plugins/css/icons/index.js +0 -37
  24. package/lib/plugins/css/icons/index.js.map +0 -1
  25. package/lib/plugins/css/index.js +0 -397
  26. package/lib/plugins/css/index.js.map +0 -1
  27. package/lib/plugins/customPlugin/index.js +0 -114
  28. package/lib/plugins/customPlugin/index.js.map +0 -1
  29. package/lib/plugins/html/icons/index.js +0 -38
  30. package/lib/plugins/html/icons/index.js.map +0 -1
  31. package/lib/plugins/html/index.js +0 -80
  32. package/lib/plugins/html/index.js.map +0 -1
  33. package/lib/plugins/image/alt-dialog.js +0 -129
  34. package/lib/plugins/image/alt-dialog.js.map +0 -1
  35. package/lib/plugins/image/component.js +0 -419
  36. package/lib/plugins/image/component.js.map +0 -1
  37. package/lib/plugins/image/image-toolbar.js +0 -177
  38. package/lib/plugins/image/image-toolbar.js.map +0 -1
  39. package/lib/plugins/image/index.js +0 -263
  40. package/lib/plugins/image/index.js.map +0 -1
  41. package/lib/plugins/image/insert-image-handler.js +0 -161
  42. package/lib/plugins/image/insert-image-handler.js.map +0 -1
  43. package/lib/plugins/index.js +0 -402
  44. package/lib/plugins/index.js.map +0 -1
  45. package/lib/plugins/list/index.js +0 -334
  46. package/lib/plugins/list/index.js.map +0 -1
  47. package/lib/plugins/math/index.js +0 -454
  48. package/lib/plugins/math/index.js.map +0 -1
  49. package/lib/plugins/media/index.js +0 -387
  50. package/lib/plugins/media/index.js.map +0 -1
  51. package/lib/plugins/media/media-dialog.js +0 -709
  52. package/lib/plugins/media/media-dialog.js.map +0 -1
  53. package/lib/plugins/media/media-toolbar.js +0 -101
  54. package/lib/plugins/media/media-toolbar.js.map +0 -1
  55. package/lib/plugins/media/media-wrapper.js +0 -93
  56. package/lib/plugins/media/media-wrapper.js.map +0 -1
  57. package/lib/plugins/rendering/index.js +0 -46
  58. package/lib/plugins/rendering/index.js.map +0 -1
  59. package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -254
  60. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
  61. package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -97
  62. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
  63. package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -57
  64. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
  65. package/lib/plugins/respArea/icons/index.js +0 -95
  66. package/lib/plugins/respArea/icons/index.js.map +0 -1
  67. package/lib/plugins/respArea/index.js +0 -341
  68. package/lib/plugins/respArea/index.js.map +0 -1
  69. package/lib/plugins/respArea/inline-dropdown/index.js +0 -75
  70. package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
  71. package/lib/plugins/respArea/math-templated/index.js +0 -130
  72. package/lib/plugins/respArea/math-templated/index.js.map +0 -1
  73. package/lib/plugins/respArea/utils.js +0 -125
  74. package/lib/plugins/respArea/utils.js.map +0 -1
  75. package/lib/plugins/table/CustomTablePlugin.js +0 -133
  76. package/lib/plugins/table/CustomTablePlugin.js.map +0 -1
  77. package/lib/plugins/table/icons/index.js +0 -69
  78. package/lib/plugins/table/icons/index.js.map +0 -1
  79. package/lib/plugins/table/index.js +0 -483
  80. package/lib/plugins/table/index.js.map +0 -1
  81. package/lib/plugins/table/table-toolbar.js +0 -187
  82. package/lib/plugins/table/table-toolbar.js.map +0 -1
  83. package/lib/plugins/textAlign/icons/index.js +0 -226
  84. package/lib/plugins/textAlign/icons/index.js.map +0 -1
  85. package/lib/plugins/textAlign/index.js +0 -34
  86. package/lib/plugins/textAlign/index.js.map +0 -1
  87. package/lib/plugins/toolbar/default-toolbar.js +0 -229
  88. package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
  89. package/lib/plugins/toolbar/done-button.js +0 -53
  90. package/lib/plugins/toolbar/done-button.js.map +0 -1
  91. package/lib/plugins/toolbar/editor-and-toolbar.js +0 -286
  92. package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
  93. package/lib/plugins/toolbar/index.js +0 -34
  94. package/lib/plugins/toolbar/index.js.map +0 -1
  95. package/lib/plugins/toolbar/toolbar-buttons.js +0 -194
  96. package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
  97. package/lib/plugins/toolbar/toolbar.js +0 -376
  98. package/lib/plugins/toolbar/toolbar.js.map +0 -1
  99. package/lib/plugins/utils.js +0 -62
  100. package/lib/plugins/utils.js.map +0 -1
  101. package/lib/serialization.js +0 -677
  102. package/lib/serialization.js.map +0 -1
  103. package/lib/shared/alert-dialog.js +0 -75
  104. package/lib/shared/index.js +0 -136
  105. package/lib/theme.js +0 -9
  106. package/lib/theme.js.map +0 -1
@@ -1,334 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.serialization = exports["default"] = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _slate = require("slate");
13
-
14
- var _immutable = _interopRequireDefault(require("immutable"));
15
-
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
17
-
18
- var _slateEditList = _interopRequireDefault(require("slate-edit-list"));
19
-
20
- var _options = _interopRequireDefault(require("slate-edit-list/dist/options"));
21
-
22
- var _debug = _interopRequireDefault(require("debug"));
23
-
24
- var _this = void 0;
25
-
26
- var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:list');
27
-
28
- var b = function b(type, next, childNodes) {
29
- return {
30
- object: 'block',
31
- type: type,
32
- nodes: next(childNodes)
33
- };
34
- };
35
-
36
- var serialization = {
37
- deserialize: function deserialize(el, next) {
38
- var name = el.tagName.toLowerCase();
39
-
40
- if (name === 'li') {
41
- return b('list_item', next, el.childNodes);
42
- }
43
-
44
- if (name === 'ul') {
45
- return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);
46
- }
47
-
48
- if (name === 'ol') {
49
- return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);
50
- }
51
- },
52
- serialize: function serialize(object, children) {
53
- if (object.object !== 'block') return;
54
-
55
- if (object.type === 'list_item') {
56
- return /*#__PURE__*/_react["default"].createElement("li", null, children);
57
- }
58
-
59
- if (object.type === 'ul_list') {
60
- return /*#__PURE__*/_react["default"].createElement("ul", null, children);
61
- }
62
-
63
- if (object.type === 'ol_list') {
64
- return /*#__PURE__*/_react["default"].createElement("ol", null, children);
65
- }
66
- }
67
- };
68
- exports.serialization = serialization;
69
-
70
- var createEditList = function createEditList() {
71
- var core = (0, _slateEditList["default"])({
72
- typeDefault: 'span'
73
- });
74
- var listOptions = new _options["default"]({
75
- typeDefault: 'span'
76
- }); // fix outdated schema
77
-
78
- if (core.schema && core.schema.blocks) {
79
- Object.keys(core.schema.blocks).forEach(function (key) {
80
- var block = core.schema.blocks[key];
81
-
82
- if (block.parent) {
83
- return;
84
- }
85
-
86
- block.nodes[0] = {
87
- type: block.nodes[0].types[0]
88
- };
89
- });
90
- }
91
- /**
92
- * This override of the core.changes.wrapInList is needed because the version
93
- * of immutable that we have does not support getting the element at a specific
94
- * index with a square bracket (list[0]). We have to use the list.get function instead
95
- */
96
-
97
- /**
98
- * Returns the highest list of blocks that cover the current selection
99
- */
100
-
101
-
102
- var getHighestSelectedBlocks = function getHighestSelectedBlocks(value) {
103
- var range = value.selection;
104
- var document = value.document;
105
- var startBlock = document.getClosestBlock(range.startKey);
106
- var endBlock = document.getClosestBlock(range.endKey);
107
-
108
- if (startBlock === endBlock) {
109
- return _immutable["default"].List([startBlock]);
110
- }
111
-
112
- var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
113
- var startPath = ancestor.getPath(startBlock.key);
114
- var endPath = ancestor.getPath(endBlock.key);
115
- return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
116
- };
117
- /**
118
- * Wrap the blocks in the current selection in a new list. Selected
119
- * lists are merged together.
120
- */
121
-
122
-
123
- core.changes.wrapInList = function (change, type, data) {
124
- var selectedBlocks = getHighestSelectedBlocks(change.value); // Wrap in container
125
-
126
- change.wrapBlock({
127
- type: type,
128
- data: _slate.Data.create(data)
129
- }, {
130
- normalize: false
131
- }); // Wrap in list items
132
-
133
- selectedBlocks.forEach(function (node) {
134
- if (core.utils.isList(node)) {
135
- // Merge its items with the created list
136
- node.nodes.forEach(function (_ref) {
137
- var key = _ref.key;
138
- return change.unwrapNodeByKey(key, {
139
- normalize: false
140
- });
141
- });
142
- } else if (node.type !== 'list_item') {
143
- change.wrapBlockByKey(node.key, 'list_item', {
144
- normalize: false
145
- });
146
- }
147
- });
148
- return change.normalize();
149
- };
150
-
151
- core.changes.unwrapList = function unwrapList(opts, change) {
152
- var items = core.utils.getItemsAtRange(change.value);
153
-
154
- if (items.isEmpty()) {
155
- return change;
156
- } // Unwrap the items from their list
157
-
158
-
159
- items.forEach(function (item) {
160
- return change.unwrapNodeByKey(item.key, {
161
- normalize: false
162
- });
163
- }); // Parent of the list of the items
164
-
165
- var firstItem = items.first();
166
- var parent = change.value.document.getParent(firstItem.key);
167
- var index = parent.nodes.findIndex(function (node) {
168
- return node.key === firstItem.key;
169
- }); // Unwrap the items' children
170
-
171
- items.forEach(function (item) {
172
- item.nodes.forEach(function (node) {
173
- change.moveNodeByKey(node.key, parent.key, index, {
174
- normalize: false
175
- });
176
- index += 1;
177
- });
178
- }); // Finally, remove the now empty items
179
-
180
- items.forEach(function (item) {
181
- return change.removeNodeByKey(item.key, {
182
- normalize: false
183
- });
184
- });
185
- return change;
186
- }.bind(_this, listOptions);
187
-
188
- core.utils.getItemsAtRange = function (opts, value, range) {
189
- range = range || value.selection;
190
-
191
- if (!range.startKey) {
192
- return _immutable["default"].List();
193
- }
194
-
195
- var document = value.document;
196
- var startBlock = document.getClosestBlock(range.startKey);
197
- var endBlock = document.getClosestBlock(range.endKey);
198
-
199
- if (startBlock === endBlock) {
200
- var item = core.utils.getCurrentItem(value, startBlock);
201
- return item ? _immutable["default"].List([item]) : _immutable["default"].List();
202
- }
203
-
204
- var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
205
-
206
- if (core.utils.isList(ancestor)) {
207
- var startPath = ancestor.getPath(startBlock.key);
208
- var endPath = ancestor.getPath(endBlock.key);
209
- return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
210
- } else if (ancestor.type === opts.typeItem) {
211
- // The ancestor is the highest list item that covers the range
212
- return _immutable["default"].List([ancestor]);
213
- } // No list of items can cover the range
214
-
215
-
216
- return _immutable["default"].List();
217
- }.bind(_this, listOptions);
218
-
219
- core.utils.getListForItem = function (opts, value, item) {
220
- var document = value.document;
221
- var parent = document.getParent(item.key);
222
- return parent && core.utils.isList(parent) ? parent : null;
223
- }.bind(_this, listOptions);
224
-
225
- core.utils.isSelectionInList = function (opts, value, type) {
226
- var items = core.utils.getItemsAtRange(value);
227
- return !items.isEmpty() && ( // Check the type of the list if needed
228
- !type || core.utils.getListForItem(value, items.first()).get('type') === type);
229
- }.bind(_this, listOptions);
230
-
231
- return core;
232
- };
233
-
234
- var _default = function _default(options) {
235
- var type = options.type,
236
- icon = options.icon;
237
- var core = createEditList(); // eslint-disable-next-line react/display-name
238
-
239
- core.renderNode = function (props) {
240
- var node = props.node,
241
- attributes = props.attributes,
242
- children = props.children;
243
-
244
- switch (node.type) {
245
- case 'ul_list':
246
- return /*#__PURE__*/_react["default"].createElement("ul", attributes, children);
247
-
248
- case 'ol_list':
249
- return /*#__PURE__*/_react["default"].createElement("ol", attributes, children);
250
-
251
- case 'list_item':
252
- return /*#__PURE__*/_react["default"].createElement("li", attributes, children);
253
- }
254
- };
255
-
256
- core.toolbar = {
257
- isMark: false,
258
- ariaLabel: type == 'ul_list' ? 'bulleted list' : 'numbered-list',
259
- type: type,
260
- icon: icon,
261
- isActive: function isActive(value, type) {
262
- if (!core.utils.isSelectionInList(value)) {
263
- return false;
264
- }
265
-
266
- var current = core.utils.getCurrentList(value);
267
- return current ? current.type === type : false;
268
- },
269
- onClick: function onClick(value, onChange) {
270
- log('[onClick]', value);
271
- var inList = core.utils.isSelectionInList(value);
272
-
273
- if (inList) {
274
- var change = value.change().call(core.changes.unwrapList);
275
- onChange(change);
276
- } else {
277
- var _change = value.change().call(core.changes.wrapInList, type);
278
-
279
- onChange(_change);
280
- }
281
- }
282
- };
283
-
284
- core.normalizeNode = function (node) {
285
- if (node.object !== 'document' && node.object !== 'block') {
286
- return undefined;
287
- }
288
-
289
- var response = core.validateNode(node);
290
- var invalidListItems = [];
291
- node.forEachDescendant(function (d) {
292
- if (d.type === 'list_item' && d.nodes.size === 1 && d.nodes.first().object === 'text') {
293
- // if we have a list_item that has only a text inside, we need to add a block in it
294
- invalidListItems.push(d);
295
- }
296
- });
297
-
298
- if (!invalidListItems.length && !response) {
299
- return undefined;
300
- }
301
-
302
- return function (change) {
303
- if (response) {
304
- response(change);
305
- }
306
-
307
- if (invalidListItems.length) {
308
- change.withoutNormalization(function () {
309
- invalidListItems.forEach(function (node) {
310
- var textNode = node.nodes.first();
311
- var wrappedBlock = {
312
- object: 'block',
313
- type: 'div',
314
- nodes: [textNode.toJSON()]
315
- };
316
- change.removeNodeByKey(textNode.key);
317
- change.insertNodeByKey(node.key, 0, wrappedBlock);
318
- });
319
- });
320
- }
321
- };
322
- };
323
-
324
- core.renderNode.propTypes = {
325
- node: _propTypes["default"].object,
326
- attributes: _propTypes["default"].object,
327
- children: _propTypes["default"].func
328
- };
329
- core.name = type;
330
- return core;
331
- };
332
-
333
- exports["default"] = _default;
334
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","typeDefault","listOptions","ListOptions","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","unwrapList","opts","items","getItemsAtRange","isEmpty","item","firstItem","first","getParent","index","findIndex","moveNodeByKey","removeNodeByKey","bind","getCurrentItem","typeItem","getListForItem","isSelectionInList","options","icon","renderNode","props","attributes","toolbar","isMark","ariaLabel","isActive","current","getCurrentList","onClick","onChange","inList","call","normalizeNode","undefined","response","validateNode","invalidListItems","forEachDescendant","d","size","push","withoutNormalization","textNode","wrappedBlock","toJSON","insertNodeByKey","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport ListOptions from 'slate-edit-list/dist/options';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes),\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n },\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span',\n });\n\n const listOptions = new ListOptions({\n typeDefault: 'span',\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach((key) => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = (value) => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false,\n });\n }\n });\n\n return change.normalize();\n };\n\n core.changes.unwrapList = function unwrapList(opts, change) {\n const items = core.utils.getItemsAtRange(change.value);\n\n if (items.isEmpty()) {\n return change;\n }\n\n // Unwrap the items from their list\n items.forEach((item) => change.unwrapNodeByKey(item.key, { normalize: false }));\n\n // Parent of the list of the items\n const firstItem = items.first();\n const parent = change.value.document.getParent(firstItem.key);\n\n let index = parent.nodes.findIndex((node) => node.key === firstItem.key);\n\n // Unwrap the items' children\n items.forEach((item) => {\n item.nodes.forEach((node) => {\n change.moveNodeByKey(node.key, parent.key, index, {\n normalize: false,\n });\n index += 1;\n });\n });\n\n // Finally, remove the now empty items\n items.forEach((item) => change.removeNodeByKey(item.key, { normalize: false }));\n\n return change;\n }.bind(this, listOptions);\n\n core.utils.getItemsAtRange = function(opts, value, range) {\n range = range || value.selection;\n\n if (!range.startKey) {\n return Immutable.List();\n }\n\n const { document } = value;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n const item = core.utils.getCurrentItem(value, startBlock);\n return item ? Immutable.List([item]) : Immutable.List();\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n\n if (core.utils.isList(ancestor)) {\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n } else if (ancestor.type === opts.typeItem) {\n // The ancestor is the highest list item that covers the range\n return Immutable.List([ancestor]);\n }\n // No list of items can cover the range\n return Immutable.List();\n }.bind(this, listOptions);\n\n core.utils.getListForItem = function(opts, value, item) {\n const { document } = value;\n const parent = document.getParent(item.key);\n return parent && core.utils.isList(parent) ? parent : null;\n }.bind(this, listOptions);\n\n core.utils.isSelectionInList = function(opts, value, type) {\n const items = core.utils.getItemsAtRange(value);\n return (\n !items.isEmpty() &&\n // Check the type of the list if needed\n (!type || core.utils.getListForItem(value, items.first()).get('type') === type)\n );\n }.bind(this, listOptions);\n\n return core;\n};\n\nexport default (options) => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = (props) => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n ariaLabel: type == 'ul_list' ? 'bulleted list' : 'numbered-list',\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current ? current.type === type : false;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n },\n };\n\n core.normalizeNode = (node) => {\n if (node.object !== 'document' && node.object !== 'block') {\n return undefined;\n }\n\n const response = core.validateNode(node);\n\n const invalidListItems = [];\n\n node.forEachDescendant((d) => {\n if (d.type === 'list_item' && d.nodes.size === 1 && d.nodes.first().object === 'text') {\n // if we have a list_item that has only a text inside, we need to add a block in it\n invalidListItems.push(d);\n }\n });\n\n if (!invalidListItems.length && !response) {\n return undefined;\n }\n\n return (change) => {\n if (response) {\n response(change);\n }\n\n if (invalidListItems.length) {\n change.withoutNormalization(() => {\n invalidListItems.forEach((node) => {\n const textNode = node.nodes.first();\n const wrappedBlock = {\n object: 'block',\n type: 'div',\n nodes: [textNode.toJSON()],\n };\n\n change.removeNodeByKey(textNode.key);\n\n change.insertNodeByKey(node.key, 0, wrappedBlock);\n });\n });\n }\n };\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func,\n };\n core.name = type;\n\n return core;\n};\n"],"file":"index.js"}