@pie-lib/editable-html 11.3.0-beta.0 → 11.3.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 (76) hide show
  1. package/CHANGELOG.json +12 -3322
  2. package/CHANGELOG.md +120 -96
  3. package/package.json +7 -6
  4. package/src/editor.jsx +3 -3
  5. package/src/plugins/media/media-dialog.js +1 -1
  6. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +1 -1
  7. package/src/plugins/toolbar/default-toolbar.jsx +6 -4
  8. package/src/plugins/toolbar/editor-and-toolbar.jsx +1 -1
  9. package/src/plugins/toolbar/toolbar.jsx +4 -4
  10. package/lib/__tests__/editor.test.js +0 -470
  11. package/lib/__tests__/serialization.test.js +0 -246
  12. package/lib/__tests__/utils.js +0 -106
  13. package/lib/block-tags.js +0 -25
  14. package/lib/constants.js +0 -16
  15. package/lib/editor.js +0 -1355
  16. package/lib/index.js +0 -269
  17. package/lib/parse-html.js +0 -16
  18. package/lib/plugins/characters/custom-popper.js +0 -73
  19. package/lib/plugins/characters/index.js +0 -305
  20. package/lib/plugins/characters/utils.js +0 -381
  21. package/lib/plugins/css/icons/index.js +0 -37
  22. package/lib/plugins/css/index.js +0 -397
  23. package/lib/plugins/customPlugin/index.js +0 -114
  24. package/lib/plugins/html/icons/index.js +0 -38
  25. package/lib/plugins/html/index.js +0 -80
  26. package/lib/plugins/image/__tests__/component.test.js +0 -51
  27. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +0 -56
  28. package/lib/plugins/image/__tests__/image-toolbar.test.js +0 -26
  29. package/lib/plugins/image/__tests__/index.test.js +0 -98
  30. package/lib/plugins/image/__tests__/insert-image-handler.test.js +0 -125
  31. package/lib/plugins/image/__tests__/mock-change.js +0 -25
  32. package/lib/plugins/image/alt-dialog.js +0 -129
  33. package/lib/plugins/image/component.js +0 -419
  34. package/lib/plugins/image/image-toolbar.js +0 -177
  35. package/lib/plugins/image/index.js +0 -263
  36. package/lib/plugins/image/insert-image-handler.js +0 -161
  37. package/lib/plugins/index.js +0 -402
  38. package/lib/plugins/list/__tests__/index.test.js +0 -79
  39. package/lib/plugins/list/index.js +0 -334
  40. package/lib/plugins/math/__tests__/index.test.js +0 -300
  41. package/lib/plugins/math/index.js +0 -454
  42. package/lib/plugins/media/__tests__/index.test.js +0 -71
  43. package/lib/plugins/media/index.js +0 -387
  44. package/lib/plugins/media/media-dialog.js +0 -709
  45. package/lib/plugins/media/media-toolbar.js +0 -101
  46. package/lib/plugins/media/media-wrapper.js +0 -93
  47. package/lib/plugins/rendering/index.js +0 -46
  48. package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -254
  49. package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -97
  50. package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -57
  51. package/lib/plugins/respArea/icons/index.js +0 -95
  52. package/lib/plugins/respArea/index.js +0 -341
  53. package/lib/plugins/respArea/inline-dropdown/index.js +0 -75
  54. package/lib/plugins/respArea/math-templated/index.js +0 -130
  55. package/lib/plugins/respArea/utils.js +0 -125
  56. package/lib/plugins/table/CustomTablePlugin.js +0 -133
  57. package/lib/plugins/table/__tests__/index.test.js +0 -442
  58. package/lib/plugins/table/__tests__/table-toolbar.test.js +0 -54
  59. package/lib/plugins/table/icons/index.js +0 -69
  60. package/lib/plugins/table/index.js +0 -483
  61. package/lib/plugins/table/table-toolbar.js +0 -187
  62. package/lib/plugins/textAlign/icons/index.js +0 -226
  63. package/lib/plugins/textAlign/index.js +0 -34
  64. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +0 -128
  65. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +0 -51
  66. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +0 -54
  67. package/lib/plugins/toolbar/__tests__/toolbar.test.js +0 -120
  68. package/lib/plugins/toolbar/default-toolbar.js +0 -229
  69. package/lib/plugins/toolbar/done-button.js +0 -53
  70. package/lib/plugins/toolbar/editor-and-toolbar.js +0 -286
  71. package/lib/plugins/toolbar/index.js +0 -34
  72. package/lib/plugins/toolbar/toolbar-buttons.js +0 -194
  73. package/lib/plugins/toolbar/toolbar.js +0 -376
  74. package/lib/plugins/utils.js +0 -62
  75. package/lib/serialization.js +0 -677
  76. package/lib/theme.js +0 -9
