@pie-lib/editable-html-tip-tap 1.0.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 (167) hide show
  1. package/CHANGELOG.json +32 -0
  2. package/CHANGELOG.md +2280 -0
  3. package/lib/__tests__/editor.test.js +470 -0
  4. package/lib/__tests__/serialization.test.js +246 -0
  5. package/lib/__tests__/utils.js +106 -0
  6. package/lib/block-tags.js +25 -0
  7. package/lib/constants.js +16 -0
  8. package/lib/editor.js +1356 -0
  9. package/lib/extensions/MediaView.js +112 -0
  10. package/lib/extensions/characters.js +65 -0
  11. package/lib/extensions/component.js +325 -0
  12. package/lib/extensions/css.js +252 -0
  13. package/lib/extensions/custom-toolbar-wrapper.js +124 -0
  14. package/lib/extensions/image.js +106 -0
  15. package/lib/extensions/math.js +330 -0
  16. package/lib/extensions/media.js +276 -0
  17. package/lib/extensions/responseArea.js +278 -0
  18. package/lib/index.js +1213 -0
  19. package/lib/old-index.js +269 -0
  20. package/lib/parse-html.js +16 -0
  21. package/lib/plugins/characters/custom-popper.js +73 -0
  22. package/lib/plugins/characters/index.js +305 -0
  23. package/lib/plugins/characters/utils.js +381 -0
  24. package/lib/plugins/css/icons/index.js +37 -0
  25. package/lib/plugins/css/index.js +390 -0
  26. package/lib/plugins/customPlugin/index.js +114 -0
  27. package/lib/plugins/html/icons/index.js +38 -0
  28. package/lib/plugins/html/index.js +81 -0
  29. package/lib/plugins/image/__tests__/component.test.js +51 -0
  30. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
  31. package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
  32. package/lib/plugins/image/__tests__/index.test.js +98 -0
  33. package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
  34. package/lib/plugins/image/__tests__/mock-change.js +25 -0
  35. package/lib/plugins/image/alt-dialog.js +129 -0
  36. package/lib/plugins/image/component.js +419 -0
  37. package/lib/plugins/image/image-toolbar.js +177 -0
  38. package/lib/plugins/image/index.js +263 -0
  39. package/lib/plugins/image/insert-image-handler.js +117 -0
  40. package/lib/plugins/index.js +413 -0
  41. package/lib/plugins/list/__tests__/index.test.js +79 -0
  42. package/lib/plugins/list/index.js +334 -0
  43. package/lib/plugins/math/__tests__/index.test.js +300 -0
  44. package/lib/plugins/math/index.js +454 -0
  45. package/lib/plugins/media/__tests__/index.test.js +71 -0
  46. package/lib/plugins/media/index.js +387 -0
  47. package/lib/plugins/media/media-dialog.js +709 -0
  48. package/lib/plugins/media/media-toolbar.js +101 -0
  49. package/lib/plugins/media/media-wrapper.js +93 -0
  50. package/lib/plugins/rendering/index.js +46 -0
  51. package/lib/plugins/respArea/drag-in-the-blank/choice.js +289 -0
  52. package/lib/plugins/respArea/drag-in-the-blank/index.js +94 -0
  53. package/lib/plugins/respArea/explicit-constructed-response/index.js +120 -0
  54. package/lib/plugins/respArea/icons/index.js +95 -0
  55. package/lib/plugins/respArea/index.js +341 -0
  56. package/lib/plugins/respArea/inline-dropdown/index.js +126 -0
  57. package/lib/plugins/respArea/math-templated/index.js +130 -0
  58. package/lib/plugins/respArea/utils.js +125 -0
  59. package/lib/plugins/table/CustomTablePlugin.js +133 -0
  60. package/lib/plugins/table/__tests__/index.test.js +442 -0
  61. package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
  62. package/lib/plugins/table/icons/index.js +69 -0
  63. package/lib/plugins/table/index.js +483 -0
  64. package/lib/plugins/table/table-toolbar.js +187 -0
  65. package/lib/plugins/textAlign/icons/index.js +194 -0
  66. package/lib/plugins/textAlign/index.js +34 -0
  67. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
  68. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
  69. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
  70. package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
  71. package/lib/plugins/toolbar/default-toolbar.js +229 -0
  72. package/lib/plugins/toolbar/done-button.js +53 -0
  73. package/lib/plugins/toolbar/editor-and-toolbar.js +286 -0
  74. package/lib/plugins/toolbar/index.js +34 -0
  75. package/lib/plugins/toolbar/toolbar-buttons.js +194 -0
  76. package/lib/plugins/toolbar/toolbar.js +376 -0
  77. package/lib/plugins/utils.js +62 -0
  78. package/lib/serialization.js +677 -0
  79. package/lib/shared/alert-dialog.js +75 -0
  80. package/lib/theme.js +9 -0
  81. package/package.json +69 -0
  82. package/src/__tests__/editor.test.jsx +363 -0
  83. package/src/__tests__/serialization.test.js +291 -0
  84. package/src/__tests__/utils.js +36 -0
  85. package/src/block-tags.js +17 -0
  86. package/src/constants.js +7 -0
  87. package/src/editor.jsx +1197 -0
  88. package/src/extensions/characters.js +46 -0
  89. package/src/extensions/component.jsx +294 -0
  90. package/src/extensions/css.js +217 -0
  91. package/src/extensions/custom-toolbar-wrapper.jsx +100 -0
  92. package/src/extensions/image.js +55 -0
  93. package/src/extensions/math.js +259 -0
  94. package/src/extensions/media.js +182 -0
  95. package/src/extensions/responseArea.js +205 -0
  96. package/src/index.jsx +1462 -0
  97. package/src/old-index.jsx +162 -0
  98. package/src/parse-html.js +8 -0
  99. package/src/plugins/README.md +27 -0
  100. package/src/plugins/characters/custom-popper.js +48 -0
  101. package/src/plugins/characters/index.jsx +284 -0
  102. package/src/plugins/characters/utils.js +447 -0
  103. package/src/plugins/css/icons/index.jsx +17 -0
  104. package/src/plugins/css/index.jsx +340 -0
  105. package/src/plugins/customPlugin/index.jsx +85 -0
  106. package/src/plugins/html/icons/index.jsx +19 -0
  107. package/src/plugins/html/index.jsx +72 -0
  108. package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
  109. package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
  110. package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
  111. package/src/plugins/image/__tests__/component.test.jsx +41 -0
  112. package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
  113. package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
  114. package/src/plugins/image/__tests__/index.test.js +95 -0
  115. package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
  116. package/src/plugins/image/__tests__/mock-change.js +15 -0
  117. package/src/plugins/image/alt-dialog.jsx +82 -0
  118. package/src/plugins/image/component.jsx +343 -0
  119. package/src/plugins/image/image-toolbar.jsx +100 -0
  120. package/src/plugins/image/index.jsx +227 -0
  121. package/src/plugins/image/insert-image-handler.js +79 -0
  122. package/src/plugins/index.jsx +377 -0
  123. package/src/plugins/list/__tests__/index.test.js +54 -0
  124. package/src/plugins/list/index.jsx +305 -0
  125. package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
  126. package/src/plugins/math/__tests__/index.test.jsx +245 -0
  127. package/src/plugins/math/index.jsx +379 -0
  128. package/src/plugins/media/__tests__/index.test.js +75 -0
  129. package/src/plugins/media/index.jsx +325 -0
  130. package/src/plugins/media/media-dialog.js +624 -0
  131. package/src/plugins/media/media-toolbar.jsx +56 -0
  132. package/src/plugins/media/media-wrapper.jsx +43 -0
  133. package/src/plugins/rendering/index.js +31 -0
  134. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +215 -0
  135. package/src/plugins/respArea/drag-in-the-blank/index.jsx +70 -0
  136. package/src/plugins/respArea/explicit-constructed-response/index.jsx +92 -0
  137. package/src/plugins/respArea/icons/index.jsx +71 -0
  138. package/src/plugins/respArea/index.jsx +299 -0
  139. package/src/plugins/respArea/inline-dropdown/index.jsx +108 -0
  140. package/src/plugins/respArea/math-templated/index.jsx +104 -0
  141. package/src/plugins/respArea/utils.jsx +90 -0
  142. package/src/plugins/table/CustomTablePlugin.js +113 -0
  143. package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
  144. package/src/plugins/table/__tests__/index.test.jsx +401 -0
  145. package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
  146. package/src/plugins/table/icons/index.jsx +53 -0
  147. package/src/plugins/table/index.jsx +427 -0
  148. package/src/plugins/table/table-toolbar.jsx +136 -0
  149. package/src/plugins/textAlign/icons/index.jsx +114 -0
  150. package/src/plugins/textAlign/index.jsx +23 -0
  151. package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
  152. package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
  153. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
  154. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
  155. package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
  156. package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
  157. package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
  158. package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
  159. package/src/plugins/toolbar/default-toolbar.jsx +206 -0
  160. package/src/plugins/toolbar/done-button.jsx +38 -0
  161. package/src/plugins/toolbar/editor-and-toolbar.jsx +257 -0
  162. package/src/plugins/toolbar/index.jsx +23 -0
  163. package/src/plugins/toolbar/toolbar-buttons.jsx +138 -0
  164. package/src/plugins/toolbar/toolbar.jsx +338 -0
  165. package/src/plugins/utils.js +31 -0
  166. package/src/serialization.jsx +621 -0
  167. package/src/theme.js +1 -0
