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

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 (121) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/package.json +7 -7
  3. package/lib/__tests__/editor-utils.test.js +0 -164
  4. package/lib/__tests__/serialization.test.js +0 -242
  5. package/lib/__tests__/utils.js +0 -79
  6. package/lib/block-tags.js +0 -24
  7. package/lib/block-tags.js.map +0 -1
  8. package/lib/constants.js +0 -11
  9. package/lib/constants.js.map +0 -1
  10. package/lib/editor.js +0 -1224
  11. package/lib/editor.js.map +0 -1
  12. package/lib/index.js +0 -208
  13. package/lib/index.js.map +0 -1
  14. package/lib/parse-html.js +0 -16
  15. package/lib/parse-html.js.map +0 -1
  16. package/lib/plugins/characters/custom-popper.js +0 -57
  17. package/lib/plugins/characters/custom-popper.js.map +0 -1
  18. package/lib/plugins/characters/index.js +0 -265
  19. package/lib/plugins/characters/index.js.map +0 -1
  20. package/lib/plugins/characters/utils.js +0 -378
  21. package/lib/plugins/characters/utils.js.map +0 -1
  22. package/lib/plugins/css/icons/index.js +0 -25
  23. package/lib/plugins/css/icons/index.js.map +0 -1
  24. package/lib/plugins/css/index.js +0 -338
  25. package/lib/plugins/css/index.js.map +0 -1
  26. package/lib/plugins/customPlugin/index.js +0 -98
  27. package/lib/plugins/customPlugin/index.js.map +0 -1
  28. package/lib/plugins/html/icons/index.js +0 -30
  29. package/lib/plugins/html/icons/index.js.map +0 -1
  30. package/lib/plugins/html/index.js +0 -71
  31. package/lib/plugins/html/index.js.map +0 -1
  32. package/lib/plugins/image/__tests__/component.test.js +0 -96
  33. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +0 -131
  34. package/lib/plugins/image/__tests__/image-toolbar.test.js +0 -22
  35. package/lib/plugins/image/__tests__/index.test.js +0 -90
  36. package/lib/plugins/image/__tests__/insert-image-handler.test.js +0 -112
  37. package/lib/plugins/image/__tests__/mock-change.js +0 -22
  38. package/lib/plugins/image/alt-dialog.js +0 -100
  39. package/lib/plugins/image/alt-dialog.js.map +0 -1
  40. package/lib/plugins/image/component.js +0 -343
  41. package/lib/plugins/image/component.js.map +0 -1
  42. package/lib/plugins/image/image-toolbar.js +0 -137
  43. package/lib/plugins/image/image-toolbar.js.map +0 -1
  44. package/lib/plugins/image/index.js +0 -223
  45. package/lib/plugins/image/index.js.map +0 -1
  46. package/lib/plugins/image/insert-image-handler.js +0 -140
  47. package/lib/plugins/image/insert-image-handler.js.map +0 -1
  48. package/lib/plugins/index.js +0 -342
  49. package/lib/plugins/index.js.map +0 -1
  50. package/lib/plugins/list/__tests__/index.test.js +0 -64
  51. package/lib/plugins/list/index.js +0 -288
  52. package/lib/plugins/list/index.js.map +0 -1
  53. package/lib/plugins/math/__tests__/index.test.js +0 -284
  54. package/lib/plugins/math/index.js +0 -402
  55. package/lib/plugins/math/index.js.map +0 -1
  56. package/lib/plugins/media/__tests__/index.test.js +0 -69
  57. package/lib/plugins/media/index.js +0 -330
  58. package/lib/plugins/media/index.js.map +0 -1
  59. package/lib/plugins/media/media-dialog.js +0 -594
  60. package/lib/plugins/media/media-dialog.js.map +0 -1
  61. package/lib/plugins/media/media-toolbar.js +0 -76
  62. package/lib/plugins/media/media-toolbar.js.map +0 -1
  63. package/lib/plugins/media/media-wrapper.js +0 -64
  64. package/lib/plugins/media/media-wrapper.js.map +0 -1
  65. package/lib/plugins/rendering/index.js +0 -36
  66. package/lib/plugins/rendering/index.js.map +0 -1
  67. package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -271
  68. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
  69. package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -55
  70. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
  71. package/lib/plugins/respArea/drag-in-the-blank/utils.js +0 -38
  72. package/lib/plugins/respArea/drag-in-the-blank/utils.js.map +0 -1
  73. package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -50
  74. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
  75. package/lib/plugins/respArea/icons/index.js +0 -72
  76. package/lib/plugins/respArea/icons/index.js.map +0 -1
  77. package/lib/plugins/respArea/index.js +0 -287
  78. package/lib/plugins/respArea/index.js.map +0 -1
  79. package/lib/plugins/respArea/inline-dropdown/index.js +0 -67
  80. package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
  81. package/lib/plugins/respArea/math-templated/index.js +0 -112
  82. package/lib/plugins/respArea/math-templated/index.js.map +0 -1
  83. package/lib/plugins/respArea/utils.js +0 -95
  84. package/lib/plugins/respArea/utils.js.map +0 -1
  85. package/lib/plugins/table/CustomTablePlugin.js +0 -116
  86. package/lib/plugins/table/CustomTablePlugin.js.map +0 -1
  87. package/lib/plugins/table/__tests__/index.test.js +0 -416
  88. package/lib/plugins/table/__tests__/table-toolbar.test.js +0 -81
  89. package/lib/plugins/table/icons/index.js +0 -55
  90. package/lib/plugins/table/icons/index.js.map +0 -1
  91. package/lib/plugins/table/index.js +0 -413
  92. package/lib/plugins/table/index.js.map +0 -1
  93. package/lib/plugins/table/table-toolbar.js +0 -138
  94. package/lib/plugins/table/table-toolbar.js.map +0 -1
  95. package/lib/plugins/textAlign/icons/index.js +0 -187
  96. package/lib/plugins/textAlign/icons/index.js.map +0 -1
  97. package/lib/plugins/textAlign/index.js +0 -26
  98. package/lib/plugins/textAlign/index.js.map +0 -1
  99. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +0 -154
  100. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +0 -47
  101. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +0 -112
  102. package/lib/plugins/toolbar/__tests__/toolbar.test.js +0 -118
  103. package/lib/plugins/toolbar/default-toolbar.js +0 -180
  104. package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
  105. package/lib/plugins/toolbar/done-button.js +0 -35
  106. package/lib/plugins/toolbar/done-button.js.map +0 -1
  107. package/lib/plugins/toolbar/editor-and-toolbar.js +0 -258
  108. package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
  109. package/lib/plugins/toolbar/index.js +0 -29
  110. package/lib/plugins/toolbar/index.js.map +0 -1
  111. package/lib/plugins/toolbar/toolbar-buttons.js +0 -145
  112. package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
  113. package/lib/plugins/toolbar/toolbar.js +0 -307
  114. package/lib/plugins/toolbar/toolbar.js.map +0 -1
  115. package/lib/plugins/utils.js +0 -42
  116. package/lib/plugins/utils.js.map +0 -1
  117. package/lib/serialization.js +0 -571
  118. package/lib/serialization.js.map +0 -1
  119. package/lib/shared/alert-dialog.js +0 -68
  120. package/lib/theme.js +0 -8
  121. package/lib/theme.js.map +0 -1
