@pie-lib/editable-html 12.1.0-next.2 → 12.1.0-next.5

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