@pie-lib/editable-html-tip-tap 1.0.5 → 1.0.6

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 (112) hide show
  1. package/lib/constants.js +2 -5
  2. package/package.json +1 -1
  3. package/src/constants.js +0 -2
  4. package/lib/__tests__/editor.test.js +0 -470
  5. package/lib/__tests__/serialization.test.js +0 -246
  6. package/lib/block-tags.js +0 -25
  7. package/lib/components/CharacterPicker.js.map +0 -1
  8. package/lib/components/EditableHtml.js.map +0 -1
  9. package/lib/components/MenuBar.js.map +0 -1
  10. package/lib/components/TiptapContainer.js.map +0 -1
  11. package/lib/components/buttons/done-button.js +0 -53
  12. package/lib/components/characters/characterUtils.js.map +0 -1
  13. package/lib/components/characters/custom-popper.js.map +0 -1
  14. package/lib/components/common/done-button.js.map +0 -1
  15. package/lib/components/common/toolbar-buttons.js.map +0 -1
  16. package/lib/components/icons/CssIcon.js.map +0 -1
  17. package/lib/components/icons/RespArea.js.map +0 -1
  18. package/lib/components/icons/TableIcons.js.map +0 -1
  19. package/lib/components/icons/TextAlign.js.map +0 -1
  20. package/lib/components/icons/index.js +0 -194
  21. package/lib/components/image/AltDialog.js.map +0 -1
  22. package/lib/components/image/ImageToolbar.js.map +0 -1
  23. package/lib/components/image/InsertImageHandler.js.map +0 -1
  24. package/lib/components/image/alt-dialog.js +0 -2
  25. package/lib/components/media/MediaDialog.js.map +0 -1
  26. package/lib/components/media/MediaToolbar.js.map +0 -1
  27. package/lib/components/media/MediaWrapper.js.map +0 -1
  28. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +0 -1
  29. package/lib/components/respArea/DragInTheBlank/choice.js.map +0 -1
  30. package/lib/components/respArea/DragInTheBlank.js +0 -94
  31. package/lib/components/respArea/ExplicitConstructedResponse.js.map +0 -1
  32. package/lib/components/respArea/InlineDropdown.js.map +0 -1
  33. package/lib/components/respArea/ToolbarIcon.js.map +0 -1
  34. package/lib/components/respArea/choice.js +0 -2
  35. package/lib/constants.js.map +0 -1
  36. package/lib/editor.js +0 -1356
  37. package/lib/extensions/MediaView.js +0 -112
  38. package/lib/extensions/characters.js +0 -65
  39. package/lib/extensions/component.js.map +0 -1
  40. package/lib/extensions/css.js.map +0 -1
  41. package/lib/extensions/custom-toolbar-wrapper.js.map +0 -1
  42. package/lib/extensions/extended-table.js.map +0 -1
  43. package/lib/extensions/image.js.map +0 -1
  44. package/lib/extensions/index.js.map +0 -1
  45. package/lib/extensions/math.js.map +0 -1
  46. package/lib/extensions/media.js.map +0 -1
  47. package/lib/extensions/responseArea.js.map +0 -1
  48. package/lib/index.js.map +0 -1
  49. package/lib/old-index.js +0 -269
  50. package/lib/parse-html.js +0 -16
  51. package/lib/plugins/characters/custom-popper.js +0 -73
  52. package/lib/plugins/characters/index.js +0 -305
  53. package/lib/plugins/characters/utils.js +0 -381
  54. package/lib/plugins/css/icons/index.js +0 -37
  55. package/lib/plugins/css/index.js +0 -390
  56. package/lib/plugins/customPlugin/index.js +0 -114
  57. package/lib/plugins/html/icons/index.js +0 -38
  58. package/lib/plugins/html/index.js +0 -81
  59. package/lib/plugins/image/__tests__/component.test.js +0 -51
  60. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +0 -56
  61. package/lib/plugins/image/__tests__/image-toolbar.test.js +0 -26
  62. package/lib/plugins/image/__tests__/index.test.js +0 -98
  63. package/lib/plugins/image/__tests__/insert-image-handler.test.js +0 -125
  64. package/lib/plugins/image/__tests__/mock-change.js +0 -25
  65. package/lib/plugins/image/alt-dialog.js +0 -129
  66. package/lib/plugins/image/component.js +0 -419
  67. package/lib/plugins/image/image-toolbar.js +0 -177
  68. package/lib/plugins/image/index.js +0 -263
  69. package/lib/plugins/image/insert-image-handler.js +0 -117
  70. package/lib/plugins/index.js +0 -341
  71. package/lib/plugins/list/__tests__/index.test.js +0 -79
  72. package/lib/plugins/list/index.js +0 -334
  73. package/lib/plugins/math/__tests__/index.test.js +0 -300
  74. package/lib/plugins/math/index.js +0 -454
  75. package/lib/plugins/media/__tests__/index.test.js +0 -71
  76. package/lib/plugins/media/index.js +0 -387
  77. package/lib/plugins/media/media-dialog.js +0 -709
  78. package/lib/plugins/media/media-toolbar.js +0 -101
  79. package/lib/plugins/media/media-wrapper.js +0 -93
  80. package/lib/plugins/rendering/index.js +0 -46
  81. package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -289
  82. package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -94
  83. package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -120
  84. package/lib/plugins/respArea/icons/index.js +0 -95
  85. package/lib/plugins/respArea/index.js +0 -341
  86. package/lib/plugins/respArea/inline-dropdown/index.js +0 -126
  87. package/lib/plugins/respArea/math-templated/index.js +0 -130
  88. package/lib/plugins/respArea/utils.js +0 -125
  89. package/lib/plugins/table/CustomTablePlugin.js +0 -133
  90. package/lib/plugins/table/__tests__/index.test.js +0 -442
  91. package/lib/plugins/table/__tests__/table-toolbar.test.js +0 -54
  92. package/lib/plugins/table/icons/index.js +0 -69
  93. package/lib/plugins/table/index.js +0 -483
  94. package/lib/plugins/table/table-toolbar.js +0 -187
  95. package/lib/plugins/textAlign/icons/index.js +0 -194
  96. package/lib/plugins/textAlign/index.js +0 -34
  97. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +0 -128
  98. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +0 -51
  99. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +0 -54
  100. package/lib/plugins/toolbar/__tests__/toolbar.test.js +0 -120
  101. package/lib/plugins/toolbar/default-toolbar.js +0 -229
  102. package/lib/plugins/toolbar/done-button.js +0 -53
  103. package/lib/plugins/toolbar/editor-and-toolbar.js +0 -286
  104. package/lib/plugins/toolbar/index.js +0 -34
  105. package/lib/plugins/toolbar/toolbar-buttons.js +0 -194
  106. package/lib/plugins/toolbar/toolbar.js +0 -376
  107. package/lib/plugins/utils.js +0 -62
  108. package/lib/serialization.js +0 -677
  109. package/lib/shared/alert-dialog.js +0 -75
  110. package/lib/styles/editorContainerStyles.js.map +0 -1
  111. package/lib/theme.js.map +0 -1
  112. package/lib/utils/size.js.map +0 -1
@@ -1,390 +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);
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
@@ -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=