@@ -1,338 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = CSSPlugin;
8
- exports.removeDialogs = void 0;
9
- var _react = _interopRequireDefault(require("react"));
10
- var _client = require("react-dom/client");
11
- var _List = _interopRequireDefault(require("@mui/material/List"));
12
- var _slate = require("slate");
13
- var _ListItem = _interopRequireDefault(require("@mui/material/ListItem"));
14
- var _debug = _interopRequireDefault(require("debug"));
15
- var _icons = _interopRequireDefault(require("./icons"));
16
- var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:characters');
17
- var removeDialogs = exports.removeDialogs = function removeDialogs() {
18
- var prevDialogs = document.querySelectorAll('.insert-css-dialog');
19
- log('[characters:removeDialogs]');
20
- prevDialogs.forEach(function (s) {
21
- return s.remove();
22
- });
23
- };
24
- var insertDialog = function insertDialog(_ref) {
25
- var _parentNode$data;
26
- var editorDOM = _ref.editorDOM,
27
- value = _ref.value,
28
- callback = _ref.callback,
29
- opts = _ref.opts,
30
- textNode = _ref.textNode,
31
- parentNode = _ref.parentNode;
32
- var newEl = document.createElement('div');
33
- log('[characters:insertDialog]');
34
- removeDialogs();
35
- newEl.className = 'insert-css-dialog';
36
- var popoverEl;
37
- var closePopOver = function closePopOver() {
38
- if (popoverEl) {
39
- popoverEl.remove();
40
- }
41
- };
42
- var firstCallMade = false;
43
- var listener = function listener(e) {
44
- // this will be triggered right after setting it because
45
- // this toolbar is added on the mousedown event
46
- // so right after mouseup, the click will be triggered
47
- if (firstCallMade) {
48
- var focusIsInModals = newEl.contains(e.target) || popoverEl && popoverEl.contains(e.target);
49
- var focusIsInEditor = editorDOM.contains(e.target);
50
- if (!(focusIsInModals || focusIsInEditor)) {
51
- handleClose();
52
- }
53
- } else {
54
- firstCallMade = true;
55
- }
56
- };
57
- var handleClose = function handleClose() {
58
- callback(undefined, true);
59
- newEl.remove();
60
- closePopOver();
61
- document.body.removeEventListener('click', listener);
62
- };
63
- var handleChange = function handleChange(name) {
64
- callback(name, true);
65
- newEl.remove();
66
- closePopOver();
67
- document.body.removeEventListener('click', listener);
68
- };
69
- var selectedText = textNode.text.slice(value.selection.anchorOffset, value.selection.focusOffset);
70
- var parentNodeClass = parentNode === null || parentNode === void 0 || (_parentNode$data = parentNode.data) === null || _parentNode$data === void 0 || (_parentNode$data = _parentNode$data.get('attributes')) === null || _parentNode$data === void 0 ? void 0 : _parentNode$data["class"];
71
- var createHTML = function createHTML(name) {
72
- var html = "<span class=\"".concat(name, "\">").concat(selectedText, "</span>");
73
- if (parentNode) {
74
- var tag;
75
- if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.object) === 'inline') {
76
- tag = 'span';
77
- }
78
- if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.object) === 'block') {
79
- tag = 'div';
80
- }
81
- 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, ">");
82
- }
83
- return html;
84
- };
85
- var el = /*#__PURE__*/_react["default"].createElement("div", {
86
- style: {
87
- background: 'white',
88
- height: 500,
89
- padding: 20,
90
- overflow: 'hidden',
91
- display: 'flex',
92
- flexFlow: 'column'
93
- }
94
- }, /*#__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"], {
95
- component: "nav",
96
- style: {
97
- overflow: 'scroll'
98
- }
99
- }, opts.names.map(function (name, i) {
100
- return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], {
101
- key: "rule-".concat(i),
102
- button: true,
103
- onClick: function onClick() {
104
- return handleChange(name);
105
- }
106
- }, /*#__PURE__*/_react["default"].createElement("div", {
107
- style: {
108
- marginRight: 20
109
- }
110
- }, name), /*#__PURE__*/_react["default"].createElement("div", {
111
- dangerouslySetInnerHTML: {
112
- __html: createHTML(name)
113
- }
114
- }));
115
- })));
116
- var dialogRoot = (0, _client.createRoot)(newEl);
117
- dialogRoot.render(el);
118
-
119
- // Use setTimeout to ensure the element is rendered before positioning
120
- setTimeout(function () {
121
- var cursorItem = document.querySelector("[data-key=\"".concat(value.anchorKey, "\"]"));
122
- if (cursorItem) {
123
- var bodyRect = editorDOM.parentElement.parentElement.parentElement.getBoundingClientRect();
124
- var boundRect = cursorItem.getBoundingClientRect();
125
- editorDOM.parentElement.parentElement.parentElement.appendChild(newEl);
126
-
127
- // when height of toolbar exceeds screen - can happen in scrollable contexts
128
- if (boundRect.y < newEl.offsetHeight) {
129
- var additionalTopOffset = newEl.offsetHeight - boundRect.y + 10;
130
- newEl.style.top = "".concat(additionalTopOffset, "px");
131
- }
132
- newEl.style.maxWidth = '500px';
133
- newEl.style.position = 'absolute';
134
- if (!newEl.style.top) {
135
- newEl.style.top = '0';
136
- }
137
- newEl.style.zIndex = 99999;
138
- var leftValue = "".concat(boundRect.left + Math.abs(bodyRect.left) + cursorItem.offsetWidth + 10, "px");
139
- var rightValue = "".concat(boundRect.x, "px");
140
- newEl.style.left = leftValue;
141
- var leftAlignedWidth = newEl.offsetWidth;
142
- newEl.style.left = 'unset';
143
- newEl.style.right = rightValue;
144
- var rightAlignedWidth = newEl.offsetWidth;
145
- newEl.style.left = 'unset';
146
- newEl.style.right = 'unset';
147
- if (leftAlignedWidth >= rightAlignedWidth) {
148
- newEl.style.left = leftValue;
149
- } else {
150
- newEl.style.right = rightValue;
151
- }
152
- document.body.addEventListener('click', listener);
153
- }
154
- }, 0);
155
- };
156
- var findParentNodeInfo = function findParentNodeInfo(value, textNode) {
157
- var _closestInline$nodes, _closestBlock$nodes;
158
- var closestInline = value.document.getClosestInline(value.selection.endKey);
159
- var closestBlock = value.document.getClosestBlock(value.selection.endKey);
160
- var nodeToUse = null;
161
- if (closestInline !== null && closestInline !== void 0 && (_closestInline$nodes = closestInline.nodes) !== null && _closestInline$nodes !== void 0 && _closestInline$nodes.find(function (n) {
162
- return n.key === textNode.key;
163
- })) {
164
- nodeToUse = closestInline;
165
- }
166
- if (closestBlock !== null && closestBlock !== void 0 && (_closestBlock$nodes = closestBlock.nodes) !== null && _closestBlock$nodes !== void 0 && _closestBlock$nodes.find(function (n) {
167
- return n.key === textNode.key;
168
- })) {
169
- nodeToUse = closestBlock;
170
- }
171
- return nodeToUse;
172
- };
173
-
174
- /**
175
- * Find the node that has a class attribute and return it.
176
- * Keeping this in case the implementation of classes needs to be changed
177
- * @param value
178
- * @param opts
179
- * @returns {*}
180
- */
181
- // eslint-disable-next-line no-unused-vars
182
- var getNodeWithClass = function getNodeWithClass(value, opts) {
183
- var _blocksAtRange$, _inlinesAtRange$, _blockData$attributes, _inlineData$attribute;
184
- var blocksAtRange = value.document.getBlocksAtRangeAsArray(value.selection);
185
- var inlinesAtRange = value.document.getInlinesAtRangeAsArray(value.selection);
186
- var blockData = ((_blocksAtRange$ = blocksAtRange[0]) === null || _blocksAtRange$ === void 0 ? void 0 : _blocksAtRange$.data.toJSON()) || {};
187
- var inlineData = ((_inlinesAtRange$ = inlinesAtRange[0]) === null || _inlinesAtRange$ === void 0 ? void 0 : _inlinesAtRange$.data.toJSON()) || {};
188
- 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"])) {
189
- return null;
190
- }
191
- var _ref2 = blockData.attributes || {},
192
- blockClass = _ref2["class"];
193
- var _ref3 = inlineData.attributes || {},
194
- inlineClass = _ref3["class"];
195
- var inlineHasClass = opts.names.find(function (name) {
196
- return inlineClass.includes(name);
197
- });
198
- if (inlineHasClass) {
199
- return inlinesAtRange[0];
200
- }
201
- var blockHasClass = opts.names.find(function (name) {
202
- return blockClass.includes(name);
203
- });
204
- if (blockHasClass) {
205
- return blocksAtRange[0];
206
- }
207
- return null;
208
- };
209
-
210
- /**
211
- * Plugin in order to be able to add a css clas that is provided through the model
212
- * on a text element. Works like a mark (bold, italic etc.).
213
- * @param opts
214
- * @constructor
215
- */
216
- function CSSPlugin(opts) {
217
- var plugin = {
218
- name: 'extraCSSRules',
219
- toolbar: {
220
- isMark: true,
221
- icon: /*#__PURE__*/_react["default"].createElement(_icons["default"], null),
222
- ariaLabel: 'CSS editor',
223
- type: 'css',
224
- onToggle: function onToggle(change) {
225
- var type = 'css';
226
- var hasMark = change.value.activeMarks.find(function (entry) {
227
- return entry.type === type;
228
- });
229
- if (hasMark) {
230
- change.removeMark(hasMark);
231
- } else {
232
- var newMark = _slate.Mark.create(type);
233
- change.addMark(newMark);
234
- }
235
- return change;
236
- },
237
- onClick: function onClick(value, onChange, getFocusedValue) {
238
- var type = 'css';
239
- var hasMark = value.activeMarks.find(function (entry) {
240
- return entry.type === type;
241
- });
242
- var change = value.change();
243
- if (hasMark) {
244
- change.removeMark(hasMark);
245
- onChange(change);
246
- return;
247
- }
248
-
249
- // keeping this if implementation needs to be changed to regular blocks instead of marks
250
- // let nodeWithClass = getNodeWithClass(value, opts);
251
- //
252
- // if (nodeWithClass) {
253
- // const nodeAttributes = nodeWithClass.data.get('attributes');
254
- //
255
- // opts.names.forEach((name) => {
256
- // if (nodeAttributes.class.includes(name)) {
257
- // nodeAttributes.class = nodeAttributes.class.replace(name, '');
258
- // }
259
- // });
260
- //
261
- // // keeping only one space between classes
262
- // nodeAttributes.class = nodeAttributes.class.replace(/ +/g, ' ');
263
- //
264
- // nodeWithClass.data.set('attributes', nodeAttributes);
265
- //
266
- // let change = value.change();
267
- // change.replaceNodeByKey(nodeWithClass.key, nodeWithClass);
268
- //
269
- // onChange(change);
270
- // return;
271
- // }
272
-
273
- var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
274
- var valueToUse = value;
275
- var callback = function callback(className, focus) {
276
- if (getFocusedValue) {
277
- valueToUse = getFocusedValue() || valueToUse;
278
- }
279
- if (className) {
280
- var _change = valueToUse.change();
281
- var newMark = _slate.Mark.create({
282
- object: 'mark',
283
- type: 'css',
284
- data: {
285
- attributes: {
286
- "class": className
287
- }
288
- }
289
- });
290
- _change.addMark(newMark);
291
- // keeping this if implementation needs to be changed to regular blocks instead of marks
292
- // change = change.wrapInline({ type: 'span', data: { attributes: { class: className } } });
293
- //
294
- // // change = change.splitBlockAtRange(adaptedRange);
295
- // //
296
- // // const newBlock = change.value.document.getFurthestBlock(change.value.selection.endKey);
297
- // //
298
- // // change = change.setNodeByKey(newBlock.key, { data: { attributes: { class: className } } });
299
- //
300
- // valueToUse = change.value;
301
- // log('[characters:insert]: ', value);
302
- onChange(_change);
303
- }
304
- log('[characters:click]');
305
- if (focus) {
306
- setTimeout(function () {
307
- if (editorDOM) {
308
- editorDOM.focus();
309
- }
310
- }, 0);
311
- }
312
- };
313
- var textNode = value.document.getTextsAtRangeAsArray(value.selection)[0];
314
- if (textNode) {
315
- var parentNode = findParentNodeInfo(value, textNode, opts);
316
- insertDialog({
317
- editorDOM: editorDOM,
318
- value: valueToUse,
319
- callback: callback,
320
- opts: opts,
321
- textNode: textNode,
322
- parentNode: parentNode
323
- });
324
- }
325
- }
326
- },
327
- renderMark: function renderMark(props) {
328
- if (props.mark.type === 'css') {
329
- var _ref4 = props.mark || {},
330
- data = _ref4.data;
331
- var jsonData = (data === null || data === void 0 ? void 0 : data.toJSON()) || {};
332
- return /*#__PURE__*/_react["default"].createElement("span", jsonData.attributes, props.children);
333
- }
334
- }
335
- };
336
- return plugin;
337
- }
338
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGllbnQiLCJfTGlzdCIsIl9zbGF0ZSIsIl9MaXN0SXRlbSIsIl9kZWJ1ZyIsIl9pY29ucyIsImxvZyIsImRlYnVnIiwicmVtb3ZlRGlhbG9ncyIsImV4cG9ydHMiLCJwcmV2RGlhbG9ncyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJzIiwicmVtb3ZlIiwiaW5zZXJ0RGlhbG9nIiwiX3JlZiIsIl9wYXJlbnROb2RlJGRhdGEiLCJlZGl0b3JET00iLCJ2YWx1ZSIsImNhbGxiYWNrIiwib3B0cyIsInRleHROb2RlIiwicGFyZW50Tm9kZSIsIm5ld0VsIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInBvcG92ZXJFbCIsImNsb3NlUG9wT3ZlciIsImZpcnN0Q2FsbE1hZGUiLCJsaXN0ZW5lciIsImUiLCJmb2N1c0lzSW5Nb2RhbHMiLCJjb250YWlucyIsInRhcmdldCIsImZvY3VzSXNJbkVkaXRvciIsImhhbmRsZUNsb3NlIiwidW5kZWZpbmVkIiwiYm9keSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDaGFuZ2UiLCJuYW1lIiwic2VsZWN0ZWRUZXh0IiwidGV4dCIsInNsaWNlIiwic2VsZWN0aW9uIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJwYXJlbnROb2RlQ2xhc3MiLCJkYXRhIiwiZ2V0IiwiY3JlYXRlSFRNTCIsImh0bWwiLCJjb25jYXQiLCJ0YWciLCJvYmplY3QiLCJlbCIsInN0eWxlIiwiYmFja2dyb3VuZCIsImhlaWdodCIsInBhZGRpbmciLCJvdmVyZmxvdyIsImRpc3BsYXkiLCJmbGV4RmxvdyIsImNvbXBvbmVudCIsIm5hbWVzIiwibWFwIiwiaSIsImtleSIsImJ1dHRvbiIsIm9uQ2xpY2siLCJtYXJnaW5SaWdodCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiZGlhbG9nUm9vdCIsImNyZWF0ZVJvb3QiLCJyZW5kZXIiLCJzZXRUaW1lb3V0IiwiY3Vyc29ySXRlbSIsInF1ZXJ5U2VsZWN0b3IiLCJhbmNob3JLZXkiLCJib2R5UmVjdCIsInBhcmVudEVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3VuZFJlY3QiLCJhcHBlbmRDaGlsZCIsInkiLCJvZmZzZXRIZWlnaHQiLCJhZGRpdGlvbmFsVG9wT2Zmc2V0IiwidG9wIiwibWF4V2lkdGgiLCJwb3NpdGlvbiIsInpJbmRleCIsImxlZnRWYWx1ZSIsImxlZnQiLCJNYXRoIiwiYWJzIiwib2Zmc2V0V2lkdGgiLCJyaWdodFZhbHVlIiwieCIsImxlZnRBbGlnbmVkV2lkdGgiLCJyaWdodCIsInJpZ2h0QWxpZ25lZFdpZHRoIiwiYWRkRXZlbnRMaXN0ZW5lciIsImZpbmRQYXJlbnROb2RlSW5mbyIsIl9jbG9zZXN0SW5saW5lJG5vZGVzIiwiX2Nsb3Nlc3RCbG9jayRub2RlcyIsImNsb3Nlc3RJbmxpbmUiLCJnZXRDbG9zZXN0SW5saW5lIiwiZW5kS2V5IiwiY2xvc2VzdEJsb2NrIiwiZ2V0Q2xvc2VzdEJsb2NrIiwibm9kZVRvVXNlIiwibm9kZXMiLCJmaW5kIiwibiIsImdldE5vZGVXaXRoQ2xhc3MiLCJfYmxvY2tzQXRSYW5nZSQiLCJfaW5saW5lc0F0UmFuZ2UkIiwiX2Jsb2NrRGF0YSRhdHRyaWJ1dGVzIiwiX2lubGluZURhdGEkYXR0cmlidXRlIiwiYmxvY2tzQXRSYW5nZSIsImdldEJsb2Nrc0F0UmFuZ2VBc0FycmF5IiwiaW5saW5lc0F0UmFuZ2UiLCJnZXRJbmxpbmVzQXRSYW5nZUFzQXJyYXkiLCJibG9ja0RhdGEiLCJ0b0pTT04iLCJpbmxpbmVEYXRhIiwiYXR0cmlidXRlcyIsIl9yZWYyIiwiYmxvY2tDbGFzcyIsIl9yZWYzIiwiaW5saW5lQ2xhc3MiLCJpbmxpbmVIYXNDbGFzcyIsImluY2x1ZGVzIiwiYmxvY2tIYXNDbGFzcyIsIkNTU1BsdWdpbiIsInBsdWdpbiIsInRvb2xiYXIiLCJpc01hcmsiLCJpY29uIiwiYXJpYUxhYmVsIiwidHlwZSIsIm9uVG9nZ2xlIiwiY2hhbmdlIiwiaGFzTWFyayIsImFjdGl2ZU1hcmtzIiwiZW50cnkiLCJyZW1vdmVNYXJrIiwibmV3TWFyayIsIk1hcmsiLCJjcmVhdGUiLCJhZGRNYXJrIiwib25DaGFuZ2UiLCJnZXRGb2N1c2VkVmFsdWUiLCJ2YWx1ZVRvVXNlIiwiZm9jdXMiLCJnZXRUZXh0c0F0UmFuZ2VBc0FycmF5IiwicmVuZGVyTWFyayIsInByb3BzIiwibWFyayIsIl9yZWY0IiwianNvbkRhdGEiLCJjaGlsZHJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2Nzcy9pbmRleC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50JztcbmltcG9ydCBMaXN0IGZyb20gJ0BtdWkvbWF0ZXJpYWwvTGlzdCc7XG5pbXBvcnQgeyBNYXJrIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gJ0BtdWkvbWF0ZXJpYWwvTGlzdEl0ZW0nO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBDc3NJY29uIGZyb20gJy4vaWNvbnMnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOmNoYXJhY3RlcnMnKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZURpYWxvZ3MgPSAoKSA9PiB7XG4gIGNvbnN0IHByZXZEaWFsb2dzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmluc2VydC1jc3MtZGlhbG9nJyk7XG5cbiAgbG9nKCdbY2hhcmFjdGVyczpyZW1vdmVEaWFsb2dzXScpO1xuICBwcmV2RGlhbG9ncy5mb3JFYWNoKChzKSA9PiBzLnJlbW92ZSgpKTtcbn07XG5cbmNvbnN0IGluc2VydERpYWxvZyA9ICh7IGVkaXRvckRPTSwgdmFsdWUsIGNhbGxiYWNrLCBvcHRzLCB0ZXh0Tm9kZSwgcGFyZW50Tm9kZSB9KSA9PiB7XG4gIGNvbnN0IG5ld0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgbG9nKCdbY2hhcmFjdGVyczppbnNlcnREaWFsb2ddJyk7XG5cbiAgcmVtb3ZlRGlhbG9ncygpO1xuXG4gIG5ld0VsLmNsYXNzTmFtZSA9ICdpbnNlcnQtY3NzLWRpYWxvZyc7XG5cbiAgbGV0IHBvcG92ZXJFbDtcblxuICBjb25zdCBjbG9zZVBvcE92ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHBvcG92ZXJFbCkge1xuICAgICAgcG9wb3ZlckVsLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICBsZXQgZmlyc3RDYWxsTWFkZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGxpc3RlbmVyID0gKGUpID0+IHtcbiAgICAvLyB0aGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHJpZ2h0IGFmdGVyIHNldHRpbmcgaXQgYmVjYXVzZVxuICAgIC8vIHRoaXMgdG9vbGJhciBpcyBhZGRlZCBvbiB0aGUgbW91c2Vkb3duIGV2ZW50XG4gICAgLy8gc28gcmlnaHQgYWZ0ZXIgbW91c2V1cCwgdGhlIGNsaWNrIHdpbGwgYmUgdHJpZ2dlcmVkXG4gICAgaWYgKGZpcnN0Q2FsbE1hZGUpIHtcbiAgICAgIGNvbnN0IGZvY3VzSXNJbk1vZGFscyA9IG5ld0VsLmNvbnRhaW5zKGUudGFyZ2V0KSB8fCAocG9wb3ZlckVsICYmIHBvcG92ZXJFbC5jb250YWlucyhlLnRhcmdldCkpO1xuICAgICAgY29uc3QgZm9jdXNJc0luRWRpdG9yID0gZWRpdG9yRE9NLmNvbnRhaW5zKGUudGFyZ2V0KTtcblxuICAgICAgaWYgKCEoZm9jdXNJc0luTW9kYWxzIHx8IGZvY3VzSXNJbkVkaXRvcikpIHtcbiAgICAgICAgaGFuZGxlQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlyc3RDYWxsTWFkZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgbmV3RWwucmVtb3ZlKCk7XG4gICAgY2xvc2VQb3BPdmVyKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmFtZSkgPT4ge1xuICAgIGNhbGxiYWNrKG5hbWUsIHRydWUpO1xuICAgIG5ld0VsLnJlbW92ZSgpO1xuICAgIGNsb3NlUG9wT3ZlcigpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gdGV4dE5vZGUudGV4dC5zbGljZSh2YWx1ZS5zZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LCB2YWx1ZS5zZWxlY3Rpb24uZm9jdXNPZmZzZXQpO1xuICBjb25zdCBwYXJlbnROb2RlQ2xhc3MgPSBwYXJlbnROb2RlPy5kYXRhPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uY2xhc3M7XG4gIGNvbnN0IGNyZWF0ZUhUTUwgPSAobmFtZSkgPT4ge1xuICAgIGxldCBodG1sID0gYDxzcGFuIGNsYXNzPVwiJHtuYW1lfVwiPiR7c2VsZWN0ZWRUZXh0fTwvc3Bhbj5gO1xuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgIGxldCB0YWc7XG5cbiAgICAgIGlmIChwYXJlbnROb2RlPy5vYmplY3QgPT09ICdpbmxpbmUnKSB7XG4gICAgICAgIHRhZyA9ICdzcGFuJztcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudE5vZGU/Lm9iamVjdCA9PT0gJ2Jsb2NrJykge1xuICAgICAgICB0YWcgPSAnZGl2JztcbiAgICAgIH1cblxuICAgICAgaHRtbCA9IGA8JHt0YWd9IGNsYXNzPVwiJHtwYXJlbnROb2RlQ2xhc3N9XCI+JHtwYXJlbnROb2RlLnRleHQuc2xpY2UoXG4gICAgICAgIDAsXG4gICAgICAgIHZhbHVlLnNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICApfSR7aHRtbH0ke3BhcmVudE5vZGUudGV4dC5zbGljZSh2YWx1ZS5zZWxlY3Rpb24uZm9jdXNPZmZzZXQpfTwvJHt0YWd9PmA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWw7XG4gIH07XG5cbiAgY29uc3QgZWwgPSAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZDogJ3doaXRlJywgaGVpZ2h0OiA1MDAsIHBhZGRpbmc6IDIwLCBvdmVyZmxvdzogJ2hpZGRlbicsIGRpc3BsYXk6ICdmbGV4JywgZmxleEZsb3c6ICdjb2x1bW4nIH19XG4gICAgPlxuICAgICAgPGgyPlBsZWFzZSBjaG9vc2UgYSBjc3MgY2xhc3M8L2gyPlxuICAgICAge3BhcmVudE5vZGVDbGFzcyAmJiA8ZGl2PlRoZSBjdXJyZW50IHBhcmVudCBoYXMgdGhpcyBjbGFzcyB7cGFyZW50Tm9kZUNsYXNzfTwvZGl2Pn1cbiAgICAgIDxMaXN0IGNvbXBvbmVudD1cIm5hdlwiIHN0eWxlPXt7IG92ZXJmbG93OiAnc2Nyb2xsJyB9fT5cbiAgICAgICAge29wdHMubmFtZXMubWFwKChuYW1lLCBpKSA9PiAoXG4gICAgICAgICAgPExpc3RJdGVtIGtleT17YHJ1bGUtJHtpfWB9IGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVDaGFuZ2UobmFtZSl9PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogMjAgfX0+e25hbWV9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgX19odG1sOiBjcmVhdGVIVE1MKG5hbWUpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xpc3RJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvTGlzdD5cbiAgICA8L2Rpdj5cbiAgKTtcblxuICBjb25zdCBkaWFsb2dSb290ID0gY3JlYXRlUm9vdChuZXdFbCk7XG4gIGRpYWxvZ1Jvb3QucmVuZGVyKGVsKTtcblxuICAvLyBVc2Ugc2V0VGltZW91dCB0byBlbnN1cmUgdGhlIGVsZW1lbnQgaXMgcmVuZGVyZWQgYmVmb3JlIHBvc2l0aW9uaW5nXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnNvckl0ZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1rZXk9XCIke3ZhbHVlLmFuY2hvcktleX1cIl1gKTtcblxuICAgIGlmIChjdXJzb3JJdGVtKSB7XG4gICAgICBjb25zdCBib2R5UmVjdCA9IGVkaXRvckRPTS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGJvdW5kUmVjdCA9IGN1cnNvckl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGVkaXRvckRPTS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChuZXdFbCk7XG5cbiAgICAgIC8vIHdoZW4gaGVpZ2h0IG9mIHRvb2xiYXIgZXhjZWVkcyBzY3JlZW4gLSBjYW4gaGFwcGVuIGluIHNjcm9sbGFibGUgY29udGV4dHNcbiAgICAgIGlmIChib3VuZFJlY3QueSA8IG5ld0VsLm9mZnNldEhlaWdodCkge1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsVG9wT2Zmc2V0ID0gbmV3RWwub2Zmc2V0SGVpZ2h0IC0gYm91bmRSZWN0LnkgKyAxMDtcbiAgICAgICAgbmV3RWwuc3R5bGUudG9wID0gYCR7YWRkaXRpb25hbFRvcE9mZnNldH1weGA7XG4gICAgICB9XG5cbiAgICAgIG5ld0VsLnN0eWxlLm1heFdpZHRoID0gJzUwMHB4JztcbiAgICAgIG5ld0VsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIGlmICghbmV3RWwuc3R5bGUudG9wKSB7XG4gICAgICAgIG5ld0VsLnN0eWxlLnRvcCA9ICcwJztcbiAgICAgIH1cbiAgICAgIG5ld0VsLnN0eWxlLnpJbmRleCA9IDk5OTk5O1xuXG4gICAgICBjb25zdCBsZWZ0VmFsdWUgPSBgJHtib3VuZFJlY3QubGVmdCArIE1hdGguYWJzKGJvZHlSZWN0LmxlZnQpICsgY3Vyc29ySXRlbS5vZmZzZXRXaWR0aCArIDEwfXB4YDtcblxuICAgICAgY29uc3QgcmlnaHRWYWx1ZSA9IGAke2JvdW5kUmVjdC54fXB4YDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9IGxlZnRWYWx1ZTtcblxuICAgICAgY29uc3QgbGVmdEFsaWduZWRXaWR0aCA9IG5ld0VsLm9mZnNldFdpZHRoO1xuXG4gICAgICBuZXdFbC5zdHlsZS5sZWZ0ID0gJ3Vuc2V0JztcbiAgICAgIG5ld0VsLnN0eWxlLnJpZ2h0ID0gcmlnaHRWYWx1ZTtcblxuICAgICAgY29uc3QgcmlnaHRBbGlnbmVkV2lkdGggPSBuZXdFbC5vZmZzZXRXaWR0aDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9ICd1bnNldCc7XG4gICAgICBuZXdFbC5zdHlsZS5yaWdodCA9ICd1bnNldCc7XG5cbiAgICAgIGlmIChsZWZ0QWxpZ25lZFdpZHRoID49IHJpZ2h0QWxpZ25lZFdpZHRoKSB7XG4gICAgICAgIG5ld0VsLnN0eWxlLmxlZnQgPSBsZWZ0VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdFbC5zdHlsZS5yaWdodCA9IHJpZ2h0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9LCAwKTtcbn07XG5cbmNvbnN0IGZpbmRQYXJlbnROb2RlSW5mbyA9ICh2YWx1ZSwgdGV4dE5vZGUpID0+IHtcbiAgY29uc3QgY2xvc2VzdElubGluZSA9IHZhbHVlLmRvY3VtZW50LmdldENsb3Nlc3RJbmxpbmUodmFsdWUuc2VsZWN0aW9uLmVuZEtleSk7XG4gIGNvbnN0IGNsb3Nlc3RCbG9jayA9IHZhbHVlLmRvY3VtZW50LmdldENsb3Nlc3RCbG9jayh2YWx1ZS5zZWxlY3Rpb24uZW5kS2V5KTtcbiAgbGV0IG5vZGVUb1VzZSA9IG51bGw7XG5cbiAgaWYgKGNsb3Nlc3RJbmxpbmU/Lm5vZGVzPy5maW5kKChuKSA9PiBuLmtleSA9PT0gdGV4dE5vZGUua2V5KSkge1xuICAgIG5vZGVUb1VzZSA9IGNsb3Nlc3RJbmxpbmU7XG4gIH1cblxuICBpZiAoY2xvc2VzdEJsb2NrPy5ub2Rlcz8uZmluZCgobikgPT4gbi5rZXkgPT09IHRleHROb2RlLmtleSkpIHtcbiAgICBub2RlVG9Vc2UgPSBjbG9zZXN0QmxvY2s7XG4gIH1cblxuICByZXR1cm4gbm9kZVRvVXNlO1xufTtcblxuLyoqXG4gKiBGaW5kIHRoZSBub2RlIHRoYXQgaGFzIGEgY2xhc3MgYXR0cmlidXRlIGFuZCByZXR1cm4gaXQuXG4gKiBLZWVwaW5nIHRoaXMgaW4gY2FzZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3NlcyBuZWVkcyB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBvcHRzXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb25zdCBnZXROb2RlV2l0aENsYXNzID0gKHZhbHVlLCBvcHRzKSA9PiB7XG4gIGNvbnN0IGJsb2Nrc0F0UmFuZ2UgPSB2YWx1ZS5kb2N1bWVudC5nZXRCbG9ja3NBdFJhbmdlQXNBcnJheSh2YWx1ZS5zZWxlY3Rpb24pO1xuICBjb25zdCBpbmxpbmVzQXRSYW5nZSA9IHZhbHVlLmRvY3VtZW50LmdldElubGluZXNBdFJhbmdlQXNBcnJheSh2YWx1ZS5zZWxlY3Rpb24pO1xuICBjb25zdCBibG9ja0RhdGEgPSBibG9ja3NBdFJhbmdlWzBdPy5kYXRhLnRvSlNPTigpIHx8IHt9O1xuICBjb25zdCBpbmxpbmVEYXRhID0gaW5saW5lc0F0UmFuZ2VbMF0/LmRhdGEudG9KU09OKCkgfHwge307XG5cbiAgaWYgKCFibG9ja0RhdGEuYXR0cmlidXRlcz8uY2xhc3MgJiYgIWlubGluZURhdGEuYXR0cmlidXRlcz8uY2xhc3MpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgY2xhc3M6IGJsb2NrQ2xhc3MgfSA9IGJsb2NrRGF0YS5hdHRyaWJ1dGVzIHx8IHt9O1xuICBjb25zdCB7IGNsYXNzOiBpbmxpbmVDbGFzcyB9ID0gaW5saW5lRGF0YS5hdHRyaWJ1dGVzIHx8IHt9O1xuICBjb25zdCBpbmxpbmVIYXNDbGFzcyA9IG9wdHMubmFtZXMuZmluZCgobmFtZSkgPT4gaW5saW5lQ2xhc3MuaW5jbHVkZXMobmFtZSkpO1xuXG4gIGlmIChpbmxpbmVIYXNDbGFzcykge1xuICAgIHJldHVybiBpbmxpbmVzQXRSYW5nZVswXTtcbiAgfVxuXG4gIGNvbnN0IGJsb2NrSGFzQ2xhc3MgPSBvcHRzLm5hbWVzLmZpbmQoKG5hbWUpID0+IGJsb2NrQ2xhc3MuaW5jbHVkZXMobmFtZSkpO1xuXG4gIGlmIChibG9ja0hhc0NsYXNzKSB7XG4gICAgcmV0dXJuIGJsb2Nrc0F0UmFuZ2VbMF07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogUGx1Z2luIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gYWRkIGEgY3NzIGNsYXMgdGhhdCBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBtb2RlbFxuICogb24gYSB0ZXh0IGVsZW1lbnQuIFdvcmtzIGxpa2UgYSBtYXJrIChib2xkLCBpdGFsaWMgZXRjLikuXG4gKiBAcGFyYW0gb3B0c1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENTU1BsdWdpbihvcHRzKSB7XG4gIGNvbnN0IHBsdWdpbiA9IHtcbiAgICBuYW1lOiAnZXh0cmFDU1NSdWxlcycsXG4gICAgdG9vbGJhcjoge1xuICAgICAgaXNNYXJrOiB0cnVlLFxuICAgICAgaWNvbjogPENzc0ljb24gLz4sXG4gICAgICBhcmlhTGFiZWw6ICdDU1MgZWRpdG9yJyxcbiAgICAgIHR5cGU6ICdjc3MnLFxuICAgICAgb25Ub2dnbGU6IChjaGFuZ2UpID0+IHtcbiAgICAgICAgY29uc3QgdHlwZSA9ICdjc3MnO1xuICAgICAgICBjb25zdCBoYXNNYXJrID0gY2hhbmdlLnZhbHVlLmFjdGl2ZU1hcmtzLmZpbmQoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVudHJ5LnR5cGUgPT09IHR5cGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNNYXJrKSB7XG4gICAgICAgICAgY2hhbmdlLnJlbW92ZU1hcmsoaGFzTWFyayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3TWFyayA9IE1hcmsuY3JlYXRlKHR5cGUpO1xuXG4gICAgICAgICAgY2hhbmdlLmFkZE1hcmsobmV3TWFyayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hhbmdlO1xuICAgICAgfSxcbiAgICAgIG9uQ2xpY2s6ICh2YWx1ZSwgb25DaGFuZ2UsIGdldEZvY3VzZWRWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlID0gJ2Nzcyc7XG4gICAgICAgIGNvbnN0IGhhc01hcmsgPSB2YWx1ZS5hY3RpdmVNYXJrcy5maW5kKChlbnRyeSkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbnRyeS50eXBlID09PSB0eXBlO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgY2hhbmdlID0gdmFsdWUuY2hhbmdlKCk7XG5cbiAgICAgICAgaWYgKGhhc01hcmspIHtcbiAgICAgICAgICBjaGFuZ2UucmVtb3ZlTWFyayhoYXNNYXJrKTtcbiAgICAgICAgICBvbkNoYW5nZShjaGFuZ2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGtlZXBpbmcgdGhpcyBpZiBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIHJlZ3VsYXIgYmxvY2tzIGluc3RlYWQgb2YgbWFya3NcbiAgICAgICAgLy8gbGV0IG5vZGVXaXRoQ2xhc3MgPSBnZXROb2RlV2l0aENsYXNzKHZhbHVlLCBvcHRzKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKG5vZGVXaXRoQ2xhc3MpIHtcbiAgICAgICAgLy8gICBjb25zdCBub2RlQXR0cmlidXRlcyA9IG5vZGVXaXRoQ2xhc3MuZGF0YS5nZXQoJ2F0dHJpYnV0ZXMnKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICBvcHRzLm5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgLy8gICAgIGlmIChub2RlQXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAvLyAgICAgICBub2RlQXR0cmlidXRlcy5jbGFzcyA9IG5vZGVBdHRyaWJ1dGVzLmNsYXNzLnJlcGxhY2UobmFtZSwgJycpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH0pO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgIC8vIGtlZXBpbmcgb25seSBvbmUgc3BhY2UgYmV0d2VlbiBjbGFzc2VzXG4gICAgICAgIC8vICAgbm9kZUF0dHJpYnV0ZXMuY2xhc3MgPSBub2RlQXR0cmlidXRlcy5jbGFzcy5yZXBsYWNlKC8gKy9nLCAnICcpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgIG5vZGVXaXRoQ2xhc3MuZGF0YS5zZXQoJ2F0dHJpYnV0ZXMnLCBub2RlQXR0cmlidXRlcyk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgbGV0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpO1xuICAgICAgICAvLyAgIGNoYW5nZS5yZXBsYWNlTm9kZUJ5S2V5KG5vZGVXaXRoQ2xhc3Mua2V5LCBub2RlV2l0aENsYXNzKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICBvbkNoYW5nZShjaGFuZ2UpO1xuICAgICAgICAvLyAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGNvbnN0IGVkaXRvckRPTSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWtleT1cIiR7dmFsdWUuZG9jdW1lbnQua2V5fVwiXWApO1xuICAgICAgICBsZXQgdmFsdWVUb1VzZSA9IHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKGNsYXNzTmFtZSwgZm9jdXMpID0+IHtcbiAgICAgICAgICBpZiAoZ2V0Rm9jdXNlZFZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZVRvVXNlID0gZ2V0Rm9jdXNlZFZhbHVlKCkgfHwgdmFsdWVUb1VzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBsZXQgY2hhbmdlID0gdmFsdWVUb1VzZS5jaGFuZ2UoKTtcblxuICAgICAgICAgICAgY29uc3QgbmV3TWFyayA9IE1hcmsuY3JlYXRlKHtcbiAgICAgICAgICAgICAgb2JqZWN0OiAnbWFyaycsXG4gICAgICAgICAgICAgIHR5cGU6ICdjc3MnLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgY2xhc3M6IGNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNoYW5nZS5hZGRNYXJrKG5ld01hcmspO1xuICAgICAgICAgICAgLy8ga2VlcGluZyB0aGlzIGlmIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gcmVndWxhciBibG9ja3MgaW5zdGVhZCBvZiBtYXJrc1xuICAgICAgICAgICAgLy8gY2hhbmdlID0gY2hhbmdlLndyYXBJbmxpbmUoeyB0eXBlOiAnc3BhbicsIGRhdGE6IHsgYXR0cmlidXRlczogeyBjbGFzczogY2xhc3NOYW1lIH0gfSB9KTtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAvLyBjaGFuZ2UgPSBjaGFuZ2Uuc3BsaXRCbG9ja0F0UmFuZ2UoYWRhcHRlZFJhbmdlKTtcbiAgICAgICAgICAgIC8vIC8vXG4gICAgICAgICAgICAvLyAvLyBjb25zdCBuZXdCbG9jayA9IGNoYW5nZS52YWx1ZS5kb2N1bWVudC5nZXRGdXJ0aGVzdEJsb2NrKGNoYW5nZS52YWx1ZS5zZWxlY3Rpb24uZW5kS2V5KTtcbiAgICAgICAgICAgIC8vIC8vXG4gICAgICAgICAgICAvLyAvLyBjaGFuZ2UgPSBjaGFuZ2Uuc2V0Tm9kZUJ5S2V5KG5ld0Jsb2NrLmtleSwgeyBkYXRhOiB7IGF0dHJpYnV0ZXM6IHsgY2xhc3M6IGNsYXNzTmFtZSB9IH0gfSk7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gdmFsdWVUb1VzZSA9IGNoYW5nZS52YWx1ZTtcbiAgICAgICAgICAgIC8vIGxvZygnW2NoYXJhY3RlcnM6aW5zZXJ0XTogJywgdmFsdWUpO1xuICAgICAgICAgICAgb25DaGFuZ2UoY2hhbmdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsb2coJ1tjaGFyYWN0ZXJzOmNsaWNrXScpO1xuXG4gICAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVkaXRvckRPTSkge1xuICAgICAgICAgICAgICAgIGVkaXRvckRPTS5mb2N1cygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRleHROb2RlID0gdmFsdWUuZG9jdW1lbnQuZ2V0VGV4dHNBdFJhbmdlQXNBcnJheSh2YWx1ZS5zZWxlY3Rpb24pWzBdO1xuXG4gICAgICAgIGlmICh0ZXh0Tm9kZSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBmaW5kUGFyZW50Tm9kZUluZm8odmFsdWUsIHRleHROb2RlLCBvcHRzKTtcblxuICAgICAgICAgIGluc2VydERpYWxvZyh7IGVkaXRvckRPTSwgdmFsdWU6IHZhbHVlVG9Vc2UsIGNhbGxiYWNrLCBvcHRzLCB0ZXh0Tm9kZSwgcGFyZW50Tm9kZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHJlbmRlck1hcmsocHJvcHMpIHtcbiAgICAgIGlmIChwcm9wcy5tYXJrLnR5cGUgPT09ICdjc3MnKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcHJvcHMubWFyayB8fCB7fTtcbiAgICAgICAgY29uc3QganNvbkRhdGEgPSBkYXRhPy50b0pTT04oKSB8fCB7fTtcblxuICAgICAgICByZXR1cm4gPHNwYW4gey4uLmpzb25EYXRhLmF0dHJpYnV0ZXN9Pntwcm9wcy5jaGlsZHJlbn08L3NwYW4+O1xuICAgICAgfVxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIHBsdWdpbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFNTyxHQUFHLEdBQUcsSUFBQUMsaUJBQUssRUFBQywyQ0FBMkMsQ0FBQztBQUV2RCxJQUFNQyxhQUFhLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQVM7RUFDakMsSUFBTUUsV0FBVyxHQUFHQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO0VBRW5FTixHQUFHLENBQUMsNEJBQTRCLENBQUM7RUFDakNJLFdBQVcsQ0FBQ0csT0FBTyxDQUFDLFVBQUNDLENBQUM7SUFBQSxPQUFLQSxDQUFDLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUN4QyxDQUFDO0FBRUQsSUFBTUMs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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_List","_slate","_ListItem","_debug","_icons","log","debug","removeDialogs","exports","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","_ref","_parentNode$data","editorDOM","value","callback","opts","textNode","parentNode","newEl","createElement","className","popoverEl","closePopOver","firstCallMade","listener","e","focusIsInModals","contains","target","focusIsInEditor","handleClose","undefined","body","removeEventListener","handleChange","name","selectedText","text","slice","selection","anchorOffset","focusOffset","parentNodeClass","data","get","createHTML","html","concat","tag","object","el","style","background","height","padding","overflow","display","flexFlow","component","names","map","i","key","button","onClick","marginRight","dangerouslySetInnerHTML","__html","dialogRoot","createRoot","render","setTimeout","cursorItem","querySelector","anchorKey","bodyRect","parentElement","getBoundingClientRect","boundRect","appendChild","y","offsetHeight","additionalTopOffset","top","maxWidth","position","zIndex","leftValue","left","Math","abs","offsetWidth","rightValue","x","leftAlignedWidth","right","rightAlignedWidth","addEventListener","findParentNodeInfo","_closestInline$nodes","_closestBlock$nodes","closestInline","getClosestInline","endKey","closestBlock","getClosestBlock","nodeToUse","nodes","find","n","getNodeWithClass","_blocksAtRange$","_inlinesAtRange$","_blockData$attributes","_inlineData$attribute","blocksAtRange","getBlocksAtRangeAsArray","inlinesAtRange","getInlinesAtRangeAsArray","blockData","toJSON","inlineData","attributes","_ref2","blockClass","_ref3","inlineClass","inlineHasClass","includes","blockHasClass","CSSPlugin","plugin","toolbar","isMark","icon","ariaLabel","type","onToggle","change","hasMark","activeMarks","entry","removeMark","newMark","Mark","create","addMark","onChange","getFocusedValue","valueToUse","focus","getTextsAtRangeAsArray","renderMark","props","mark","_ref4","jsonData","children"],"sources":["../../../src/plugins/css/index.jsx"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport List from '@mui/material/List';\nimport { Mark } from 'slate';\nimport ListItem from '@mui/material/ListItem';\nimport debug from 'debug';\nimport CssIcon from './icons';\n\nconst log = debug('@pie-lib:editable-html:plugins:characters');\n\nexport const removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-css-dialog');\n\n log('[characters:removeDialogs]');\n prevDialogs.forEach((s) => s.remove());\n};\n\nconst insertDialog = ({ editorDOM, value, callback, opts, textNode, parentNode }) => {\n const newEl = document.createElement('div');\n\n log('[characters:insertDialog]');\n\n removeDialogs();\n\n newEl.className = 'insert-css-dialog';\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n };\n\n let firstCallMade = false;\n\n const listener = (e) => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n const focusIsInModals = newEl.contains(e.target) || (popoverEl && popoverEl.contains(e.target));\n const focusIsInEditor = editorDOM.contains(e.target);\n\n if (!(focusIsInModals || focusIsInEditor)) {\n handleClose();\n }\n } else {\n firstCallMade = true;\n }\n };\n\n const handleClose = () => {\n callback(undefined, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const handleChange = (name) => {\n callback(name, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const selectedText = textNode.text.slice(value.selection.anchorOffset, value.selection.focusOffset);\n const parentNodeClass = parentNode?.data?.get('attributes')?.class;\n const createHTML = (name) => {\n let html = `<span class=\"${name}\">${selectedText}</span>`;\n\n if (parentNode) {\n let tag;\n\n if (parentNode?.object === 'inline') {\n tag = 'span';\n }\n\n if (parentNode?.object === 'block') {\n tag = 'div';\n }\n\n html = `<${tag} class=\"${parentNodeClass}\">${parentNode.text.slice(\n 0,\n value.selection.anchorOffset,\n )}${html}${parentNode.text.slice(value.selection.focusOffset)}</${tag}>`;\n }\n\n return html;\n };\n\n const el = (\n <div\n style={{ background: 'white', height: 500, padding: 20, overflow: 'hidden', display: 'flex', flexFlow: 'column' }}\n >\n <h2>Please choose a css class</h2>\n {parentNodeClass && <div>The current parent has this class {parentNodeClass}</div>}\n <List component=\"nav\" style={{ overflow: 'scroll' }}>\n {opts.names.map((name, i) => (\n <ListItem key={`rule-${i}`} button onClick={() => handleChange(name)}>\n <div style={{ marginRight: 20 }}>{name}</div>\n <div\n dangerouslySetInnerHTML={{\n __html: createHTML(name),\n }}\n />\n </ListItem>\n ))}\n </List>\n </div>\n );\n\n const dialogRoot = createRoot(newEl);\n dialogRoot.render(el);\n\n // Use setTimeout to ensure the element is rendered before positioning\n setTimeout(() => {\n const cursorItem = document.querySelector(`[data-key=\"${value.anchorKey}\"]`);\n\n if (cursorItem) {\n const bodyRect = editorDOM.parentElement.parentElement.parentElement.getBoundingClientRect();\n const boundRect = cursorItem.getBoundingClientRect();\n\n editorDOM.parentElement.parentElement.parentElement.appendChild(newEl);\n\n // when height of toolbar exceeds screen - can happen in scrollable contexts\n if (boundRect.y < newEl.offsetHeight) {\n const additionalTopOffset = newEl.offsetHeight - boundRect.y + 10;\n newEl.style.top = `${additionalTopOffset}px`;\n }\n\n newEl.style.maxWidth = '500px';\n newEl.style.position = 'absolute';\n if (!newEl.style.top) {\n newEl.style.top = '0';\n }\n newEl.style.zIndex = 99999;\n\n const leftValue = `${boundRect.left + Math.abs(bodyRect.left) + cursorItem.offsetWidth + 10}px`;\n\n const rightValue = `${boundRect.x}px`;\n\n newEl.style.left = leftValue;\n\n const leftAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = rightValue;\n\n const rightAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = 'unset';\n\n if (leftAlignedWidth >= rightAlignedWidth) {\n newEl.style.left = leftValue;\n } else {\n newEl.style.right = rightValue;\n }\n\n document.body.addEventListener('click', listener);\n }\n }, 0);\n};\n\nconst findParentNodeInfo = (value, textNode) => {\n const closestInline = value.document.getClosestInline(value.selection.endKey);\n const closestBlock = value.document.getClosestBlock(value.selection.endKey);\n let nodeToUse = null;\n\n if (closestInline?.nodes?.find((n) => n.key === textNode.key)) {\n nodeToUse = closestInline;\n }\n\n if (closestBlock?.nodes?.find((n) => n.key === textNode.key)) {\n nodeToUse = closestBlock;\n }\n\n return nodeToUse;\n};\n\n/**\n * Find the node that has a class attribute and return it.\n * Keeping this in case the implementation of classes needs to be changed\n * @param value\n * @param opts\n * @returns {*}\n */\n// eslint-disable-next-line no-unused-vars\nconst getNodeWithClass = (value, opts) => {\n const blocksAtRange = value.document.getBlocksAtRangeAsArray(value.selection);\n const inlinesAtRange = value.document.getInlinesAtRangeAsArray(value.selection);\n const blockData = blocksAtRange[0]?.data.toJSON() || {};\n const inlineData = inlinesAtRange[0]?.data.toJSON() || {};\n\n if (!blockData.attributes?.class && !inlineData.attributes?.class) {\n return null;\n }\n\n const { class: blockClass } = blockData.attributes || {};\n const { class: inlineClass } = inlineData.attributes || {};\n const inlineHasClass = opts.names.find((name) => inlineClass.includes(name));\n\n if (inlineHasClass) {\n return inlinesAtRange[0];\n }\n\n const blockHasClass = opts.names.find((name) => blockClass.includes(name));\n\n if (blockHasClass) {\n return blocksAtRange[0];\n }\n\n return null;\n};\n\n/**\n * Plugin in order to be able to add a css clas that is provided through the model\n * on a text element. Works like a mark (bold, italic etc.).\n * @param opts\n * @constructor\n */\nexport default function CSSPlugin(opts) {\n const plugin = {\n name: 'extraCSSRules',\n toolbar: {\n isMark: true,\n icon: <CssIcon />,\n ariaLabel: 'CSS editor',\n type: 'css',\n onToggle: (change) => {\n const type = 'css';\n const hasMark = change.value.activeMarks.find((entry) => {\n return entry.type === type;\n });\n\n if (hasMark) {\n change.removeMark(hasMark);\n } else {\n const newMark = Mark.create(type);\n\n change.addMark(newMark);\n }\n\n return change;\n },\n onClick: (value, onChange, getFocusedValue) => {\n const type = 'css';\n const hasMark = value.activeMarks.find((entry) => {\n return entry.type === type;\n });\n\n let change = value.change();\n\n if (hasMark) {\n change.removeMark(hasMark);\n onChange(change);\n return;\n }\n\n // keeping this if implementation needs to be changed to regular blocks instead of marks\n // let nodeWithClass = getNodeWithClass(value, opts);\n //\n // if (nodeWithClass) {\n // const nodeAttributes = nodeWithClass.data.get('attributes');\n //\n // opts.names.forEach((name) => {\n // if (nodeAttributes.class.includes(name)) {\n // nodeAttributes.class = nodeAttributes.class.replace(name, '');\n // }\n // });\n //\n // // keeping only one space between classes\n // nodeAttributes.class = nodeAttributes.class.replace(/ +/g, ' ');\n //\n // nodeWithClass.data.set('attributes', nodeAttributes);\n //\n // let change = value.change();\n // change.replaceNodeByKey(nodeWithClass.key, nodeWithClass);\n //\n // onChange(change);\n // return;\n // }\n\n const editorDOM = document.querySelector(`[data-key=\"${value.document.key}\"]`);\n let valueToUse = value;\n\n const callback = (className, focus) => {\n if (getFocusedValue) {\n valueToUse = getFocusedValue() || valueToUse;\n }\n\n if (className) {\n let change = valueToUse.change();\n\n const newMark = Mark.create({\n object: 'mark',\n type: 'css',\n data: {\n attributes: {\n class: className,\n },\n },\n });\n\n change.addMark(newMark);\n // keeping this if implementation needs to be changed to regular blocks instead of marks\n // change = change.wrapInline({ type: 'span', data: { attributes: { class: className } } });\n //\n // // change = change.splitBlockAtRange(adaptedRange);\n // //\n // // const newBlock = change.value.document.getFurthestBlock(change.value.selection.endKey);\n // //\n // // change = change.setNodeByKey(newBlock.key, { data: { attributes: { class: className } } });\n //\n // valueToUse = change.value;\n // log('[characters:insert]: ', value);\n onChange(change);\n }\n\n log('[characters:click]');\n\n if (focus) {\n setTimeout(() => {\n if (editorDOM) {\n editorDOM.focus();\n }\n }, 0);\n }\n };\n const textNode = value.document.getTextsAtRangeAsArray(value.selection)[0];\n\n if (textNode) {\n const parentNode = findParentNodeInfo(value, textNode, opts);\n\n insertDialog({ editorDOM, value: valueToUse, callback, opts, textNode, parentNode });\n }\n },\n },\n renderMark(props) {\n if (props.mark.type === 'css') {\n const { data } = props.mark || {};\n const jsonData = data?.toJSON() || {};\n\n return <span {...jsonData.attributes}>{props.children}</span>;\n }\n },\n };\n\n return plugin;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,98 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.ICON_TYPE = exports.CONTENT_TYPE = void 0;
8
- exports["default"] = CustomPlugin;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _react = _interopRequireDefault(require("react"));
11
- var _serialization = require("../../serialization");
12
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
- // We're possibly going to have to support content types, so starting it as an enum
15
- var CONTENT_TYPE = exports.CONTENT_TYPE = {
16
- FRAGMENT: 'FRAGMENT'
17
- };
18
-
19
- // We're possibly going to have to support multiple icon types, so starting it as an enum
20
- var ICON_TYPE = exports.ICON_TYPE = {
21
- SVG: 'SVG'
22
- };
23
- var getIcon = function getIcon(customPluginProps) {
24
- var svg = customPluginProps.icon;
25
- switch (customPluginProps.iconType) {
26
- case ICON_TYPE.SVG:
27
- return /*#__PURE__*/_react["default"].createElement("span", {
28
- style: {
29
- width: 28,
30
- height: 28
31
- },
32
- dangerouslySetInnerHTML: {
33
- __html: svg
34
- }
35
- });
36
- default:
37
- return /*#__PURE__*/_react["default"].createElement("span", null, customPluginProps.iconAlt);
38
- }
39
- };
40
- function CustomPlugin(type, customPluginProps) {
41
- var toolbar = {
42
- icon: getIcon(customPluginProps),
43
- onClick: function onClick(value, onChange, getFocusedValue) {
44
- var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
45
- var valueToUse = value;
46
- var callback = function callback(_ref, focus) {
47
- var customContent = _ref.customContent,
48
- contentType = _ref.contentType;
49
- valueToUse = getFocusedValue();
50
- switch (contentType) {
51
- case CONTENT_TYPE.FRAGMENT:
52
- default:
53
- {
54
- var contentValue = (0, _serialization.htmlToValue)(customContent);
55
- var change = valueToUse.change().insertFragment(contentValue.document);
56
- valueToUse = change.value;
57
- onChange(change);
58
- break;
59
- }
60
- }
61
- if (focus) {
62
- if (editorDOM) {
63
- editorDOM.focus();
64
- }
65
- }
66
- };
67
-
68
- // NOTE: the emitted event (custom event named by client) will be suffixed with "PIE-"
69
- window.dispatchEvent(new CustomEvent("PIE-".concat(customPluginProps.event), {
70
- detail: _objectSpread(_objectSpread({}, customPluginProps), {}, {
71
- callback: callback
72
- })
73
- }));
74
- },
75
- supports: function supports(node) {
76
- return node.object === 'inline' && node.type === type;
77
- }
78
- };
79
- return {
80
- name: type,
81
- toolbar: toolbar,
82
- renderNode: function renderNode(props) {
83
- if (props.node.type === type) {
84
- var node = props.node;
85
- var data = node.data;
86
- var jsonData = data.toJSON();
87
- var customContent = jsonData.customContent,
88
- contentType = jsonData.contentType;
89
- switch (contentType) {
90
- case CONTENT_TYPE.FRAGMENT:
91
- default:
92
- return customContent;
93
- }
94
- }
95
- }
96
- };
97
- }
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zZXJpYWxpemF0aW9uIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJDT05URU5UX1RZUEUiLCJleHBvcnRzIiwiRlJBR01FTlQiLCJJQ09OX1RZUEUiLCJTVkciLCJnZXRJY29uIiwiY3VzdG9tUGx1Z2luUHJvcHMiLCJzdmciLCJpY29uIiwiaWNvblR5cGUiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiaWNvbkFsdCIsIkN1c3RvbVBsdWdpbiIsInR5cGUiLCJ0b29sYmFyIiwib25DbGljayIsInZhbHVlIiwib25DaGFuZ2UiLCJnZXRGb2N1c2VkVmFsdWUiLCJlZGl0b3JET00iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJrZXkiLCJ2YWx1ZVRvVXNlIiwiY2FsbGJhY2siLCJfcmVmIiwiZm9jdXMiLCJjdXN0b21Db250ZW50IiwiY29udGVudFR5cGUiLCJjb250ZW50VmFsdWUiLCJodG1sVG9WYWx1ZSIsImNoYW5nZSIsImluc2VydEZyYWdtZW50Iiwid2luZG93IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZXZlbnQiLCJkZXRhaWwiLCJzdXBwb3J0cyIsIm5vZGUiLCJvYmplY3QiLCJuYW1lIiwicmVuZGVyTm9kZSIsInByb3BzIiwiZGF0YSIsImpzb25EYXRhIiwidG9KU09OIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvY3VzdG9tUGx1Z2luL2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaHRtbFRvVmFsdWUgfSBmcm9tICcuLi8uLi9zZXJpYWxpemF0aW9uJztcblxuLy8gV2UncmUgcG9zc2libHkgZ29pbmcgdG8gaGF2ZSB0byBzdXBwb3J0IGNvbnRlbnQgdHlwZXMsIHNvIHN0YXJ0aW5nIGl0IGFzIGFuIGVudW1cbmV4cG9ydCBjb25zdCBDT05URU5UX1RZUEUgPSB7XG4gIEZSQUdNRU5UOiAnRlJBR01FTlQnLFxufTtcblxuLy8gV2UncmUgcG9zc2libHkgZ29pbmcgdG8gaGF2ZSB0byBzdXBwb3J0IG11bHRpcGxlIGljb24gdHlwZXMsIHNvIHN0YXJ0aW5nIGl0IGFzIGFuIGVudW1cbmV4cG9ydCBjb25zdCBJQ09OX1RZUEUgPSB7XG4gIFNWRzogJ1NWRycsXG59O1xuXG5jb25zdCBnZXRJY29uID0gKGN1c3RvbVBsdWdpblByb3BzKSA9PiB7XG4gIGNvbnN0IHN2ZyA9IGN1c3RvbVBsdWdpblByb3BzLmljb247XG5cbiAgc3dpdGNoIChjdXN0b21QbHVnaW5Qcm9wcy5pY29uVHlwZSkge1xuICAgIGNhc2UgSUNPTl9UWVBFLlNWRzpcbiAgICAgIHJldHVybiA8c3BhbiBzdHlsZT17eyB3aWR0aDogMjgsIGhlaWdodDogMjggfX0gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBzdmcgfX0gLz47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiA8c3Bhbj57Y3VzdG9tUGx1Z2luUHJvcHMuaWNvbkFsdH08L3NwYW4+O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDdXN0b21QbHVnaW4odHlwZSwgY3VzdG9tUGx1Z2luUHJvcHMpIHtcbiAgY29uc3QgdG9vbGJhciA9IHtcbiAgICBpY29uOiBnZXRJY29uKGN1c3RvbVBsdWdpblByb3BzKSxcbiAgICBvbkNsaWNrOiAodmFsdWUsIG9uQ2hhbmdlLCBnZXRGb2N1c2VkVmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGVkaXRvckRPTSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWtleT1cIiR7dmFsdWUuZG9jdW1lbnQua2V5fVwiXWApO1xuICAgICAgbGV0IHZhbHVlVG9Vc2UgPSB2YWx1ZTtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gKHsgY3VzdG9tQ29udGVudCwgY29udGVudFR5cGUgfSwgZm9jdXMpID0+IHtcbiAgICAgICAgdmFsdWVUb1VzZSA9IGdldEZvY3VzZWRWYWx1ZSgpO1xuXG4gICAgICAgIHN3aXRjaCAoY29udGVudFR5cGUpIHtcbiAgICAgICAgICBjYXNlIENPTlRFTlRfVFlQRS5GUkFHTUVOVDpcbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VmFsdWUgPSBodG1sVG9WYWx1ZShjdXN0b21Db250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlVG9Vc2UuY2hhbmdlKCkuaW5zZXJ0RnJhZ21lbnQoY29udGVudFZhbHVlLmRvY3VtZW50KTtcblxuICAgICAgICAgICAgdmFsdWVUb1VzZSA9IGNoYW5nZS52YWx1ZTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb2N1cykge1xuICAgICAgICAgIGlmIChlZGl0b3JET00pIHtcbiAgICAgICAgICAgIGVkaXRvckRPTS5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gTk9URTogdGhlIGVtaXR0ZWQgZXZlbnQgKGN1c3RvbSBldmVudCBuYW1lZCBieSBjbGllbnQpIHdpbGwgYmUgc3VmZml4ZWQgd2l0aCBcIlBJRS1cIlxuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudChgUElFLSR7Y3VzdG9tUGx1Z2luUHJvcHMuZXZlbnR9YCwge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgLi4uY3VzdG9tUGx1Z2luUHJvcHMsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBzdXBwb3J0czogKG5vZGUpID0+IG5vZGUub2JqZWN0ID09PSAnaW5saW5lJyAmJiBub2RlLnR5cGUgPT09IHR5cGUsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiB0eXBlLFxuICAgIHRvb2xiYXIsXG4gICAgcmVuZGVyTm9kZShwcm9wcykge1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gdHlwZSkge1xuICAgICAgICBjb25zdCB7IG5vZGUgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IG5vZGU7XG4gICAgICAgIGNvbnN0IGpzb25EYXRhID0gZGF0YS50b0pTT04oKTtcbiAgICAgICAgY29uc3QgeyBjdXN0b21Db250ZW50LCBjb250ZW50VHlwZSB9ID0ganNvbkRhdGE7XG5cbiAgICAgICAgc3dpdGNoIChjb250ZW50VHlwZSkge1xuICAgICAgICAgIGNhc2UgQ09OVEVOVF9UWVBFLkZSQUdNRU5UOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gY3VzdG9tQ29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUFrRCxTQUFBRSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFB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Y0FDUCxJQUFNaUMsWUFBWSxHQUFHLElBQUFDLDBCQUFXLEVBQUNILGFBQWEsQ0FBQztjQUMvQyxJQUFNSSxNQUFNLEdBQUdSLFVBQVUsQ0FBQ1EsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsY0FBYyxDQUFDSCxZQUFZLENBQUNWLFFBQVEsQ0FBQztjQUV4RUksVUFBVSxHQUFHUSxNQUFNLENBQUNoQixLQUFLO2NBQ3pCQyxRQUFRLENBQUNlLE1BQU0sQ0FBQztjQUVoQjtZQUNGO1FBQ0Y7UUFFQSxJQUFJTCxLQUFLLEVBQUU7VUFDVCxJQUFJUixTQUFTLEVBQUU7WUFDYkEsU0FBUyxDQUFDUSxLQUFLLENBQUMsQ0FBQztVQUNuQjtRQUNGO01BQ0YsQ0FBQzs7TUFFRDtNQUNBTyxNQUFNLENBQUNDLGFBQWEsQ0FDbEIsSUFBSUMsV0FBVyxRQUFBZCxNQUFBLENBQVFyQixpQkFBaUIsQ0FBQ29DLEtBQUssR0FBSTtRQUNoREMsTUFBTSxFQUFBbkQsYUFBQSxDQUFBQSxhQUFBLEtBQ0RjLGlCQUFpQjtVQUNwQndCLFFBQVEsRUFBUkE7UUFBUTtNQUVaLENBQUMsQ0FDSCxDQUFDO0lBQ0gsQ0FBQztJQUNEYyxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBR0MsSUFBSTtNQUFBLE9BQUtBLElBQUksQ0FBQ0MsTUFBTSxLQUFLLFFBQVEsSUFBSUQsSUFBSSxDQUFDM0IsSUFBSSxLQUFLQSxJQUFJO0lBQUE7RUFDcEUsQ0FBQztFQUVELE9BQU87SUFDTDZCLElBQUksRUFBRTdCLElBQUk7SUFDVkMsT0FBTyxFQUFQQSxPQUFPO0lBQ1A2QixVQUFVLFdBQVZBLFVBQVVBLENBQUNDLEtBQUssRUFBRTtNQUNoQixJQUFJQSxLQUFLLENBQUNKLElBQUksQ0FBQzNCLElBQUksS0FBS0EsSUFBSSxFQUFFO1FBQzVCLElBQVEyQixJQUFJLEdBQUtJLEtBQUssQ0FBZEosSUFBSTtRQUNaLElBQVFLLElBQUksR0FBS0wsSUFBSSxDQUFiSyxJQUFJO1FBQ1osSUFBTUMsUUFBUSxHQUFHRCxJQUFJLENBQUNFLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQVFuQixhQUFhLEdBQWtCa0IsUUFBUSxDQUF2Q2xCLGFBQWE7VUFBRUMsV0FBVyxHQUFLaUIsUUFBUSxDQUF4QmpCLFdBQVc7UUFFbEMsUUFBUUEsV0FBVztVQUNqQixLQUFLbEMsWUFBWSxDQUFDRSxRQUFRO1VBQzFCO1lBQ0UsT0FBTytCLGFBQWE7UUFDeEI7TUFDRjtJQUNGO0VBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_serialization","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","CONTENT_TYPE","exports","FRAGMENT","ICON_TYPE","SVG","getIcon","customPluginProps","svg","icon","iconType","createElement","style","width","height","dangerouslySetInnerHTML","__html","iconAlt","CustomPlugin","type","toolbar","onClick","value","onChange","getFocusedValue","editorDOM","document","querySelector","concat","key","valueToUse","callback","_ref","focus","customContent","contentType","contentValue","htmlToValue","change","insertFragment","window","dispatchEvent","CustomEvent","event","detail","supports","node","object","name","renderNode","props","data","jsonData","toJSON"],"sources":["../../../src/plugins/customPlugin/index.jsx"],"sourcesContent":["import React from 'react';\nimport { htmlToValue } from '../../serialization';\n\n// We're possibly going to have to support content types, so starting it as an enum\nexport const CONTENT_TYPE = {\n FRAGMENT: 'FRAGMENT',\n};\n\n// We're possibly going to have to support multiple icon types, so starting it as an enum\nexport const ICON_TYPE = {\n SVG: 'SVG',\n};\n\nconst getIcon = (customPluginProps) => {\n const svg = customPluginProps.icon;\n\n switch (customPluginProps.iconType) {\n case ICON_TYPE.SVG:\n return <span style={{ width: 28, height: 28 }} dangerouslySetInnerHTML={{ __html: svg }} />;\n default:\n return <span>{customPluginProps.iconAlt}</span>;\n }\n};\n\nexport default function CustomPlugin(type, customPluginProps) {\n const toolbar = {\n icon: getIcon(customPluginProps),\n onClick: (value, onChange, getFocusedValue) => {\n const editorDOM = document.querySelector(`[data-key=\"${value.document.key}\"]`);\n let valueToUse = value;\n const callback = ({ customContent, contentType }, focus) => {\n valueToUse = getFocusedValue();\n\n switch (contentType) {\n case CONTENT_TYPE.FRAGMENT:\n default: {\n const contentValue = htmlToValue(customContent);\n const change = valueToUse.change().insertFragment(contentValue.document);\n\n valueToUse = change.value;\n onChange(change);\n\n break;\n }\n }\n\n if (focus) {\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n };\n\n // NOTE: the emitted event (custom event named by client) will be suffixed with \"PIE-\"\n window.dispatchEvent(\n new CustomEvent(`PIE-${customPluginProps.event}`, {\n detail: {\n ...customPluginProps,\n callback,\n },\n }),\n );\n },\n supports: (node) => node.object === 'inline' && node.type === type,\n };\n\n return {\n name: type,\n toolbar,\n renderNode(props) {\n if (props.node.type === type) {\n const { node } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { customContent, contentType } = jsonData;\n\n switch (contentType) {\n case CONTENT_TYPE.FRAGMENT:\n default:\n return customContent;\n }\n }\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _styles = require("@mui/material/styles");
11
- var StyledHtmlIcon = (0, _styles.styled)('div')(function (_ref) {
12
- var theme = _ref.theme;
13
- return {
14
- fontFamily: 'Cerebri Sans, Arial, sans-serif',
15
- fontSize: theme.typography.fontSize,
16
- fontWeight: 'bold',
17
- lineHeight: '14px',
18
- position: 'relative',
19
- whiteSpace: 'nowrap'
20
- };
21
- });
22
- var HtmlModeIcon = function HtmlModeIcon(_ref2) {
23
- var isHtmlMode = _ref2.isHtmlMode;
24
- return /*#__PURE__*/_react["default"].createElement(StyledHtmlIcon, null, isHtmlMode ? 'Exit <HTML> mode' : '<HTML>');
25
- };
26
- HtmlModeIcon.propTypes = {
27
- isHtmlMode: _propTypes["default"].bool.isRequired
28
- };
29
- var _default = exports["default"] = HtmlModeIcon;
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfc3R5bGVzIiwiU3R5bGVkSHRtbEljb24iLCJzdHlsZWQiLCJfcmVmIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFNpemUiLCJ0eXBvZ3JhcGh5IiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJwb3NpdGlvbiIsIndoaXRlU3BhY2UiLCJIdG1sTW9kZUljb24iLCJfcmVmMiIsImlzSHRtbE1vZGUiLCJjcmVhdGVFbGVtZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYm9vbCIsImlzUmVxdWlyZWQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGx1Z2lucy9odG1sL2ljb25zL2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcblxuY29uc3QgU3R5bGVkSHRtbEljb24gPSBzdHlsZWQoJ2RpdicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFNpemUsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgbGluZUhlaWdodDogJzE0cHgnLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG59KSk7XG5cbmNvbnN0IEh0bWxNb2RlSWNvbiA9ICh7IGlzSHRtbE1vZGUgfSkgPT4gKFxuICA8U3R5bGVkSHRtbEljb24+e2lzSHRtbE1vZGUgPyAnRXhpdCA8SFRNTD4gbW9kZScgOiAnPEhUTUw+J308L1N0eWxlZEh0bWxJY29uPlxuKTtcblxuSHRtbE1vZGVJY29uLnByb3BUeXBlcyA9IHtcbiAgaXNIdG1sTW9kZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEh0bWxNb2RlSWNvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUVBLElBQU1HLGNBQWMsR0FBRyxJQUFBQyxjQUFNLEVBQUMsS0FBSyxDQUFDLENBQUMsVUFBQUMsSUFBQTtFQUFBLElBQUdDLEtBQUssR0FBQUQsSUFBQSxDQUFMQyxLQUFLO0VBQUEsT0FBUTtJQUNuREMsVUFBVSxFQUFFLGlDQUFpQztJQUM3Q0MsUUFBUSxFQUFFRixLQUFLLENBQUNHLFVBQVUsQ0FBQ0QsUUFBUTtJQUNuQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEJDLFVBQVUsRUFBRSxNQUFNO0lBQ2xCQyxRQUFRLEVBQUUsVUFBVTtJQUNwQkMsVUFBVSxFQUFFO0VBQ2QsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVILElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFBQyxLQUFBO0VBQUEsSUFBTUMsVUFBVSxHQUFBRCxLQUFBLENBQVZDLFVBQVU7RUFBQSxvQkFDaENsQixNQUFBLFlBQUFtQixhQUFBLENBQUNkLGNBQWMsUUFBRWEsVUFBVSxHQUFHLGtCQUFrQixHQUFHLFFBQXlCLENBQUM7QUFBQSxDQUM5RTtBQUVERixZQUFZLENBQUNJLFNBQVMsR0FBRztFQUN2QkYsVUFBVSxFQUFFRyxxQkFBUyxDQUFDQyxJQUFJLENBQUNDO0FBQzdCLENBQUM7QUFBQyxJQUFBQyxRQUFBLEdBQUFDLE9BQUEsY0FFYVQsWUFBWSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","StyledHtmlIcon","styled","_ref","theme","fontFamily","fontSize","typography","fontWeight","lineHeight","position","whiteSpace","HtmlModeIcon","_ref2","isHtmlMode","createElement","propTypes","PropTypes","bool","isRequired","_default","exports"],"sources":["../../../../src/plugins/html/icons/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nconst StyledHtmlIcon = styled('div')(({ theme }) => ({\n fontFamily: 'Cerebri Sans, Arial, sans-serif',\n fontSize: theme.typography.fontSize,\n fontWeight: 'bold',\n lineHeight: '14px',\n position: 'relative',\n whiteSpace: 'nowrap',\n}));\n\nconst HtmlModeIcon = ({ isHtmlMode }) => (\n <StyledHtmlIcon>{isHtmlMode ? 'Exit <HTML> mode' : '<HTML>'}</StyledHtmlIcon>\n);\n\nHtmlModeIcon.propTypes = {\n isHtmlMode: PropTypes.bool.isRequired,\n};\n\nexport default HtmlModeIcon;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAMG,cAAc,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAAA,OAAQ;IACnDC,UAAU,EAAE,iCAAiC;IAC7CC,QAAQ,EAAEF,KAAK,CAACG,UAAU,CAACD,QAAQ;IACnCE,UAAU,EAAE,MAAM;IAClBC,UAAU,EAAE,MAAM;IAClBC,QAAQ,EAAE,UAAU;IACpBC,UAAU,EAAE;EACd,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAAC,KAAA;EAAA,IAAMC,UAAU,GAAAD,KAAA,CAAVC,UAAU;EAAA,oBAChClB,MAAA,YAAAmB,aAAA,CAACd,cAAc,QAAEa,UAAU,GAAG,kBAAkB,GAAG,QAAyB,CAAC;AAAA,CAC9E;AAEDF,YAAY,CAACI,SAAS,GAAG;EACvBF,UAAU,EAAEG,qBAAS,CAACC,IAAI,CAACC;AAC7B,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEaT,YAAY","ignoreList":[]}