@@ -0,0 +1,390 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = CSSPlugin;
9
+ exports.removeDialogs = void 0;
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _reactDom = _interopRequireDefault(require("react-dom"));
14
+
15
+ var _List = _interopRequireDefault(require("@material-ui/core/List"));
16
+
17
+ var _slate = require("slate");
18
+
19
+ var _immutable = _interopRequireDefault(require("immutable"));
20
+
21
+ var _ListItem = _interopRequireDefault(require("@material-ui/core/ListItem"));
22
+
23
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
24
+
25
+ var _debug = _interopRequireDefault(require("debug"));
26
+
27
+ var _icons = _interopRequireDefault(require("./icons"));
28
+
29
+ var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:characters');
30
+
31
+ var removeDialogs = function removeDialogs() {
32
+ var prevDialogs = document.querySelectorAll('.insert-css-dialog');
33
+ log('[characters:removeDialogs]');
34
+ prevDialogs.forEach(function (s) {
35
+ return s.remove();
36
+ });
37
+ };
38
+
39
+ exports.removeDialogs = removeDialogs;
40
+
41
+ var insertDialog = function insertDialog(_ref) {
42
+ var _parentNode$data, _parentNode$data$get;
43
+
44
+ var editorDOM = _ref.editorDOM,
45
+ value = _ref.value,
46
+ callback = _ref.callback,
47
+ opts = _ref.opts,
48
+ textNode = _ref.textNode,
49
+ parentNode = _ref.parentNode;
50
+ var newEl = document.createElement('div');
51
+ log('[characters:insertDialog]');
52
+ removeDialogs();
53
+ newEl.className = 'insert-css-dialog';
54
+ var popoverEl;
55
+
56
+ var closePopOver = function closePopOver() {
57
+ if (popoverEl) {
58
+ popoverEl.remove();
59
+ }
60
+ };
61
+
62
+ var firstCallMade = false;
63
+
64
+ var listener = function listener(e) {
65
+ // this will be triggered right after setting it because
66
+ // this toolbar is added on the mousedown event
67
+ // so right after mouseup, the click will be triggered
68
+ if (firstCallMade) {
69
+ var focusIsInModals = newEl.contains(e.target) || popoverEl && popoverEl.contains(e.target);
70
+ var focusIsInEditor = editorDOM.contains(e.target);
71
+
72
+ if (!(focusIsInModals || focusIsInEditor)) {
73
+ handleClose();
74
+ }
75
+ } else {
76
+ firstCallMade = true;
77
+ }
78
+ };
79
+
80
+ var handleClose = function handleClose() {
81
+ callback(undefined, true);
82
+ newEl.remove();
83
+ closePopOver();
84
+ document.body.removeEventListener('click', listener);
85
+ };
86
+
87
+ var handleChange = function handleChange(name) {
88
+ callback(name, true);
89
+ newEl.remove();
90
+ closePopOver();
91
+ document.body.removeEventListener('click', listener);
92
+ };
93
+
94
+ var selectedText = textNode.text.slice(value.selection.anchorOffset, value.selection.focusOffset);
95
+ var parentNodeClass = parentNode === null || parentNode === void 0 ? void 0 : (_parentNode$data = parentNode.data) === null || _parentNode$data === void 0 ? void 0 : (_parentNode$data$get = _parentNode$data.get('attributes')) === null || _parentNode$data$get === void 0 ? void 0 : _parentNode$data$get["class"];
96
+
97
+ var createHTML = function createHTML(name) {
98
+ var html = "<span class=\"".concat(name, "\">").concat(selectedText, "</span>");
99
+
100
+ if (parentNode) {
101
+ var tag;
102
+
103
+ if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.object) === 'inline') {
104
+ tag = 'span';
105
+ }
106
+
107
+ if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.object) === 'block') {
108
+ tag = 'div';
109
+ }
110
+
111
+ html = "<".concat(tag, " class=\"").concat(parentNodeClass, "\">").concat(parentNode.text.slice(0, value.selection.anchorOffset)).concat(html).concat(parentNode.text.slice(value.selection.focusOffset), "</").concat(tag, ">");
112
+ }
113
+
114
+ return html;
115
+ };
116
+
117
+ var el = /*#__PURE__*/_react["default"].createElement("div", {
118
+ style: {
119
+ background: 'white',
120
+ height: 500,
121
+ padding: 20,
122
+ overflow: 'hidden',
123
+ display: 'flex',
124
+ flexFlow: 'column'
125
+ }
126
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Please choose a css class"), parentNodeClass && /*#__PURE__*/_react["default"].createElement("div", null, "The current parent has this class ", parentNodeClass), /*#__PURE__*/_react["default"].createElement(_List["default"], {
127
+ component: "nav",
128
+ style: {
129
+ overflow: 'scroll'
130
+ }
131
+ }, opts.names.map(function (name, i) {
132
+ return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], {
133
+ key: "rule-".concat(i),
134
+ button: true,
135
+ onClick: function onClick() {
136
+ return handleChange(name);
137
+ }
138
+ }, /*#__PURE__*/_react["default"].createElement("div", {
139
+ style: {
140
+ marginRight: 20
141
+ }
142
+ }, name), /*#__PURE__*/_react["default"].createElement("div", {
143
+ dangerouslySetInnerHTML: {
144
+ __html: createHTML(name)
145
+ }
146
+ }));
147
+ })));
148
+
149
+ _reactDom["default"].render(el, newEl, function () {
150
+ var cursorItem = document.querySelector("[data-key=\"".concat(value.anchorKey, "\"]"));
151
+
152
+ if (cursorItem) {
153
+ var bodyRect = editorDOM.parentElement.parentElement.parentElement.getBoundingClientRect();
154
+ var boundRect = cursorItem.getBoundingClientRect();
155
+ editorDOM.parentElement.parentElement.parentElement.appendChild(newEl);
156
+ newEl.style.maxWidth = '500px';
157
+ newEl.style.position = 'absolute';
158
+ newEl.style.top = 0;
159
+ newEl.style.zIndex = 99999;
160
+ var leftValue = "".concat(boundRect.left + Math.abs(bodyRect.left) + cursorItem.offsetWidth + 10, "px");
161
+ var rightValue = "".concat(boundRect.x, "px");
162
+ newEl.style.left = leftValue;
163
+ var leftAlignedWidth = newEl.offsetWidth;
164
+ newEl.style.left = 'unset';
165
+ newEl.style.right = rightValue;
166
+ var rightAlignedWidth = newEl.offsetWidth;
167
+ newEl.style.left = 'unset';
168
+ newEl.style.right = 'unset';
169
+
170
+ if (leftAlignedWidth >= rightAlignedWidth) {
171
+ newEl.style.left = leftValue;
172
+ } else {
173
+ newEl.style.right = rightValue;
174
+ }
175
+
176
+ document.body.addEventListener('click', listener);
177
+ }
178
+ });
179
+ };
180
+
181
+ var findParentNodeInfo = function findParentNodeInfo(value, textNode) {
182
+ var _closestInline$nodes, _closestBlock$nodes;
183
+
184
+ var closestInline = value.document.getClosestInline(value.selection.endKey);
185
+ var closestBlock = value.document.getClosestBlock(value.selection.endKey);
186
+ var nodeToUse = null;
187
+
188
+ if (closestInline !== null && closestInline !== void 0 && (_closestInline$nodes = closestInline.nodes) !== null && _closestInline$nodes !== void 0 && _closestInline$nodes.find(function (n) {
189
+ return n.key === textNode.key;
190
+ })) {
191
+ nodeToUse = closestInline;
192
+ }
193
+
194
+ if (closestBlock !== null && closestBlock !== void 0 && (_closestBlock$nodes = closestBlock.nodes) !== null && _closestBlock$nodes !== void 0 && _closestBlock$nodes.find(function (n) {
195
+ return n.key === textNode.key;
196
+ })) {
197
+ nodeToUse = closestBlock;
198
+ }
199
+
200
+ return nodeToUse;
201
+ };
202
+ /**
203
+ * Find the node that has a class attribute and return it.
204
+ * Keeping this in case the implementation of classes needs to be changed
205
+ * @param value
206
+ * @param opts
207
+ * @returns {*}
208
+ */
209
+
210
+
211
+ var getNodeWithClass = function getNodeWithClass(value, opts) {
212
+ var _blocksAtRange$, _inlinesAtRange$, _blockData$attributes, _inlineData$attribute;
213
+
214
+ var blocksAtRange = value.document.getBlocksAtRangeAsArray(value.selection);
215
+ var inlinesAtRange = value.document.getInlinesAtRangeAsArray(value.selection);
216
+ var blockData = ((_blocksAtRange$ = blocksAtRange[0]) === null || _blocksAtRange$ === void 0 ? void 0 : _blocksAtRange$.data.toJSON()) || {};
217
+ var inlineData = ((_inlinesAtRange$ = inlinesAtRange[0]) === null || _inlinesAtRange$ === void 0 ? void 0 : _inlinesAtRange$.data.toJSON()) || {};
218
+
219
+ if (!((_blockData$attributes = blockData.attributes) !== null && _blockData$attributes !== void 0 && _blockData$attributes["class"]) && !((_inlineData$attribute = inlineData.attributes) !== null && _inlineData$attribute !== void 0 && _inlineData$attribute["class"])) {
220
+ return null;
221
+ }
222
+
223
+ var _ref2 = blockData.attributes || {},
224
+ blockClass = _ref2["class"];
225
+
226
+ var _ref3 = inlineData.attributes || {},
227
+ inlineClass = _ref3["class"];
228
+
229
+ var inlineHasClass = opts.names.find(function (name) {
230
+ return inlineClass.includes(name);
231
+ });
232
+
233
+ if (inlineHasClass) {
234
+ return inlinesAtRange[0];
235
+ }
236
+
237
+ var blockHasClass = opts.names.find(function (name) {
238
+ return blockClass.includes(name);
239
+ });
240
+
241
+ if (blockHasClass) {
242
+ return blocksAtRange[0];
243
+ }
244
+
245
+ return null;
246
+ };
247
+ /**
248
+ * Plugin in order to be able to add a css clas that is provided through the model
249
+ * on a text element. Works like a mark (bold, italic etc.).
250
+ * @param opts
251
+ * @constructor
252
+ */
253
+
254
+
255
+ function CSSPlugin(opts) {
256
+ var plugin = {
257
+ name: 'extraCSSRules',
258
+ toolbar: {
259
+ isMark: true,
260
+ icon: /*#__PURE__*/_react["default"].createElement(_icons["default"], null),
261
+ ariaLabel: 'CSS editor',
262
+ type: 'css',
263
+ onToggle: function onToggle(change) {
264
+ var type = 'css';
265
+ var hasMark = change.value.activeMarks.find(function (entry) {
266
+ return entry.type === type;
267
+ });
268
+
269
+ if (hasMark) {
270
+ change.removeMark(hasMark);
271
+ } else {
272
+ var newMark = _slate.Mark.create(type);
273
+
274
+ change.addMark(newMark);
275
+ }
276
+
277
+ return change;
278
+ },
279
+ onClick: function onClick(value, onChange, getFocusedValue) {
280
+ var type = 'css';
281
+ var hasMark = value.activeMarks.find(function (entry) {
282
+ return entry.type === type;
283
+ });
284
+ var change = value.change();
285
+
286
+ if (hasMark) {
287
+ change.removeMark(hasMark);
288
+ onChange(change);
289
+ return;
290
+ } // keeping this if implementation needs to be changed to regular blocks instead of marks
291
+ // let nodeWithClass = getNodeWithClass(value, opts);
292
+ //
293
+ // if (nodeWithClass) {
294
+ // const nodeAttributes = nodeWithClass.data.get('attributes');
295
+ //
296
+ // opts.names.forEach((name) => {
297
+ // if (nodeAttributes.class.includes(name)) {
298
+ // nodeAttributes.class = nodeAttributes.class.replace(name, '');
299
+ // }
300
+ // });
301
+ //
302
+ // // keeping only one space between classes
303
+ // nodeAttributes.class = nodeAttributes.class.replace(/ +/g, ' ');
304
+ //
305
+ // nodeWithClass.data.set('attributes', nodeAttributes);
306
+ //
307
+ // let change = value.change();
308
+ // change.replaceNodeByKey(nodeWithClass.key, nodeWithClass);
309
+ //
310
+ // onChange(change);
311
+ // return;
312
+ // }
313
+
314
+
315
+ var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
316
+ var valueToUse = value;
317
+
318
+ var callback = function callback(className, focus) {
319
+ if (getFocusedValue) {
320
+ valueToUse = getFocusedValue() || valueToUse;
321
+ }
322
+
323
+ if (className) {
324
+ var _change = valueToUse.change();
325
+
326
+ var newMark = _slate.Mark.create({
327
+ object: 'mark',
328
+ type: 'css',
329
+ data: {
330
+ attributes: {
331
+ "class": className
332
+ }
333
+ }
334
+ });
335
+
336
+ _change.addMark(newMark); // keeping this if implementation needs to be changed to regular blocks instead of marks
337
+ // change = change.wrapInline({ type: 'span', data: { attributes: { class: className } } });
338
+ //
339
+ // // change = change.splitBlockAtRange(adaptedRange);
340
+ // //
341
+ // // const newBlock = change.value.document.getFurthestBlock(change.value.selection.endKey);
342
+ // //
343
+ // // change = change.setNodeByKey(newBlock.key, { data: { attributes: { class: className } } });
344
+ //
345
+ // valueToUse = change.value;
346
+ // log('[characters:insert]: ', value);
347
+
348
+
349
+ onChange(_change);
350
+ }
351
+
352
+ log('[characters:click]');
353
+
354
+ if (focus) {
355
+ setTimeout(function () {
356
+ if (editorDOM) {
357
+ editorDOM.focus();
358
+ }
359
+ }, 0);
360
+ }
361
+ };
362
+
363
+ var textNode = value.document.getTextsAtRangeAsArray(value.selection)[0];
364
+
365
+ if (textNode) {
366
+ var parentNode = findParentNodeInfo(value, textNode, opts);
367
+ insertDialog({
368
+ editorDOM: editorDOM,
369
+ value: valueToUse,
370
+ callback: callback,
371
+ opts: opts,
372
+ textNode: textNode,
373
+ parentNode: parentNode
374
+ });
375
+ }
376
+ }
377
+ },
378
+ renderMark: function renderMark(props) {
379
+ if (props.mark.type === 'css') {
380
+ var _ref4 = props.mark || {},
381
+ data = _ref4.data;
382
+
383
+ var jsonData = (data === null || data === void 0 ? void 0 : data.toJSON()) || {};
384
+ return /*#__PURE__*/_react["default"].createElement("span", jsonData.attributes, props.children);
385
+ }
386
+ }
387
+ };
388
+ return plugin;
389
+ }
390
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2Nzcy9pbmRleC5qc3giXSwibmFtZXMiOlsibG9nIiwicmVtb3ZlRGlhbG9ncyIsInByZXZEaWFsb2dzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInMiLCJyZW1vdmUiLCJpbnNlcnREaWFsb2ciLCJlZGl0b3JET00iLCJ2YWx1ZSIsImNhbGxiYWNrIiwib3B0cyIsInRleHROb2RlIiwicGFyZW50Tm9kZSIsIm5ld0VsIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInBvcG92ZXJFbCIsImNsb3NlUG9wT3ZlciIsImZpcnN0Q2FsbE1hZGUiLCJsaXN0ZW5lciIsImUiLCJmb2N1c0lzSW5Nb2RhbHMiLCJjb250YWlucyIsInRhcmdldCIsImZvY3VzSXNJbkVkaXRvciIsImhhbmRsZUNsb3NlIiwidW5kZWZpbmVkIiwiYm9keSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDaGFuZ2UiLCJuYW1lIiwic2VsZWN0ZWRUZXh0IiwidGV4dCIsInNsaWNlIiwic2VsZWN0aW9uIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJwYXJlbnROb2RlQ2xhc3MiLCJkYXRhIiwiZ2V0IiwiY3JlYXRlSFRNTCIsImh0bWwiLCJ0YWciLCJvYmplY3QiLCJlbCIsImJhY2tncm91bmQiLCJoZWlnaHQiLCJwYWRkaW5nIiwib3ZlcmZsb3ciLCJkaXNwbGF5IiwiZmxleEZsb3ciLCJuYW1lcyIsIm1hcCIsImkiLCJtYXJnaW5SaWdodCIsIl9faHRtbCIsIlJlYWN0RE9NIiwicmVuZGVyIiwiY3Vyc29ySXRlbSIsInF1ZXJ5U2VsZWN0b3IiLCJhbmNob3JLZXkiLCJib2R5UmVjdCIsInBhcmVudEVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3VuZFJlY3QiLCJhcHBlbmRDaGlsZCIsInN0eWxlIiwibWF4V2lkdGgiLCJwb3NpdGlvbiIsInRvcCIsInpJbmRleCIsImxlZnRWYWx1ZSIsImxlZnQiLCJNYXRoIiwiYWJzIiwib2Zmc2V0V2lkdGgiLCJyaWdodFZhbHVlIiwieCIsImxlZnRBbGlnbmVkV2lkdGgiLCJyaWdodCIsInJpZ2h0QWxpZ25lZFdpZHRoIiwiYWRkRXZlbnRMaXN0ZW5lciIsImZpbmRQYXJlbnROb2RlSW5mbyIsImNsb3Nlc3RJbmxpbmUiLCJnZXRDbG9zZXN0SW5saW5lIiwiZW5kS2V5IiwiY2xvc2VzdEJsb2NrIiwiZ2V0Q2xvc2VzdEJsb2NrIiwibm9kZVRvVXNlIiwibm9kZXMiLCJmaW5kIiwibiIsImtleSIsImdldE5vZGVXaXRoQ2xhc3MiLCJibG9ja3NBdFJhbmdlIiwiZ2V0QmxvY2tzQXRSYW5nZUFzQXJyYXkiLCJpbmxpbmVzQXRSYW5nZSIsImdldElubGluZXNBdFJhbmdlQXNBcnJheSIsImJsb2NrRGF0YSIsInRvSlNPTiIsImlubGluZURhdGEiLCJhdHRyaWJ1dGVzIiwiYmxvY2tDbGFzcyIsImlubGluZUNsYXNzIiwiaW5saW5lSGFzQ2xhc3MiLCJpbmNsdWRlcyIsImJsb2NrSGFzQ2xhc3MiLCJDU1NQbHVnaW4iLCJwbHVnaW4iLCJ0b29sYmFyIiwiaXNNYXJrIiwiaWNvbiIsImFyaWFMYWJlbCIsInR5cGUiLCJvblRvZ2dsZSIsImNoYW5nZSIsImhhc01hcmsiLCJhY3RpdmVNYXJrcyIsImVudHJ5IiwicmVtb3ZlTWFyayIsIm5ld01hcmsiLCJNYXJrIiwiY3JlYXRlIiwiYWRkTWFyayIsIm9uQ2xpY2siLCJvbkNoYW5nZSIsImdldEZvY3VzZWRWYWx1ZSIsInZhbHVlVG9Vc2UiLCJmb2N1cyIsInNldFRpbWVvdXQiLCJnZXRUZXh0c0F0UmFuZ2VBc0FycmF5IiwicmVuZGVyTWFyayIsInByb3BzIiwibWFyayIsImpzb25EYXRhIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0s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QixFQUErQjtBQUM3QixvQkFBaUJtQixLQUFLLENBQUNDLElBQU4sSUFBYyxFQUEvQjtBQUFBLFlBQVEvRixJQUFSLFNBQVFBLElBQVI7O0FBQ0EsWUFBTWdHLFFBQVEsR0FBRyxDQUFBaEcsSUFBSSxTQUFKLElBQUFBLElBQUksV0FBSixZQUFBQSxJQUFJLENBQUU2RCxNQUFOLE9BQWtCLEVBQW5DO0FBRUEsNEJBQU8sd0NBQVVtQyxRQUFRLENBQUNqQyxVQUFuQixFQUFnQytCLEtBQUssQ0FBQ0csUUFBdEMsQ0FBUDtBQUNEO0FBQ0Y7QUEzSFksR0FBZjtBQThIQSxTQUFPM0IsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IExpc3QgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvTGlzdCc7XG5pbXBvcnQgeyBMZWFmLCBNYXJrIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IEltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0xpc3RJdGVtJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgQ3NzSWNvbiBmcm9tICcuL2ljb25zJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczpjaGFyYWN0ZXJzJyk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVEaWFsb2dzID0gKCkgPT4ge1xuICBjb25zdCBwcmV2RGlhbG9ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnNlcnQtY3NzLWRpYWxvZycpO1xuXG4gIGxvZygnW2NoYXJhY3RlcnM6cmVtb3ZlRGlhbG9nc10nKTtcbiAgcHJldkRpYWxvZ3MuZm9yRWFjaCgocykgPT4gcy5yZW1vdmUoKSk7XG59O1xuXG5jb25zdCBpbnNlcnREaWFsb2cgPSAoeyBlZGl0b3JET00sIHZhbHVlLCBjYWxsYmFjaywgb3B0cywgdGV4dE5vZGUsIHBhcmVudE5vZGUgfSkgPT4ge1xuICBjb25zdCBuZXdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGxvZygnW2NoYXJhY3RlcnM6aW5zZXJ0RGlhbG9nXScpO1xuXG4gIHJlbW92ZURpYWxvZ3MoKTtcblxuICBuZXdFbC5jbGFzc05hbWUgPSAnaW5zZXJ0LWNzcy1kaWFsb2cnO1xuXG4gIGxldCBwb3BvdmVyRWw7XG5cbiAgY29uc3QgY2xvc2VQb3BPdmVyID0gKCkgPT4ge1xuICAgIGlmIChwb3BvdmVyRWwpIHtcbiAgICAgIHBvcG92ZXJFbC5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgbGV0IGZpcnN0Q2FsbE1hZGUgPSBmYWxzZTtcblxuICBjb25zdCBsaXN0ZW5lciA9IChlKSA9PiB7XG4gICAgLy8gdGhpcyB3aWxsIGJlIHRyaWdnZXJlZCByaWdodCBhZnRlciBzZXR0aW5nIGl0IGJlY2F1c2VcbiAgICAvLyB0aGlzIHRvb2xiYXIgaXMgYWRkZWQgb24gdGhlIG1vdXNlZG93biBldmVudFxuICAgIC8vIHNvIHJpZ2h0IGFmdGVyIG1vdXNldXAsIHRoZSBjbGljayB3aWxsIGJlIHRyaWdnZXJlZFxuICAgIGlmIChmaXJzdENhbGxNYWRlKSB7XG4gICAgICBjb25zdCBmb2N1c0lzSW5Nb2RhbHMgPSBuZXdFbC5jb250YWlucyhlLnRhcmdldCkgfHwgKHBvcG92ZXJFbCAmJiBwb3BvdmVyRWwuY29udGFpbnMoZS50YXJnZXQpKTtcbiAgICAgIGNvbnN0IGZvY3VzSXNJbkVkaXRvciA9IGVkaXRvckRPTS5jb250YWlucyhlLnRhcmdldCk7XG5cbiAgICAgIGlmICghKGZvY3VzSXNJbk1vZGFscyB8fCBmb2N1c0lzSW5FZGl0b3IpKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0Q2FsbE1hZGUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBjYWxsYmFjayh1bmRlZmluZWQsIHRydWUpO1xuICAgIG5ld0VsLnJlbW92ZSgpO1xuICAgIGNsb3NlUG9wT3ZlcigpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKG5hbWUpID0+IHtcbiAgICBjYWxsYmFjayhuYW1lLCB0cnVlKTtcbiAgICBuZXdFbC5yZW1vdmUoKTtcbiAgICBjbG9zZVBvcE92ZXIoKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIpO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdGVkVGV4dCA9IHRleHROb2RlLnRleHQuc2xpY2UodmFsdWUuc2VsZWN0aW9uLmFuY2hvck9mZnNldCwgdmFsdWUuc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KTtcbiAgY29uc3QgcGFyZW50Tm9kZUNsYXNzID0gcGFyZW50Tm9kZT8uZGF0YT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmNsYXNzO1xuICBjb25zdCBjcmVhdGVIVE1MID0gKG5hbWUpID0+IHtcbiAgICBsZXQgaHRtbCA9IGA8c3BhbiBjbGFzcz1cIiR7bmFtZX1cIj4ke3NlbGVjdGVkVGV4dH08L3NwYW4+YDtcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICBsZXQgdGFnO1xuXG4gICAgICBpZiAocGFyZW50Tm9kZT8ub2JqZWN0ID09PSAnaW5saW5lJykge1xuICAgICAgICB0YWcgPSAnc3Bhbic7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnROb2RlPy5vYmplY3QgPT09ICdibG9jaycpIHtcbiAgICAgICAgdGFnID0gJ2Rpdic7XG4gICAgICB9XG5cbiAgICAgIGh0bWwgPSBgPCR7dGFnfSBjbGFzcz1cIiR7cGFyZW50Tm9kZUNsYXNzfVwiPiR7cGFyZW50Tm9kZS50ZXh0LnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICB2YWx1ZS5zZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuICAgICAgKX0ke2h0bWx9JHtwYXJlbnROb2RlLnRleHQuc2xpY2UodmFsdWUuc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KX08LyR7dGFnfT5gO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIGNvbnN0IGVsID0gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGJhY2tncm91bmQ6ICd3aGl0ZScsIGhlaWdodDogNTAwLCBwYWRkaW5nOiAyMCwgb3ZlcmZsb3c6ICdoaWRkZW4nLCBkaXNwbGF5OiAnZmxleCcsIGZsZXhGbG93OiAnY29sdW1uJyB9fVxuICAgID5cbiAgICAgIDxoMj5QbGVhc2UgY2hvb3NlIGEgY3NzIGNsYXNzPC9oMj5cbiAgICAgIHtwYXJlbnROb2RlQ2xhc3MgJiYgPGRpdj5UaGUgY3VycmVudCBwYXJlbnQgaGFzIHRoaXMgY2xhc3Mge3BhcmVudE5vZGVDbGFzc308L2Rpdj59XG4gICAgICA8TGlzdCBjb21wb25lbnQ9XCJuYXZcIiBzdHlsZT17eyBvdmVyZmxvdzogJ3Njcm9sbCcgfX0+XG4gICAgICAgIHtvcHRzLm5hbWVzLm1hcCgobmFtZSwgaSkgPT4gKFxuICAgICAgICAgIDxMaXN0SXRlbSBrZXk9e2BydWxlLSR7aX1gfSBidXR0b24gb25DbGljaz17KCkgPT4gaGFuZGxlQ2hhbmdlKG5hbWUpfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDIwIH19PntuYW1lfTwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgIF9faHRtbDogY3JlYXRlSFRNTChuYW1lKSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgKSl9XG4gICAgICA8L0xpc3Q+XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgUmVhY3RET00ucmVuZGVyKGVsLCBuZXdFbCwgKCkgPT4ge1xuICAgIGNvbnN0IGN1cnNvckl0ZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1rZXk9XCIke3ZhbHVlLmFuY2hvcktleX1cIl1gKTtcblxuICAgIGlmIChjdXJzb3JJdGVtKSB7XG4gICAgICBjb25zdCBib2R5UmVjdCA9IGVkaXRvckRPTS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGJvdW5kUmVjdCA9IGN1cnNvckl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGVkaXRvckRPTS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChuZXdFbCk7XG5cbiAgICAgIG5ld0VsLnN0eWxlLm1heFdpZHRoID0gJzUwMHB4JztcbiAgICAgIG5ld0VsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIG5ld0VsLnN0eWxlLnRvcCA9IDA7XG4gICAgICBuZXdFbC5zdHlsZS56SW5kZXggPSA5OTk5OTtcblxuICAgICAgY29uc3QgbGVmdFZhbHVlID0gYCR7Ym91bmRSZWN0LmxlZnQgKyBNYXRoLmFicyhib2R5UmVjdC5sZWZ0KSArIGN1cnNvckl0ZW0ub2Zmc2V0V2lkdGggKyAxMH1weGA7XG5cbiAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSBgJHtib3VuZFJlY3QueH1weGA7XG5cbiAgICAgIG5ld0VsLnN0eWxlLmxlZnQgPSBsZWZ0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGxlZnRBbGlnbmVkV2lkdGggPSBuZXdFbC5vZmZzZXRXaWR0aDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9ICd1bnNldCc7XG4gICAgICBuZXdFbC5zdHlsZS5yaWdodCA9IHJpZ2h0VmFsdWU7XG5cbiAgICAgIGNvbnN0IHJpZ2h0QWxpZ25lZFdpZHRoID0gbmV3RWwub2Zmc2V0V2lkdGg7XG5cbiAgICAgIG5ld0VsLnN0eWxlLmxlZnQgPSAndW5zZXQnO1xuICAgICAgbmV3RWwuc3R5bGUucmlnaHQgPSAndW5zZXQnO1xuXG4gICAgICBpZiAobGVmdEFsaWduZWRXaWR0aCA+PSByaWdodEFsaWduZWRXaWR0aCkge1xuICAgICAgICBuZXdFbC5zdHlsZS5sZWZ0ID0gbGVmdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RWwuc3R5bGUucmlnaHQgPSByaWdodFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBmaW5kUGFyZW50Tm9kZUluZm8gPSAodmFsdWUsIHRleHROb2RlKSA9PiB7XG4gIGNvbnN0IGNsb3Nlc3RJbmxpbmUgPSB2YWx1ZS5kb2N1bWVudC5nZXRDbG9zZXN0SW5saW5lKHZhbHVlLnNlbGVjdGlvbi5lbmRLZXkpO1xuICBjb25zdCBjbG9zZXN0QmxvY2sgPSB2YWx1ZS5kb2N1bWVudC5nZXRDbG9zZXN0QmxvY2sodmFsdWUuc2VsZWN0aW9uLmVuZEtleSk7XG4gIGxldCBub2RlVG9Vc2UgPSBudWxsO1xuXG4gIGlmIChjbG9zZXN0SW5saW5lPy5ub2Rlcz8uZmluZCgobikgPT4gbi5rZXkgPT09IHRleHROb2RlLmtleSkpIHtcbiAgICBub2RlVG9Vc2UgPSBjbG9zZXN0SW5saW5lO1xuICB9XG5cbiAgaWYgKGNsb3Nlc3RCbG9jaz8ubm9kZXM/LmZpbmQoKG4pID0+IG4ua2V5ID09PSB0ZXh0Tm9kZS5rZXkpKSB7XG4gICAgbm9kZVRvVXNlID0gY2xvc2VzdEJsb2NrO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVUb1VzZTtcbn07XG5cbi8qKlxuICogRmluZCB0aGUgbm9kZSB0aGF0IGhhcyBhIGNsYXNzIGF0dHJpYnV0ZSBhbmQgcmV0dXJuIGl0LlxuICogS2VlcGluZyB0aGlzIGluIGNhc2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNsYXNzZXMgbmVlZHMgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gb3B0c1xuICogQHJldHVybnMgeyp9XG4gKi9cbmNvbnN0IGdldE5vZGVXaXRoQ2xhc3MgPSAodmFsdWUsIG9wdHMpID0+IHtcbiAgY29uc3QgYmxvY2tzQXRSYW5nZSA9IHZhbHVlLmRvY3VtZW50LmdldEJsb2Nrc0F0UmFuZ2VBc0FycmF5KHZhbHVlLnNlbGVjdGlvbik7XG4gIGNvbnN0IGlubGluZXNBdFJhbmdlID0gdmFsdWUuZG9jdW1lbnQuZ2V0SW5saW5lc0F0UmFuZ2VBc0FycmF5KHZhbHVlLnNlbGVjdGlvbik7XG4gIGNvbnN0IGJsb2NrRGF0YSA9IGJsb2Nrc0F0UmFuZ2VbMF0/LmRhdGEudG9KU09OKCkgfHwge307XG4gIGNvbnN0IGlubGluZURhdGEgPSBpbmxpbmVzQXRSYW5nZVswXT8uZGF0YS50b0pTT04oKSB8fCB7fTtcblxuICBpZiAoIWJsb2NrRGF0YS5hdHRyaWJ1dGVzPy5jbGFzcyAmJiAhaW5saW5lRGF0YS5hdHRyaWJ1dGVzPy5jbGFzcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBjbGFzczogYmxvY2tDbGFzcyB9ID0gYmxvY2tEYXRhLmF0dHJpYnV0ZXMgfHwge307XG4gIGNvbnN0IHsgY2xhc3M6IGlubGluZUNsYXNzIH0gPSBpbmxpbmVEYXRhLmF0dHJpYnV0ZXMgfHwge307XG4gIGNvbnN0IGlubGluZUhhc0NsYXNzID0gb3B0cy5uYW1lcy5maW5kKChuYW1lKSA9PiBpbmxpbmVDbGFzcy5pbmNsdWRlcyhuYW1lKSk7XG5cbiAgaWYgKGlubGluZUhhc0NsYXNzKSB7XG4gICAgcmV0dXJuIGlubGluZXNBdFJhbmdlWzBdO1xuICB9XG5cbiAgY29uc3QgYmxvY2tIYXNDbGFzcyA9IG9wdHMubmFtZXMuZmluZCgobmFtZSkgPT4gYmxvY2tDbGFzcy5pbmNsdWRlcyhuYW1lKSk7XG5cbiAgaWYgKGJsb2NrSGFzQ2xhc3MpIHtcbiAgICByZXR1cm4gYmxvY2tzQXRSYW5nZVswXTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBQbHVnaW4gaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBhZGQgYSBjc3MgY2xhcyB0aGF0IGlzIHByb3ZpZGVkIHRocm91Z2ggdGhlIG1vZGVsXG4gKiBvbiBhIHRleHQgZWxlbWVudC4gV29ya3MgbGlrZSBhIG1hcmsgKGJvbGQsIGl0YWxpYyBldGMuKS5cbiAqIEBwYXJhbSBvcHRzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ1NTUGx1Z2luKG9wdHMpIHtcbiAgY29uc3QgcGx1Z2luID0ge1xuICAgIG5hbWU6ICdleHRyYUNTU1J1bGVzJyxcbiAgICB0b29sYmFyOiB7XG4gICAgICBpc01hcms6IHRydWUsXG4gICAgICBpY29uOiA8Q3NzSWNvbiAvPixcbiAgICAgIGFyaWFMYWJlbDogJ0NTUyBlZGl0b3InLFxuICAgICAgdHlwZTogJ2NzcycsXG4gICAgICBvblRvZ2dsZTogKGNoYW5nZSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlID0gJ2Nzcyc7XG4gICAgICAgIGNvbnN0IGhhc01hcmsgPSBjaGFuZ2UudmFsdWUuYWN0aXZlTWFya3MuZmluZCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50cnkudHlwZSA9PT0gdHlwZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGhhc01hcmspIHtcbiAgICAgICAgICBjaGFuZ2UucmVtb3ZlTWFyayhoYXNNYXJrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdNYXJrID0gTWFyay5jcmVhdGUodHlwZSk7XG5cbiAgICAgICAgICBjaGFuZ2UuYWRkTWFyayhuZXdNYXJrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgICB9LFxuICAgICAgb25DbGljazogKHZhbHVlLCBvbkNoYW5nZSwgZ2V0Rm9jdXNlZFZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSAnY3NzJztcbiAgICAgICAgY29uc3QgaGFzTWFyayA9IHZhbHVlLmFjdGl2ZU1hcmtzLmZpbmQoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVudHJ5LnR5cGUgPT09IHR5cGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKTtcblxuICAgICAgICBpZiAoaGFzTWFyaykge1xuICAgICAgICAgIGNoYW5nZS5yZW1vdmVNYXJrKGhhc01hcmspO1xuICAgICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8ga2VlcGluZyB0aGlzIGlmIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gcmVndWxhciBibG9ja3MgaW5zdGVhZCBvZiBtYXJrc1xuICAgICAgICAvLyBsZXQgbm9kZVdpdGhDbGFzcyA9IGdldE5vZGVXaXRoQ2xhc3ModmFsdWUsIG9wdHMpO1xuICAgICAgICAvL1xuICAgICAgICAvLyBpZiAobm9kZVdpdGhDbGFzcykge1xuICAgICAgICAvLyAgIGNvbnN0IG5vZGVBdHRyaWJ1dGVzID0gbm9kZVdpdGhDbGFzcy5kYXRhLmdldCgnYXR0cmlidXRlcycpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgIG9wdHMubmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAvLyAgICAgaWYgKG5vZGVBdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgIC8vICAgICAgIG5vZGVBdHRyaWJ1dGVzLmNsYXNzID0gbm9kZUF0dHJpYnV0ZXMuY2xhc3MucmVwbGFjZShuYW1lLCAnJyk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgfSk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgLy8ga2VlcGluZyBvbmx5IG9uZSBzcGFjZSBiZXR3ZWVuIGNsYXNzZXNcbiAgICAgICAgLy8gICBub2RlQXR0cmlidXRlcy5jbGFzcyA9IG5vZGVBdHRyaWJ1dGVzLmNsYXNzLnJlcGxhY2UoLyArL2csICcgJyk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgbm9kZVdpdGhDbGFzcy5kYXRhLnNldCgnYXR0cmlidXRlcycsIG5vZGVBdHRyaWJ1dGVzKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICBsZXQgY2hhbmdlID0gdmFsdWUuY2hhbmdlKCk7XG4gICAgICAgIC8vICAgY2hhbmdlLnJlcGxhY2VOb2RlQnlLZXkobm9kZVdpdGhDbGFzcy5rZXksIG5vZGVXaXRoQ2xhc3MpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgZWRpdG9yRE9NID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2RhdGEta2V5PVwiJHt2YWx1ZS5kb2N1bWVudC5rZXl9XCJdYCk7XG4gICAgICAgIGxldCB2YWx1ZVRvVXNlID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoY2xhc3NOYW1lLCBmb2N1cykgPT4ge1xuICAgICAgICAgIGlmIChnZXRGb2N1c2VkVmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlVG9Vc2UgPSBnZXRGb2N1c2VkVmFsdWUoKSB8fCB2YWx1ZVRvVXNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGxldCBjaGFuZ2UgPSB2YWx1ZVRvVXNlLmNoYW5nZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBuZXdNYXJrID0gTWFyay5jcmVhdGUoe1xuICAgICAgICAgICAgICBvYmplY3Q6ICdtYXJrJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NzcycsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2hhbmdlLmFkZE1hcmsobmV3TWFyayk7XG4gICAgICAgICAgICAvLyBrZWVwaW5nIHRoaXMgaWYgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gYmUgY2hhbmdlZCB0byByZWd1bGFyIGJsb2NrcyBpbnN0ZWFkIG9mIG1hcmtzXG4gICAgICAgICAgICAvLyBjaGFuZ2UgPSBjaGFuZ2Uud3JhcElubGluZSh7IHR5cGU6ICdzcGFuJywgZGF0YTogeyBhdHRyaWJ1dGVzOiB7IGNsYXNzOiBjbGFzc05hbWUgfSB9IH0pO1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIC8vIGNoYW5nZSA9IGNoYW5nZS5zcGxpdEJsb2NrQXRSYW5nZShhZGFwdGVkUmFuZ2UpO1xuICAgICAgICAgICAgLy8gLy9cbiAgICAgICAgICAgIC8vIC8vIGNvbnN0IG5ld0Jsb2NrID0gY2hhbmdlLnZhbHVlLmRvY3VtZW50LmdldEZ1cnRoZXN0QmxvY2soY2hhbmdlLnZhbHVlLnNlbGVjdGlvbi5lbmRLZXkpO1xuICAgICAgICAgICAgLy8gLy9cbiAgICAgICAgICAgIC8vIC8vIGNoYW5nZSA9IGNoYW5nZS5zZXROb2RlQnlLZXkobmV3QmxvY2sua2V5LCB7IGRhdGE6IHsgYXR0cmlidXRlczogeyBjbGFzczogY2xhc3NOYW1lIH0gfSB9KTtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyB2YWx1ZVRvVXNlID0gY2hhbmdlLnZhbHVlO1xuICAgICAgICAgICAgLy8gbG9nKCdbY2hhcmFjdGVyczppbnNlcnRdOiAnLCB2YWx1ZSk7XG4gICAgICAgICAgICBvbkNoYW5nZShjaGFuZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxvZygnW2NoYXJhY3RlcnM6Y2xpY2tdJyk7XG5cbiAgICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZWRpdG9yRE9NKSB7XG4gICAgICAgICAgICAgICAgZWRpdG9yRE9NLmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdGV4dE5vZGUgPSB2YWx1ZS5kb2N1bWVudC5nZXRUZXh0c0F0UmFuZ2VBc0FycmF5KHZhbHVlLnNlbGVjdGlvbilbMF07XG5cbiAgICAgICAgaWYgKHRleHROb2RlKSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IGZpbmRQYXJlbnROb2RlSW5mbyh2YWx1ZSwgdGV4dE5vZGUsIG9wdHMpO1xuXG4gICAgICAgICAgaW5zZXJ0RGlhbG9nKHsgZWRpdG9yRE9NLCB2YWx1ZTogdmFsdWVUb1VzZSwgY2FsbGJhY2ssIG9wdHMsIHRleHROb2RlLCBwYXJlbnROb2RlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVuZGVyTWFyayhwcm9wcykge1xuICAgICAgaWYgKHByb3BzLm1hcmsudHlwZSA9PT0gJ2NzcycpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBwcm9wcy5tYXJrIHx8IHt9O1xuICAgICAgICBjb25zdCBqc29uRGF0YSA9IGRhdGE/LnRvSlNPTigpIHx8IHt9O1xuXG4gICAgICAgIHJldHVybiA8c3BhbiB7Li4uanNvbkRhdGEuYXR0cmlidXRlc30+e3Byb3BzLmNoaWxkcmVufTwvc3Bhbj47XG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gcGx1Z2luO1xufVxuIl19
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ICON_TYPE = exports.CONTENT_TYPE = void 0;
9
+ exports["default"] = CustomPlugin;
10
+
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+
13
+ var _react = _interopRequireDefault(require("react"));
14
+
15
+ var _serialization = require("../../serialization");
16
+
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+
21
+ // We're possibly going to have to support content types, so starting it as an enum
22
+ var CONTENT_TYPE = {
23
+ FRAGMENT: 'FRAGMENT'
24
+ }; // We're possibly going to have to support multiple icon types, so starting it as an enum
25
+
26
+ exports.CONTENT_TYPE = CONTENT_TYPE;
27
+ var ICON_TYPE = {
28
+ SVG: 'SVG'
29
+ };
30
+ exports.ICON_TYPE = ICON_TYPE;
31
+
32
+ var getIcon = function getIcon(customPluginProps) {
33
+ var svg = customPluginProps.icon;
34
+
35
+ switch (customPluginProps.iconType) {
36
+ case ICON_TYPE.SVG:
37
+ return /*#__PURE__*/_react["default"].createElement("span", {
38
+ style: {
39
+ width: 28,
40
+ height: 28
41
+ },
42
+ dangerouslySetInnerHTML: {
43
+ __html: svg
44
+ }
45
+ });
46
+
47
+ default:
48
+ return /*#__PURE__*/_react["default"].createElement("span", null, customPluginProps.iconAlt);
49
+ }
50
+ };
51
+
52
+ function CustomPlugin(type, customPluginProps) {
53
+ var toolbar = {
54
+ icon: getIcon(customPluginProps),
55
+ onClick: function onClick(value, onChange, getFocusedValue) {
56
+ var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
57
+ var valueToUse = value;
58
+
59
+ var callback = function callback(_ref, focus) {
60
+ var customContent = _ref.customContent,
61
+ contentType = _ref.contentType;
62
+ valueToUse = getFocusedValue();
63
+
64
+ switch (contentType) {
65
+ case CONTENT_TYPE.FRAGMENT:
66
+ default:
67
+ {
68
+ var contentValue = (0, _serialization.htmlToValue)(customContent);
69
+ var change = valueToUse.change().insertFragment(contentValue.document);
70
+ valueToUse = change.value;
71
+ onChange(change);
72
+ break;
73
+ }
74
+ }
75
+
76
+ if (focus) {
77
+ if (editorDOM) {
78
+ editorDOM.focus();
79
+ }
80
+ }
81
+ }; // NOTE: the emitted event (custom event named by client) will be suffixed with "PIE-"
82
+
83
+
84
+ window.dispatchEvent(new CustomEvent("PIE-".concat(customPluginProps.event), {
85
+ detail: _objectSpread(_objectSpread({}, customPluginProps), {}, {
86
+ callback: callback
87
+ })
88
+ }));
89
+ },
90
+ supports: function supports(node) {
91
+ return node.object === 'inline' && node.type === type;
92
+ }
93
+ };
94
+ return {
95
+ name: type,
96
+ toolbar: toolbar,
97
+ renderNode: function renderNode(props) {
98
+ if (props.node.type === type) {
99
+ var node = props.node;
100
+ var data = node.data;
101
+ var jsonData = data.toJSON();
102
+ var customContent = jsonData.customContent,
103
+ contentType = jsonData.contentType;
104
+
105
+ switch (contentType) {
106
+ case CONTENT_TYPE.FRAGMENT:
107
+ default:
108
+ return customContent;
109
+ }
110
+ }
111
+ }
112
+ };
113
+ }
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2N1c3RvbVBsdWdpbi9pbmRleC5qc3giXSwibmFtZXMiOlsiQ09OVEVOVF9UWVBFIiwiRlJBR01FTlQiLCJJQ09OX1RZUEUiLCJTVkciLCJnZXRJY29uIiwiY3VzdG9tUGx1Z2luUHJvcHMiLCJzdmciLCJpY29uIiwiaWNvblR5cGUiLCJ3aWR0aCIsImhlaWdodCIsIl9faHRtbCIsImljb25BbHQiLCJDdXN0b21QbHVnaW4iLCJ0eXBlIiwidG9vbGJhciIsIm9uQ2xpY2siLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiZ2V0Rm9jdXNlZFZhbHVlIiwiZWRpdG9yRE9NIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwia2V5IiwidmFsdWVUb1VzZSIsImNhbGxiYWNrIiwiZm9jdXMiLCJjdXN0b21Db250ZW50IiwiY29udGVudFR5cGUiLCJjb250ZW50VmFsdWUiLCJjaGFuZ2UiLCJpbnNlcnRGcmFnbWVudCIsIndpbmRvdyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImV2ZW50IiwiZGV0YWlsIiwic3VwcG9ydHMiLCJub2RlIiwib2JqZWN0IiwibmFtZSIsInJlbmRlck5vZGUiLCJwcm9wcyIsImRhdGEiLCJqc29uRGF0YSIsInRvSlNPTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7Ozs7OztBQUVBO0FBQ08sSUFBTUEsWUFBWSxHQUFHO0FBQzFCQyxFQUFBQSxRQUFRLEVBQUU7QUFEZ0IsQ0FBckIsQyxDQUlQOzs7QUFDTyxJQUFNQyxTQUFTLEdBQUc7QUFDdkJDLEVBQUFBLEdBQUcsRUFBRTtBQURrQixDQUFsQjs7O0FBSVAsSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsaUJBQUQsRUFBdUI7QUFDckMsTUFBTUMsR0FBRyxHQUFHRCxpQkFBaUIsQ0FBQ0UsSUFBOUI7O0FBRUEsVUFBUUYsaUJBQWlCLENBQUNHLFFBQTFCO0FBQ0UsU0FBS04sU0FBUyxDQUFDQyxHQUFmO0FB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGh0bWxUb1ZhbHVlIH0gZnJvbSAnLi4vLi4vc2VyaWFsaXphdGlvbic7XG5cbi8vIFdlJ3JlIHBvc3NpYmx5IGdvaW5nIHRvIGhhdmUgdG8gc3VwcG9ydCBjb250ZW50IHR5cGVzLCBzbyBzdGFydGluZyBpdCBhcyBhbiBlbnVtXG5leHBvcnQgY29uc3QgQ09OVEVOVF9UWVBFID0ge1xuICBGUkFHTUVOVDogJ0ZSQUdNRU5UJyxcbn07XG5cbi8vIFdlJ3JlIHBvc3NpYmx5IGdvaW5nIHRvIGhhdmUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpY29uIHR5cGVzLCBzbyBzdGFydGluZyBpdCBhcyBhbiBlbnVtXG5leHBvcnQgY29uc3QgSUNPTl9UWVBFID0ge1xuICBTVkc6ICdTVkcnLFxufTtcblxuY29uc3QgZ2V0SWNvbiA9IChjdXN0b21QbHVnaW5Qcm9wcykgPT4ge1xuICBjb25zdCBzdmcgPSBjdXN0b21QbHVnaW5Qcm9wcy5pY29uO1xuXG4gIHN3aXRjaCAoY3VzdG9tUGx1Z2luUHJvcHMuaWNvblR5cGUpIHtcbiAgICBjYXNlIElDT05fVFlQRS5TVkc6XG4gICAgICByZXR1cm4gPHNwYW4gc3R5bGU9e3sgd2lkdGg6IDI4LCBoZWlnaHQ6IDI4IH19IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogc3ZnIH19IC8+O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gPHNwYW4+e2N1c3RvbVBsdWdpblByb3BzLmljb25BbHR9PC9zcGFuPjtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tUGx1Z2luKHR5cGUsIGN1c3RvbVBsdWdpblByb3BzKSB7XG4gIGNvbnN0IHRvb2xiYXIgPSB7XG4gICAgaWNvbjogZ2V0SWNvbihjdXN0b21QbHVnaW5Qcm9wcyksXG4gICAgb25DbGljazogKHZhbHVlLCBvbkNoYW5nZSwgZ2V0Rm9jdXNlZFZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBlZGl0b3JET00gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1rZXk9XCIke3ZhbHVlLmRvY3VtZW50LmtleX1cIl1gKTtcbiAgICAgIGxldCB2YWx1ZVRvVXNlID0gdmFsdWU7XG4gICAgICBjb25zdCBjYWxsYmFjayA9ICh7IGN1c3RvbUNvbnRlbnQsIGNvbnRlbnRUeXBlIH0sIGZvY3VzKSA9PiB7XG4gICAgICAgIHZhbHVlVG9Vc2UgPSBnZXRGb2N1c2VkVmFsdWUoKTtcblxuICAgICAgICBzd2l0Y2ggKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgY2FzZSBDT05URU5UX1RZUEUuRlJBR01FTlQ6XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgY29udGVudFZhbHVlID0gaHRtbFRvVmFsdWUoY3VzdG9tQ29udGVudCk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2UgPSB2YWx1ZVRvVXNlLmNoYW5nZSgpLmluc2VydEZyYWdtZW50KGNvbnRlbnRWYWx1ZS5kb2N1bWVudCk7XG5cbiAgICAgICAgICAgIHZhbHVlVG9Vc2UgPSBjaGFuZ2UudmFsdWU7XG4gICAgICAgICAgICBvbkNoYW5nZShjaGFuZ2UpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICBpZiAoZWRpdG9yRE9NKSB7XG4gICAgICAgICAgICBlZGl0b3JET00uZm9jdXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIE5PVEU6IHRoZSBlbWl0dGVkIGV2ZW50IChjdXN0b20gZXZlbnQgbmFtZWQgYnkgY2xpZW50KSB3aWxsIGJlIHN1ZmZpeGVkIHdpdGggXCJQSUUtXCJcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoYFBJRS0ke2N1c3RvbVBsdWdpblByb3BzLmV2ZW50fWAsIHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIC4uLmN1c3RvbVBsdWdpblByb3BzLFxuICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgc3VwcG9ydHM6IChub2RlKSA9PiBub2RlLm9iamVjdCA9PT0gJ2lubGluZScgJiYgbm9kZS50eXBlID09PSB0eXBlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogdHlwZSxcbiAgICB0b29sYmFyLFxuICAgIHJlbmRlck5vZGUocHJvcHMpIHtcbiAgICAgIGlmIChwcm9wcy5ub2RlLnR5cGUgPT09IHR5cGUpIHtcbiAgICAgICAgY29uc3QgeyBub2RlIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBub2RlO1xuICAgICAgICBjb25zdCBqc29uRGF0YSA9IGRhdGEudG9KU09OKCk7XG4gICAgICAgIGNvbnN0IHsgY3VzdG9tQ29udGVudCwgY29udGVudFR5cGUgfSA9IGpzb25EYXRhO1xuXG4gICAgICAgIHN3aXRjaCAoY29udGVudFR5cGUpIHtcbiAgICAgICAgICBjYXNlIENPTlRFTlRfVFlQRS5GUkFHTUVOVDpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl19
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _styles = require("@material-ui/core/styles");
13
+
14
+ var styles = function styles(theme) {
15
+ return {
16
+ icon: {
17
+ fontFamily: 'Cerebri Sans, Arial, sans-serif',
18
+ fontSize: theme.typography.fontSize,
19
+ fontWeight: 'bold',
20
+ lineHeight: '14px',
21
+ position: 'relative',
22
+ whiteSpace: 'nowrap'
23
+ }
24
+ };
25
+ };
26
+
27
+ var HtmlModeIcon = function HtmlModeIcon(_ref) {
28
+ var classes = _ref.classes,
29
+ isHtmlMode = _ref.isHtmlMode;
30
+ return /*#__PURE__*/_react["default"].createElement("div", {
31
+ className: classes.icon
32
+ }, isHtmlMode ? 'Exit <HTML> mode' : '<HTML>');
33
+ };
34
+
35
+ var _default = (0, _styles.withStyles)(styles)(HtmlModeIcon);
36
+
37
+ exports["default"] = _default;
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL2h0bWwvaWNvbnMvaW5kZXguanN4Il0sIm5hbWVzIjpbInN0eWxlcyIsInRoZW1lIiwiaWNvbiIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsInR5cG9ncmFwaHkiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsInBvc2l0aW9uIiwid2hpdGVTcGFjZSIsIkh0bWxNb2RlSWNvbiIsImNsYXNzZXMiLCJpc0h0bWxNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxJQUFNQSxNQUFNLEdBQUcsU0FBVEEsTUFBUyxDQUFDQyxLQUFEO0FBQUEsU0FBWTtBQUN6QkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0pDLE1BQUFBLFVBQVUsRUFBRSxpQ0FEUjtBQUVKQyxNQUFBQSxRQUFRLEVBQUVILEtBQUssQ0FBQ0ksVUFBTixDQUFpQkQsUUFGdkI7QUFHSkUsTUFBQUEsVUFBVSxFQUFFLE1BSFI7QUFJSkMsTUFBQUEsVUFBVSxFQUFFLE1BSlI7QUFLSkMsTUFBQUEsUUFBUSxFQUFFLFVBTE47QUFNSkMsTUFBQUEsVUFBVSxFQUFFO0FBTlI7QUFEbUIsR0FBWjtBQUFBLENBQWY7O0FBV0EsSUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWU7QUFBQSxNQUFHQyxPQUFILFFBQUdBLE9BQUg7QUFBQSxNQUFZQyxVQUFaLFFBQVlBLFVBQVo7QUFBQSxzQkFDbkI7QUFBSyxJQUFBLFNBQVMsRUFBRUQsT0FBTyxDQUFDVDtBQUF4QixLQUErQlUsVUFBVSxHQUFHLGtCQUFILEdBQXdCLFFBQWpFLENBRG1CO0FBQUEsQ0FBckI7O2VBSWUsd0JBQVdaLE1BQVgsRUFBbUJVLFlBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5cbmNvbnN0IHN0eWxlcyA9ICh0aGVtZSkgPT4gKHtcbiAgaWNvbjoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgbGluZUhlaWdodDogJzE0cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICB9LFxufSk7XG5cbmNvbnN0IEh0bWxNb2RlSWNvbiA9ICh7IGNsYXNzZXMsIGlzSHRtbE1vZGUgfSkgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29ufT57aXNIdG1sTW9kZSA/ICdFeGl0IDxIVE1MPiBtb2RlJyA6ICc8SFRNTD4nfTwvZGl2PlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKEh0bWxNb2RlSWNvbik7XG4iXX0=