@@ -1,397 +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["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); // when height of toolbar exceeds screen - can happen in scrollable contexts
156
-
157
- var additionalTopOffset = 0;
158
-
159
- if (boundRect.y < newEl.offsetHeight) {
160
- additionalTopOffset = newEl.offsetHeight - boundRect.y + 10;
161
- }
162
-
163
- newEl.style.maxWidth = '500px';
164
- newEl.style.position = 'absolute';
165
- newEl.style.top = 0;
166
- newEl.style.zIndex = 99999;
167
- var leftValue = "".concat(boundRect.left + Math.abs(bodyRect.left) + cursorItem.offsetWidth + 10, "px");
168
- var rightValue = "".concat(boundRect.x, "px");
169
- newEl.style.left = leftValue;
170
- var leftAlignedWidth = newEl.offsetWidth;
171
- newEl.style.left = 'unset';
172
- newEl.style.right = rightValue;
173
- var rightAlignedWidth = newEl.offsetWidth;
174
- newEl.style.left = 'unset';
175
- newEl.style.right = 'unset';
176
-
177
- if (leftAlignedWidth >= rightAlignedWidth) {
178
- newEl.style.left = leftValue;
179
- } else {
180
- newEl.style.right = rightValue;
181
- }
182
-
183
- document.body.addEventListener('click', listener);
184
- }
185
- });
186
- };
187
-
188
- var findParentNodeInfo = function findParentNodeInfo(value, textNode) {
189
- var _closestInline$nodes, _closestBlock$nodes;
190
-
191
- var closestInline = value.document.getClosestInline(value.selection.endKey);
192
- var closestBlock = value.document.getClosestBlock(value.selection.endKey);
193
- var nodeToUse = null;
194
-
195
- if (closestInline !== null && closestInline !== void 0 && (_closestInline$nodes = closestInline.nodes) !== null && _closestInline$nodes !== void 0 && _closestInline$nodes.find(function (n) {
196
- return n.key === textNode.key;
197
- })) {
198
- nodeToUse = closestInline;
199
- }
200
-
201
- if (closestBlock !== null && closestBlock !== void 0 && (_closestBlock$nodes = closestBlock.nodes) !== null && _closestBlock$nodes !== void 0 && _closestBlock$nodes.find(function (n) {
202
- return n.key === textNode.key;
203
- })) {
204
- nodeToUse = closestBlock;
205
- }
206
-
207
- return nodeToUse;
208
- };
209
- /**
210
- * Find the node that has a class attribute and return it.
211
- * Keeping this in case the implementation of classes needs to be changed
212
- * @param value
213
- * @param opts
214
- * @returns {*}
215
- */
216
-
217
-
218
- var getNodeWithClass = function getNodeWithClass(value, opts) {
219
- var _blocksAtRange$, _inlinesAtRange$, _blockData$attributes, _inlineData$attribute;
220
-
221
- var blocksAtRange = value.document.getBlocksAtRangeAsArray(value.selection);
222
- var inlinesAtRange = value.document.getInlinesAtRangeAsArray(value.selection);
223
- var blockData = ((_blocksAtRange$ = blocksAtRange[0]) === null || _blocksAtRange$ === void 0 ? void 0 : _blocksAtRange$.data.toJSON()) || {};
224
- var inlineData = ((_inlinesAtRange$ = inlinesAtRange[0]) === null || _inlinesAtRange$ === void 0 ? void 0 : _inlinesAtRange$.data.toJSON()) || {};
225
-
226
- 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"])) {
227
- return null;
228
- }
229
-
230
- var _ref2 = blockData.attributes || {},
231
- blockClass = _ref2["class"];
232
-
233
- var _ref3 = inlineData.attributes || {},
234
- inlineClass = _ref3["class"];
235
-
236
- var inlineHasClass = opts.names.find(function (name) {
237
- return inlineClass.includes(name);
238
- });
239
-
240
- if (inlineHasClass) {
241
- return inlinesAtRange[0];
242
- }
243
-
244
- var blockHasClass = opts.names.find(function (name) {
245
- return blockClass.includes(name);
246
- });
247
-
248
- if (blockHasClass) {
249
- return blocksAtRange[0];
250
- }
251
-
252
- return null;
253
- };
254
- /**
255
- * Plugin in order to be able to add a css clas that is provided through the model
256
- * on a text element. Works like a mark (bold, italic etc.).
257
- * @param opts
258
- * @constructor
259
- */
260
-
261
-
262
- function CSSPlugin(opts) {
263
- var plugin = {
264
- name: 'extraCSSRules',
265
- toolbar: {
266
- isMark: true,
267
- icon: /*#__PURE__*/_react["default"].createElement(_icons["default"], null),
268
- ariaLabel: 'CSS editor',
269
- type: 'css',
270
- onToggle: function onToggle(change) {
271
- var type = 'css';
272
- var hasMark = change.value.activeMarks.find(function (entry) {
273
- return entry.type === type;
274
- });
275
-
276
- if (hasMark) {
277
- change.removeMark(hasMark);
278
- } else {
279
- var newMark = _slate.Mark.create(type);
280
-
281
- change.addMark(newMark);
282
- }
283
-
284
- return change;
285
- },
286
- onClick: function onClick(value, onChange, getFocusedValue) {
287
- var type = 'css';
288
- var hasMark = value.activeMarks.find(function (entry) {
289
- return entry.type === type;
290
- });
291
- var change = value.change();
292
-
293
- if (hasMark) {
294
- change.removeMark(hasMark);
295
- onChange(change);
296
- return;
297
- } // keeping this if implementation needs to be changed to regular blocks instead of marks
298
- // let nodeWithClass = getNodeWithClass(value, opts);
299
- //
300
- // if (nodeWithClass) {
301
- // const nodeAttributes = nodeWithClass.data.get('attributes');
302
- //
303
- // opts.names.forEach((name) => {
304
- // if (nodeAttributes.class.includes(name)) {
305
- // nodeAttributes.class = nodeAttributes.class.replace(name, '');
306
- // }
307
- // });
308
- //
309
- // // keeping only one space between classes
310
- // nodeAttributes.class = nodeAttributes.class.replace(/ +/g, ' ');
311
- //
312
- // nodeWithClass.data.set('attributes', nodeAttributes);
313
- //
314
- // let change = value.change();
315
- // change.replaceNodeByKey(nodeWithClass.key, nodeWithClass);
316
- //
317
- // onChange(change);
318
- // return;
319
- // }
320
-
321
-
322
- var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
323
- var valueToUse = value;
324
-
325
- var callback = function callback(className, focus) {
326
- if (getFocusedValue) {
327
- valueToUse = getFocusedValue() || valueToUse;
328
- }
329
-
330
- if (className) {
331
- var _change = valueToUse.change();
332
-
333
- var newMark = _slate.Mark.create({
334
- object: 'mark',
335
- type: 'css',
336
- data: {
337
- attributes: {
338
- "class": className
339
- }
340
- }
341
- });
342
-
343
- _change.addMark(newMark); // keeping this if implementation needs to be changed to regular blocks instead of marks
344
- // change = change.wrapInline({ type: 'span', data: { attributes: { class: className } } });
345
- //
346
- // // change = change.splitBlockAtRange(adaptedRange);
347
- // //
348
- // // const newBlock = change.value.document.getFurthestBlock(change.value.selection.endKey);
349
- // //
350
- // // change = change.setNodeByKey(newBlock.key, { data: { attributes: { class: className } } });
351
- //
352
- // valueToUse = change.value;
353
- // log('[characters:insert]: ', value);
354
-
355
-
356
- onChange(_change);
357
- }
358
-
359
- log('[characters:click]');
360
-
361
- if (focus) {
362
- setTimeout(function () {
363
- if (editorDOM) {
364
- editorDOM.focus();
365
- }
366
- }, 0);
367
- }
368
- };
369
-
370
- var textNode = value.document.getTextsAtRangeAsArray(value.selection)[0];
371
-
372
- if (textNode) {
373
- var parentNode = findParentNodeInfo(value, textNode, opts);
374
- insertDialog({
375
- editorDOM: editorDOM,
376
- value: valueToUse,
377
- callback: callback,
378
- opts: opts,
379
- textNode: textNode,
380
- parentNode: parentNode
381
- });
382
- }
383
- }
384
- },
385
- renderMark: function renderMark(props) {
386
- if (props.mark.type === 'css') {
387
- var _ref4 = props.mark || {},
388
- data = _ref4.data;
389
-
390
- var jsonData = (data === null || data === void 0 ? void 0 : data.toJSON()) || {};
391
- return /*#__PURE__*/_react["default"].createElement("span", jsonData.attributes, props.children);
392
- }
393
- }
394
- };
395
- return plugin;
396
- }
397
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2Nzcy9pbmRleC5qc3giXSwibmFtZXMiOlsibG9nIiwicmVtb3ZlRGlhbG9ncyIsInByZXZEaWFsb2dzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInMiLCJyZW1vdmUiLCJpbnNlcnREaWFsb2ciLCJlZGl0b3JET00iLCJ2YWx1ZSIsImNhbGxiYWNrIiwib3B0cyIsInRleHROb2RlIiwicGFyZW50Tm9kZSIsIm5ld0VsIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInBvcG92ZXJFbCIsImNsb3NlUG9wT3ZlciIsImZpcnN0Q2FsbE1hZGUiLCJsaXN0ZW5lciIsImUiLCJmb2N1c0lzSW5Nb2RhbHMiLCJjb250YWlucyIsInRhcmdldCIsImZvY3VzSXNJbkVkaXRvciIsImhhbmRsZUNsb3NlIiwidW5kZWZpbmVkIiwiYm9keSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDaGFuZ2UiLCJuYW1lIiwic2VsZWN0ZWRUZXh0IiwidGV4dCIsInNsaWNlIiwic2VsZWN0aW9uIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJwYXJlbnROb2RlQ2xhc3MiLCJkYXRhIiwiZ2V0IiwiY3JlYXRlSFRNTCIsImh0bWwiLCJ0YWciLCJvYmplY3QiLCJlbCIsImJhY2tncm91bmQiLCJoZWlnaHQiLCJwYWRkaW5nIiwib3ZlcmZsb3ciLCJkaXNwbGF5IiwiZmxleEZsb3ciLCJuYW1lcyIsIm1hcCIsImkiLCJtYXJnaW5SaWdodCIsIl9faHRtbCIsIlJlYWN0RE9NIiwicmVuZGVyIiwiY3Vyc29ySXRlbSIsInF1ZXJ5U2VsZWN0b3IiLCJhbmNob3JLZXkiLCJib2R5UmVjdCIsInBhcmVudEVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3VuZFJlY3QiLCJhcHBlbmRDaGlsZCIsImFkZGl0aW9uYWxUb3BPZmZzZXQiLCJ5Iiwib2Zmc2V0SGVpZ2h0Iiwic3R5bGUiLCJtYXhXaWR0aCIsInBvc2l0aW9uIiwidG9wIiwiekluZGV4IiwibGVmdFZhbHVlIiwibGVmdCIsIk1hdGgiLCJhYnMiLCJvZmZzZXRXaWR0aCIsInJpZ2h0VmFsdWUiLCJ4IiwibGVmdEFsaWduZWRXaWR0aCIsInJpZ2h0IiwicmlnaHRBbGlnbmVkV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwiZmluZFBhcmVudE5vZGVJbmZvIiwiY2xvc2VzdElubGluZSIsImdldENsb3Nlc3RJbmxpbmUiLCJlbmRLZXkiLCJjbG9zZXN0QmxvY2siLCJnZXRDbG9zZXN0QmxvY2siLCJub2RlVG9Vc2UiLCJub2RlcyIsImZpbmQiLCJuIiwia2V5IiwiZ2V0Tm9kZVdpdGhDbGFzcyIsImJsb2Nrc0F0UmFuZ2UiLCJnZXRCbG9ja3NBdFJhbmdlQXNBcnJheSIsImlubGluZXNBdFJhbmdlIiwiZ2V0SW5saW5lc0F0UmFuZ2VBc0FycmF5IiwiYmxvY2tEYXRhIiwidG9KU09OIiwiaW5saW5lRGF0YSIsImF0dHJpYnV0ZXMiLCJibG9ja0NsYXNzIiwiaW5saW5lQ2xhc3MiLCJpbmxpbmVIYXNDbGFzcyIsImluY2x1ZGVzIiwiYmxvY2tIYXNDbGFzcyIsIkNTU1BsdWdpbiIsInBsdWdpbiIsInRvb2xiYXIiLCJpc01hcmsiLCJpY29uIiwiYXJpYUxhYmVsIiwidHlwZSIsIm9uVG9nZ2xlIiwiY2hhbmdlIiwiaGFzTWFyayIsImFjdGl2ZU1hcmtzIiwiZW50cnkiLCJyZW1vdmVNYXJrIiwibmV3TWFyayIsIk1hcmsiLCJjcmVhdGUiLCJhZGRNYXJrIiwib25DbGljayIsIm9uQ2hhbmdlIiwiZ2V0Rm9jdXNlZFZhbHVlIiwidmFsdWVUb1VzZSIsImZvY3VzIiwic2V0VGltZW91dCIsImdldFRleHRzQXRSYW5nZUFzQXJyYXkiLCJyZW5kZXJNYXJrIiwicHJvcHMiLCJtYXJrIiwianNvbkRhdGEiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNB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QUEsUUFBUSxFQUFSQSxRQUFoQztBQUEwQ0MsWUFBQUEsSUFBSSxFQUFKQSxJQUExQztBQUFnREMsWUFBQUEsUUFBUSxFQUFSQSxRQUFoRDtBQUEwREMsWUFBQUEsVUFBVSxFQUFWQTtBQUExRCxXQUFELENBQVo7QUFDRDtBQUNGO0FBaEhNLEtBRkk7QUFvSGIwSCxJQUFBQSxVQXBIYSxzQkFvSEZDLEtBcEhFLEVBb0hLO0FBQ2hCLFVBQUlBLEtBQUssQ0FBQ0MsSUFBTixDQUFXcEIsSUFBWCxLQUFvQixLQUF4QixFQUErQjtBQUM3QixvQkFBaUJtQixLQUFLLENBQUNDLElBQU4sSUFBYyxFQUEvQjtBQUFBLFlBQVFsRyxJQUFSLFNBQVFBLElBQVI7O0FBQ0EsWUFBTW1HLFFBQVEsR0FBRyxDQUFBbkcsSUFBSSxTQUFKLElBQUFBLElBQUksV0FBSixZQUFBQSxJQUFJLENBQUVnRSxNQUFOLE9BQWtCLEVBQW5DO0FBRUEsNEJBQU8sd0NBQVVtQyxRQUFRLENBQUNqQyxVQUFuQixFQUFnQytCLEtBQUssQ0FBQ0csUUFBdEMsQ0FBUDtBQUNEO0FBQ0Y7QUEzSFksR0FBZjtBQThIQSxTQUFPM0IsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IExpc3QgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvTGlzdCc7XG5pbXBvcnQgeyBMZWFmLCBNYXJrIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IEltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0xpc3RJdGVtJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgQ3NzSWNvbiBmcm9tICcuL2ljb25zJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczpjaGFyYWN0ZXJzJyk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVEaWFsb2dzID0gKCkgPT4ge1xuICBjb25zdCBwcmV2RGlhbG9ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnNlcnQtY3NzLWRpYWxvZycpO1xuXG4gIGxvZygnW2NoYXJhY3RlcnM6cmVtb3ZlRGlhbG9nc10nKTtcbiAgcHJldkRpYWxvZ3MuZm9yRWFjaCgocykgPT4gcy5yZW1vdmUoKSk7XG59O1xuXG5jb25zdCBpbnNlcnREaWFsb2cgPSAoeyBlZGl0b3JET00sIHZhbHVlLCBjYWxsYmFjaywgb3B0cywgdGV4dE5vZGUsIHBhcmVudE5vZGUgfSkgPT4ge1xuICBjb25zdCBuZXdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGxvZygnW2NoYXJhY3RlcnM6aW5zZXJ0RGlhbG9nXScpO1xuXG4gIHJlbW92ZURpYWxvZ3MoKTtcblxuICBuZXdFbC5jbGFzc05hbWUgPSAnaW5zZXJ0LWNzcy1kaWFsb2cnO1xuXG4gIGxldCBwb3BvdmVyRWw7XG5cbiAgY29uc3QgY2xvc2VQb3BPdmVyID0gKCkgPT4ge1xuICAgIGlmIChwb3BvdmVyRWwpIHtcbiAgICAgIHBvcG92ZXJFbC5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgbGV0IGZpcnN0Q2FsbE1hZGUgPSBmYWxzZTtcblxuICBjb25zdCBsaXN0ZW5lciA9IChlKSA9PiB7XG4gICAgLy8gdGhpcyB3aWxsIGJlIHRyaWdnZXJlZCByaWdodCBhZnRlciBzZXR0aW5nIGl0IGJlY2F1c2VcbiAgICAvLyB0aGlzIHRvb2xiYXIgaXMgYWRkZWQgb24gdGhlIG1vdXNlZG93biBldmVudFxuICAgIC8vIHNvIHJpZ2h0IGFmdGVyIG1vdXNldXAsIHRoZSBjbGljayB3aWxsIGJlIHRyaWdnZXJlZFxuICAgIGlmIChmaXJzdENhbGxNYWRlKSB7XG4gICAgICBjb25zdCBmb2N1c0lzSW5Nb2RhbHMgPSBuZXdFbC5jb250YWlucyhlLnRhcmdldCkgfHwgKHBvcG92ZXJFbCAmJiBwb3BvdmVyRWwuY29udGFpbnMoZS50YXJnZXQpKTtcbiAgICAgIGNvbnN0IGZvY3VzSXNJbkVkaXRvciA9IGVkaXRvckRPTS5jb250YWlucyhlLnRhcmdldCk7XG5cbiAgICAgIGlmICghKGZvY3VzSXNJbk1vZGFscyB8fCBmb2N1c0lzSW5FZGl0b3IpKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0Q2FsbE1hZGUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBjYWxsYmFjayh1bmRlZmluZWQsIHRydWUpO1xuICAgIG5ld0VsLnJlbW92ZSgpO1xuICAgIGNsb3NlUG9wT3ZlcigpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKG5hbWUpID0+IHtcbiAgICBjYWxsYmFjayhuYW1lLCB0cnVlKTtcbiAgICBuZXdFbC5yZW1vdmUoKTtcbiAgICBjbG9zZVBvcE92ZXIoKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIpO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdGVkVGV4dCA9IHRleHROb2RlLnRleHQuc2xpY2UodmFsdWUuc2VsZWN0aW9uLmFuY2hvck9mZnNldCwgdmFsdWUuc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KTtcbiAgY29uc3QgcGFyZW50Tm9kZUNsYXNzID0gcGFyZW50Tm9kZT8uZGF0YT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmNsYXNzO1xuICBjb25zdCBjcmVhdGVIVE1MID0gKG5hbWUpID0+IHtcbiAgICBsZXQgaHRtbCA9IGA8c3BhbiBjbGFzcz1cIiR7bmFtZX1cIj4ke3NlbGVjdGVkVGV4dH08L3NwYW4+YDtcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICBsZXQgdGFnO1xuXG4gICAgICBpZiAocGFyZW50Tm9kZT8ub2JqZWN0ID09PSAnaW5saW5lJykge1xuICAgICAgICB0YWcgPSAnc3Bhbic7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnROb2RlPy5vYmplY3QgPT09ICdibG9jaycpIHtcbiAgICAgICAgdGFnID0gJ2Rpdic7XG4gICAgICB9XG5cbiAgICAgIGh0bWwgPSBgPCR7dGFnfSBjbGFzcz1cIiR7cGFyZW50Tm9kZUNsYXNzfVwiPiR7cGFyZW50Tm9kZS50ZXh0LnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICB2YWx1ZS5zZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuICAgICAgKX0ke2h0bWx9JHtwYXJlbnROb2RlLnRleHQuc2xpY2UodmFsdWUuc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KX08LyR7dGFnfT5gO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIGNvbnN0IGVsID0gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGJhY2tncm91bmQ6ICd3aGl0ZScsIGhlaWdodDogNTAwLCBwYWRkaW5nOiAyMCwgb3ZlcmZsb3c6ICdoaWRkZW4nLCBkaXNwbGF5OiAnZmxleCcsIGZsZXhGbG93OiAnY29sdW1uJyB9fVxuICAgID5cbiAgICAgIDxoMj5QbGVhc2UgY2hvb3NlIGEgY3NzIGNsYXNzPC9oMj5cbiAgICAgIHtwYXJlbnROb2RlQ2xhc3MgJiYgPGRpdj5UaGUgY3VycmVudCBwYXJlbnQgaGFzIHRoaXMgY2xhc3Mge3BhcmVudE5vZGVDbGFzc308L2Rpdj59XG4gICAgICA8TGlzdCBjb21wb25lbnQ9XCJuYXZcIiBzdHlsZT17eyBvdmVyZmxvdzogJ3Njcm9sbCcgfX0+XG4gICAgICAgIHtvcHRzLm5hbWVzLm1hcCgobmFtZSwgaSkgPT4gKFxuICAgICAgICAgIDxMaXN0SXRlbSBrZXk9e2BydWxlLSR7aX1gfSBidXR0b24gb25DbGljaz17KCkgPT4gaGFuZGxlQ2hhbmdlKG5hbWUpfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDIwIH19PntuYW1lfTwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgIF9faHRtbDogY3JlYXRlSFRNTChuYW1lKSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgKSl9XG4gICAgICA8L0xpc3Q+XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgUmVhY3RET00ucmVuZGVyKGVsLCBuZXdFbCwgKCkgPT4ge1xuICAgIGNvbnN0IGN1cnNvckl0ZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1rZXk9XCIke3ZhbHVlLmFuY2hvcktleX1cIl1gKTtcblxuICAgIGlmIChjdXJzb3JJdGVtKSB7XG4gICAgICBjb25zdCBib2R5UmVjdCA9IGVkaXRvckRPTS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGJvdW5kUmVjdCA9IGN1cnNvckl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGVkaXRvckRPTS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChuZXdFbCk7XG5cbiAgICAgIC8vIHdoZW4gaGVpZ2h0IG9mIHRvb2xiYXIgZXhjZWVkcyBzY3JlZW4gLSBjYW4gaGFwcGVuIGluIHNjcm9sbGFibGUgY29udGV4dHNcbiAgICAgIGxldCBhZGRpdGlvbmFsVG9wT2Zmc2V0ID0gMDtcbiAgICAgIGlmIChib3VuZFJlY3QueSA8IG5ld0VsLm9mZnNldEhlaWdodCkge1xuICAgICAgICBhZGRpdGlvbmFsVG9wT2Zmc2V0ID0gbmV3RWwub2Zmc2V0SGVpZ2h0IC0gYm91bmRSZWN0LnkgKyAxMDtcbiAgICAgIH1cblxuICAgICAgbmV3RWwuc3R5bGUubWF4V2lkdGggPSAnNTAwcHgnO1xuICAgICAgbmV3RWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgbmV3RWwuc3R5bGUudG9wID0gMDtcbiAgICAgIG5ld0VsLnN0eWxlLnpJbmRleCA9IDk5OTk5O1xuXG4gICAgICBjb25zdCBsZWZ0VmFsdWUgPSBgJHtib3VuZFJlY3QubGVmdCArIE1hdGguYWJzKGJvZHlSZWN0LmxlZnQpICsgY3Vyc29ySXRlbS5vZmZzZXRXaWR0aCArIDEwfXB4YDtcblxuICAgICAgY29uc3QgcmlnaHRWYWx1ZSA9IGAke2JvdW5kUmVjdC54fXB4YDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9IGxlZnRWYWx1ZTtcblxuICAgICAgY29uc3QgbGVmdEFsaWduZWRXaWR0aCA9IG5ld0VsLm9mZnNldFdpZHRoO1xuXG4gICAgICBuZXdFbC5zdHlsZS5sZWZ0ID0gJ3Vuc2V0JztcbiAgICAgIG5ld0VsLnN0eWxlLnJpZ2h0ID0gcmlnaHRWYWx1ZTtcblxuICAgICAgY29uc3QgcmlnaHRBbGlnbmVkV2lkdGggPSBuZXdFbC5vZmZzZXRXaWR0aDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9ICd1bnNldCc7XG4gICAgICBuZXdFbC5zdHlsZS5yaWdodCA9ICd1bnNldCc7XG5cbiAgICAgIGlmIChsZWZ0QWxpZ25lZFdpZHRoID49IHJpZ2h0QWxpZ25lZFdpZHRoKSB7XG4gICAgICAgIG5ld0VsLnN0eWxlLmxlZnQgPSBsZWZ0VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdFbC5zdHlsZS5yaWdodCA9IHJpZ2h0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IGZpbmRQYXJlbnROb2RlSW5mbyA9ICh2YWx1ZSwgdGV4dE5vZGUpID0+IHtcbiAgY29uc3QgY2xvc2VzdElubGluZSA9IHZhbHVlLmRvY3VtZW50LmdldENsb3Nlc3RJbmxpbmUodmFsdWUuc2VsZWN0aW9uLmVuZEtleSk7XG4gIGNvbnN0IGNsb3Nlc3RCbG9jayA9IHZhbHVlLmRvY3VtZW50LmdldENsb3Nlc3RCbG9jayh2YWx1ZS5zZWxlY3Rpb24uZW5kS2V5KTtcbiAgbGV0IG5vZGVUb1VzZSA9IG51bGw7XG5cbiAgaWYgKGNsb3Nlc3RJbmxpbmU/Lm5vZGVzPy5maW5kKChuKSA9PiBuLmtleSA9PT0gdGV4dE5vZGUua2V5KSkge1xuICAgIG5vZGVUb1VzZSA9IGNsb3Nlc3RJbmxpbmU7XG4gIH1cblxuICBpZiAoY2xvc2VzdEJsb2NrPy5ub2Rlcz8uZmluZCgobikgPT4gbi5rZXkgPT09IHRleHROb2RlLmtleSkpIHtcbiAgICBub2RlVG9Vc2UgPSBjbG9zZXN0QmxvY2s7XG4gIH1cblxuICByZXR1cm4gbm9kZVRvVXNlO1xufTtcblxuLyoqXG4gKiBGaW5kIHRoZSBub2RlIHRoYXQgaGFzIGEgY2xhc3MgYXR0cmlidXRlIGFuZCByZXR1cm4gaXQuXG4gKiBLZWVwaW5nIHRoaXMgaW4gY2FzZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3NlcyBuZWVkcyB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBvcHRzXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuY29uc3QgZ2V0Tm9kZVdpdGhDbGFzcyA9ICh2YWx1ZSwgb3B0cykgPT4ge1xuICBjb25zdCBibG9ja3NBdFJhbmdlID0gdmFsdWUuZG9jdW1lbnQuZ2V0QmxvY2tzQXRSYW5nZUFzQXJyYXkodmFsdWUuc2VsZWN0aW9uKTtcbiAgY29uc3QgaW5saW5lc0F0UmFuZ2UgPSB2YWx1ZS5kb2N1bWVudC5nZXRJbmxpbmVzQXRSYW5nZUFzQXJyYXkodmFsdWUuc2VsZWN0aW9uKTtcbiAgY29uc3QgYmxvY2tEYXRhID0gYmxvY2tzQXRSYW5nZVswXT8uZGF0YS50b0pTT04oKSB8fCB7fTtcbiAgY29uc3QgaW5saW5lRGF0YSA9IGlubGluZXNBdFJhbmdlWzBdPy5kYXRhLnRvSlNPTigpIHx8IHt9O1xuXG4gIGlmICghYmxvY2tEYXRhLmF0dHJpYnV0ZXM/LmNsYXNzICYmICFpbmxpbmVEYXRhLmF0dHJpYnV0ZXM/LmNsYXNzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7IGNsYXNzOiBibG9ja0NsYXNzIH0gPSBibG9ja0RhdGEuYXR0cmlidXRlcyB8fCB7fTtcbiAgY29uc3QgeyBjbGFzczogaW5saW5lQ2xhc3MgfSA9IGlubGluZURhdGEuYXR0cmlidXRlcyB8fCB7fTtcbiAgY29uc3QgaW5saW5lSGFzQ2xhc3MgPSBvcHRzLm5hbWVzLmZpbmQoKG5hbWUpID0+IGlubGluZUNsYXNzLmluY2x1ZGVzKG5hbWUpKTtcblxuICBpZiAoaW5saW5lSGFzQ2xhc3MpIHtcbiAgICByZXR1cm4gaW5saW5lc0F0UmFuZ2VbMF07XG4gIH1cblxuICBjb25zdCBibG9ja0hhc0NsYXNzID0gb3B0cy5uYW1lcy5maW5kKChuYW1lKSA9PiBibG9ja0NsYXNzLmluY2x1ZGVzKG5hbWUpKTtcblxuICBpZiAoYmxvY2tIYXNDbGFzcykge1xuICAgIHJldHVybiBibG9ja3NBdFJhbmdlWzBdO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIFBsdWdpbiBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGFkZCBhIGNzcyBjbGFzIHRoYXQgaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgbW9kZWxcbiAqIG9uIGEgdGV4dCBlbGVtZW50LiBXb3JrcyBsaWtlIGEgbWFyayAoYm9sZCwgaXRhbGljIGV0Yy4pLlxuICogQHBhcmFtIG9wdHNcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDU1NQbHVnaW4ob3B0cykge1xuICBjb25zdCBwbHVnaW4gPSB7XG4gICAgbmFtZTogJ2V4dHJhQ1NTUnVsZXMnLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGlzTWFyazogdHJ1ZSxcbiAgICAgIGljb246IDxDc3NJY29uIC8+LFxuICAgICAgYXJpYUxhYmVsOiAnQ1NTIGVkaXRvcicsXG4gICAgICB0eXBlOiAnY3NzJyxcbiAgICAgIG9uVG9nZ2xlOiAoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSAnY3NzJztcbiAgICAgICAgY29uc3QgaGFzTWFyayA9IGNoYW5nZS52YWx1ZS5hY3RpdmVNYXJrcy5maW5kKChlbnRyeSkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbnRyeS50eXBlID09PSB0eXBlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaGFzTWFyaykge1xuICAgICAgICAgIGNoYW5nZS5yZW1vdmVNYXJrKGhhc01hcmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ld01hcmsgPSBNYXJrLmNyZWF0ZSh0eXBlKTtcblxuICAgICAgICAgIGNoYW5nZS5hZGRNYXJrKG5ld01hcmspO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoYW5nZTtcbiAgICAgIH0sXG4gICAgICBvbkNsaWNrOiAodmFsdWUsIG9uQ2hhbmdlLCBnZXRGb2N1c2VkVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdHlwZSA9ICdjc3MnO1xuICAgICAgICBjb25zdCBoYXNNYXJrID0gdmFsdWUuYWN0aXZlTWFya3MuZmluZCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50cnkudHlwZSA9PT0gdHlwZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpO1xuXG4gICAgICAgIGlmIChoYXNNYXJrKSB7XG4gICAgICAgICAgY2hhbmdlLnJlbW92ZU1hcmsoaGFzTWFyayk7XG4gICAgICAgICAgb25DaGFuZ2UoY2hhbmdlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBrZWVwaW5nIHRoaXMgaWYgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gYmUgY2hhbmdlZCB0byByZWd1bGFyIGJsb2NrcyBpbnN0ZWFkIG9mIG1hcmtzXG4gICAgICAgIC8vIGxldCBub2RlV2l0aENsYXNzID0gZ2V0Tm9kZVdpdGhDbGFzcyh2YWx1ZSwgb3B0cyk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGlmIChub2RlV2l0aENsYXNzKSB7XG4gICAgICAgIC8vICAgY29uc3Qgbm9kZUF0dHJpYnV0ZXMgPSBub2RlV2l0aENsYXNzLmRhdGEuZ2V0KCdhdHRyaWJ1dGVzJyk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgb3B0cy5uYW1lcy5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgIC8vICAgICBpZiAobm9kZUF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgLy8gICAgICAgbm9kZUF0dHJpYnV0ZXMuY2xhc3MgPSBub2RlQXR0cmlidXRlcy5jbGFzcy5yZXBsYWNlKG5hbWUsICcnKTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICB9KTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAvLyBrZWVwaW5nIG9ubHkgb25lIHNwYWNlIGJldHdlZW4gY2xhc3Nlc1xuICAgICAgICAvLyAgIG5vZGVBdHRyaWJ1dGVzLmNsYXNzID0gbm9kZUF0dHJpYnV0ZXMuY2xhc3MucmVwbGFjZSgvICsvZywgJyAnKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICBub2RlV2l0aENsYXNzLmRhdGEuc2V0KCdhdHRyaWJ1dGVzJywgbm9kZUF0dHJpYnV0ZXMpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgIGxldCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKTtcbiAgICAgICAgLy8gICBjaGFuZ2UucmVwbGFjZU5vZGVCeUtleShub2RlV2l0aENsYXNzLmtleSwgbm9kZVdpdGhDbGFzcyk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgb25DaGFuZ2UoY2hhbmdlKTtcbiAgICAgICAgLy8gICByZXR1cm47XG4gICAgICAgIC8vIH1cblxuICAgICAgICBjb25zdCBlZGl0b3JET00gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1rZXk9XCIke3ZhbHVlLmRvY3VtZW50LmtleX1cIl1gKTtcbiAgICAgICAgbGV0IHZhbHVlVG9Vc2UgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCBjYWxsYmFjayA9IChjbGFzc05hbWUsIGZvY3VzKSA9PiB7XG4gICAgICAgICAgaWYgKGdldEZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVUb1VzZSA9IGdldEZvY3VzZWRWYWx1ZSgpIHx8IHZhbHVlVG9Vc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgbGV0IGNoYW5nZSA9IHZhbHVlVG9Vc2UuY2hhbmdlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld01hcmsgPSBNYXJrLmNyZWF0ZSh7XG4gICAgICAgICAgICAgIG9iamVjdDogJ21hcmsnLFxuICAgICAgICAgICAgICB0eXBlOiAnY3NzJyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiBjbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjaGFuZ2UuYWRkTWFyayhuZXdNYXJrKTtcbiAgICAgICAgICAgIC8vIGtlZXBpbmcgdGhpcyBpZiBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIHJlZ3VsYXIgYmxvY2tzIGluc3RlYWQgb2YgbWFya3NcbiAgICAgICAgICAgIC8vIGNoYW5nZSA9IGNoYW5nZS53cmFwSW5saW5lKHsgdHlwZTogJ3NwYW4nLCBkYXRhOiB7IGF0dHJpYnV0ZXM6IHsgY2xhc3M6IGNsYXNzTmFtZSB9IH0gfSk7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gLy8gY2hhbmdlID0gY2hhbmdlLnNwbGl0QmxvY2tBdFJhbmdlKGFkYXB0ZWRSYW5nZSk7XG4gICAgICAgICAgICAvLyAvL1xuICAgICAgICAgICAgLy8gLy8gY29uc3QgbmV3QmxvY2sgPSBjaGFuZ2UudmFsdWUuZG9jdW1lbnQuZ2V0RnVydGhlc3RCbG9jayhjaGFuZ2UudmFsdWUuc2VsZWN0aW9uLmVuZEtleSk7XG4gICAgICAgICAgICAvLyAvL1xuICAgICAgICAgICAgLy8gLy8gY2hhbmdlID0gY2hhbmdlLnNldE5vZGVCeUtleShuZXdCbG9jay5rZXksIHsgZGF0YTogeyBhdHRyaWJ1dGVzOiB7IGNsYXNzOiBjbGFzc05hbWUgfSB9IH0pO1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHZhbHVlVG9Vc2UgPSBjaGFuZ2UudmFsdWU7XG4gICAgICAgICAgICAvLyBsb2coJ1tjaGFyYWN0ZXJzOmluc2VydF06ICcsIHZhbHVlKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9nKCdbY2hhcmFjdGVyczpjbGlja10nKTtcblxuICAgICAgICAgIGlmIChmb2N1cykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlZGl0b3JET00pIHtcbiAgICAgICAgICAgICAgICBlZGl0b3JET00uZm9jdXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZSA9IHZhbHVlLmRvY3VtZW50LmdldFRleHRzQXRSYW5nZUFzQXJyYXkodmFsdWUuc2VsZWN0aW9uKVswXTtcblxuICAgICAgICBpZiAodGV4dE5vZGUpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gZmluZFBhcmVudE5vZGVJbmZvKHZhbHVlLCB0ZXh0Tm9kZSwgb3B0cyk7XG5cbiAgICAgICAgICBpbnNlcnREaWFsb2coeyBlZGl0b3JET00sIHZhbHVlOiB2YWx1ZVRvVXNlLCBjYWxsYmFjaywgb3B0cywgdGV4dE5vZGUsIHBhcmVudE5vZGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICByZW5kZXJNYXJrKHByb3BzKSB7XG4gICAgICBpZiAocHJvcHMubWFyay50eXBlID09PSAnY3NzJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHByb3BzLm1hcmsgfHwge307XG4gICAgICAgIGNvbnN0IGpzb25EYXRhID0gZGF0YT8udG9KU09OKCkgfHwge307XG5cbiAgICAgICAgcmV0dXJuIDxzcGFuIHsuLi5qc29uRGF0YS5hdHRyaWJ1dGVzfT57cHJvcHMuY2hpbGRyZW59PC9zcGFuPjtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBwbHVnaW47XG59XG4iXX0=
@@ -1,114 +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.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
@@ -1,38 +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["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=