@pie-lib/editable-html-tip-tap 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.json +32 -0
  2. package/CHANGELOG.md +2280 -0
  3. package/lib/__tests__/editor.test.js +470 -0
  4. package/lib/__tests__/serialization.test.js +246 -0
  5. package/lib/__tests__/utils.js +106 -0
  6. package/lib/block-tags.js +25 -0
  7. package/lib/constants.js +16 -0
  8. package/lib/editor.js +1356 -0
  9. package/lib/extensions/MediaView.js +112 -0
  10. package/lib/extensions/characters.js +65 -0
  11. package/lib/extensions/component.js +325 -0
  12. package/lib/extensions/css.js +252 -0
  13. package/lib/extensions/custom-toolbar-wrapper.js +124 -0
  14. package/lib/extensions/image.js +106 -0
  15. package/lib/extensions/math.js +330 -0
  16. package/lib/extensions/media.js +276 -0
  17. package/lib/extensions/responseArea.js +278 -0
  18. package/lib/index.js +1213 -0
  19. package/lib/old-index.js +269 -0
  20. package/lib/parse-html.js +16 -0
  21. package/lib/plugins/characters/custom-popper.js +73 -0
  22. package/lib/plugins/characters/index.js +305 -0
  23. package/lib/plugins/characters/utils.js +381 -0
  24. package/lib/plugins/css/icons/index.js +37 -0
  25. package/lib/plugins/css/index.js +390 -0
  26. package/lib/plugins/customPlugin/index.js +114 -0
  27. package/lib/plugins/html/icons/index.js +38 -0
  28. package/lib/plugins/html/index.js +81 -0
  29. package/lib/plugins/image/__tests__/component.test.js +51 -0
  30. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
  31. package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
  32. package/lib/plugins/image/__tests__/index.test.js +98 -0
  33. package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
  34. package/lib/plugins/image/__tests__/mock-change.js +25 -0
  35. package/lib/plugins/image/alt-dialog.js +129 -0
  36. package/lib/plugins/image/component.js +419 -0
  37. package/lib/plugins/image/image-toolbar.js +177 -0
  38. package/lib/plugins/image/index.js +263 -0
  39. package/lib/plugins/image/insert-image-handler.js +117 -0
  40. package/lib/plugins/index.js +413 -0
  41. package/lib/plugins/list/__tests__/index.test.js +79 -0
  42. package/lib/plugins/list/index.js +334 -0
  43. package/lib/plugins/math/__tests__/index.test.js +300 -0
  44. package/lib/plugins/math/index.js +454 -0
  45. package/lib/plugins/media/__tests__/index.test.js +71 -0
  46. package/lib/plugins/media/index.js +387 -0
  47. package/lib/plugins/media/media-dialog.js +709 -0
  48. package/lib/plugins/media/media-toolbar.js +101 -0
  49. package/lib/plugins/media/media-wrapper.js +93 -0
  50. package/lib/plugins/rendering/index.js +46 -0
  51. package/lib/plugins/respArea/drag-in-the-blank/choice.js +289 -0
  52. package/lib/plugins/respArea/drag-in-the-blank/index.js +94 -0
  53. package/lib/plugins/respArea/explicit-constructed-response/index.js +120 -0
  54. package/lib/plugins/respArea/icons/index.js +95 -0
  55. package/lib/plugins/respArea/index.js +341 -0
  56. package/lib/plugins/respArea/inline-dropdown/index.js +126 -0
  57. package/lib/plugins/respArea/math-templated/index.js +130 -0
  58. package/lib/plugins/respArea/utils.js +125 -0
  59. package/lib/plugins/table/CustomTablePlugin.js +133 -0
  60. package/lib/plugins/table/__tests__/index.test.js +442 -0
  61. package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
  62. package/lib/plugins/table/icons/index.js +69 -0
  63. package/lib/plugins/table/index.js +483 -0
  64. package/lib/plugins/table/table-toolbar.js +187 -0
  65. package/lib/plugins/textAlign/icons/index.js +194 -0
  66. package/lib/plugins/textAlign/index.js +34 -0
  67. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
  68. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
  69. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
  70. package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
  71. package/lib/plugins/toolbar/default-toolbar.js +229 -0
  72. package/lib/plugins/toolbar/done-button.js +53 -0
  73. package/lib/plugins/toolbar/editor-and-toolbar.js +286 -0
  74. package/lib/plugins/toolbar/index.js +34 -0
  75. package/lib/plugins/toolbar/toolbar-buttons.js +194 -0
  76. package/lib/plugins/toolbar/toolbar.js +376 -0
  77. package/lib/plugins/utils.js +62 -0
  78. package/lib/serialization.js +677 -0
  79. package/lib/shared/alert-dialog.js +75 -0
  80. package/lib/theme.js +9 -0
  81. package/package.json +69 -0
  82. package/src/__tests__/editor.test.jsx +363 -0
  83. package/src/__tests__/serialization.test.js +291 -0
  84. package/src/__tests__/utils.js +36 -0
  85. package/src/block-tags.js +17 -0
  86. package/src/constants.js +7 -0
  87. package/src/editor.jsx +1197 -0
  88. package/src/extensions/characters.js +46 -0
  89. package/src/extensions/component.jsx +294 -0
  90. package/src/extensions/css.js +217 -0
  91. package/src/extensions/custom-toolbar-wrapper.jsx +100 -0
  92. package/src/extensions/image.js +55 -0
  93. package/src/extensions/math.js +259 -0
  94. package/src/extensions/media.js +182 -0
  95. package/src/extensions/responseArea.js +205 -0
  96. package/src/index.jsx +1462 -0
  97. package/src/old-index.jsx +162 -0
  98. package/src/parse-html.js +8 -0
  99. package/src/plugins/README.md +27 -0
  100. package/src/plugins/characters/custom-popper.js +48 -0
  101. package/src/plugins/characters/index.jsx +284 -0
  102. package/src/plugins/characters/utils.js +447 -0
  103. package/src/plugins/css/icons/index.jsx +17 -0
  104. package/src/plugins/css/index.jsx +340 -0
  105. package/src/plugins/customPlugin/index.jsx +85 -0
  106. package/src/plugins/html/icons/index.jsx +19 -0
  107. package/src/plugins/html/index.jsx +72 -0
  108. package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
  109. package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
  110. package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
  111. package/src/plugins/image/__tests__/component.test.jsx +41 -0
  112. package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
  113. package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
  114. package/src/plugins/image/__tests__/index.test.js +95 -0
  115. package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
  116. package/src/plugins/image/__tests__/mock-change.js +15 -0
  117. package/src/plugins/image/alt-dialog.jsx +82 -0
  118. package/src/plugins/image/component.jsx +343 -0
  119. package/src/plugins/image/image-toolbar.jsx +100 -0
  120. package/src/plugins/image/index.jsx +227 -0
  121. package/src/plugins/image/insert-image-handler.js +79 -0
  122. package/src/plugins/index.jsx +377 -0
  123. package/src/plugins/list/__tests__/index.test.js +54 -0
  124. package/src/plugins/list/index.jsx +305 -0
  125. package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
  126. package/src/plugins/math/__tests__/index.test.jsx +245 -0
  127. package/src/plugins/math/index.jsx +379 -0
  128. package/src/plugins/media/__tests__/index.test.js +75 -0
  129. package/src/plugins/media/index.jsx +325 -0
  130. package/src/plugins/media/media-dialog.js +624 -0
  131. package/src/plugins/media/media-toolbar.jsx +56 -0
  132. package/src/plugins/media/media-wrapper.jsx +43 -0
  133. package/src/plugins/rendering/index.js +31 -0
  134. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +215 -0
  135. package/src/plugins/respArea/drag-in-the-blank/index.jsx +70 -0
  136. package/src/plugins/respArea/explicit-constructed-response/index.jsx +92 -0
  137. package/src/plugins/respArea/icons/index.jsx +71 -0
  138. package/src/plugins/respArea/index.jsx +299 -0
  139. package/src/plugins/respArea/inline-dropdown/index.jsx +108 -0
  140. package/src/plugins/respArea/math-templated/index.jsx +104 -0
  141. package/src/plugins/respArea/utils.jsx +90 -0
  142. package/src/plugins/table/CustomTablePlugin.js +113 -0
  143. package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
  144. package/src/plugins/table/__tests__/index.test.jsx +401 -0
  145. package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
  146. package/src/plugins/table/icons/index.jsx +53 -0
  147. package/src/plugins/table/index.jsx +427 -0
  148. package/src/plugins/table/table-toolbar.jsx +136 -0
  149. package/src/plugins/textAlign/icons/index.jsx +114 -0
  150. package/src/plugins/textAlign/index.jsx +23 -0
  151. package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
  152. package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
  153. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
  154. package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
  155. package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
  156. package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
  157. package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
  158. package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
  159. package/src/plugins/toolbar/default-toolbar.jsx +206 -0
  160. package/src/plugins/toolbar/done-button.jsx +38 -0
  161. package/src/plugins/toolbar/editor-and-toolbar.jsx +257 -0
  162. package/src/plugins/toolbar/index.jsx +23 -0
  163. package/src/plugins/toolbar/toolbar-buttons.jsx +138 -0
  164. package/src/plugins/toolbar/toolbar.jsx +338 -0
  165. package/src/plugins/utils.js +31 -0
  166. package/src/serialization.jsx +621 -0
  167. package/src/theme.js +1 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.removeDialogs = exports.CSSMark = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _reactDom = _interopRequireDefault(require("react-dom"));
13
+
14
+ var _core = require("@tiptap/core");
15
+
16
+ var _List = _interopRequireDefault(require("@material-ui/core/List"));
17
+
18
+ var _ListItem = _interopRequireDefault(require("@material-ui/core/ListItem"));
19
+
20
+ var removeDialogs = function removeDialogs() {
21
+ var prevDialogs = document.querySelectorAll('.insert-css-dialog');
22
+ prevDialogs.forEach(function (s) {
23
+ return s.remove();
24
+ });
25
+ };
26
+
27
+ exports.removeDialogs = removeDialogs;
28
+
29
+ var insertDialog = function insertDialog(_ref) {
30
+ var editor = _ref.editor,
31
+ callback = _ref.callback,
32
+ opts = _ref.opts,
33
+ selectedText = _ref.selectedText,
34
+ parentNode = _ref.parentNode;
35
+ var editorDOM = editor.options.element;
36
+ var newEl = document.createElement('div');
37
+ var selection = editor.state.selection;
38
+ removeDialogs();
39
+ newEl.className = 'insert-css-dialog';
40
+ var popoverEl;
41
+
42
+ var closePopOver = function closePopOver() {
43
+ if (popoverEl) {
44
+ popoverEl.remove();
45
+ }
46
+ };
47
+
48
+ var firstCallMade = false;
49
+
50
+ var listener = function listener(e) {
51
+ // this will be triggered right after setting it because
52
+ // this toolbar is added on the mousedown event
53
+ // so right after mouseup, the click will be triggered
54
+ if (firstCallMade) {
55
+ var focusIsInModals = newEl.contains(e.target) || popoverEl && popoverEl.contains(e.target);
56
+ var focusIsInEditor = editorDOM.contains(e.target);
57
+
58
+ if (!(focusIsInModals || focusIsInEditor)) {
59
+ handleClose();
60
+ }
61
+ } else {
62
+ firstCallMade = true;
63
+ }
64
+ };
65
+
66
+ var handleClose = function handleClose() {
67
+ callback(undefined, true);
68
+ newEl.remove();
69
+ closePopOver();
70
+ document.body.removeEventListener('click', listener);
71
+ };
72
+
73
+ var handleChange = function handleChange(name) {
74
+ callback(name, true);
75
+ newEl.remove();
76
+ closePopOver();
77
+ document.body.removeEventListener('click', listener);
78
+ };
79
+
80
+ var parentNodeClass = parentNode === null || parentNode === void 0 ? void 0 : parentNode.attrs["class"];
81
+
82
+ var createHTML = function createHTML(name) {
83
+ var html = "<span class=\"".concat(name, "\">").concat(selectedText, "</span>");
84
+
85
+ if (parentNode) {
86
+ var tag = 'span';
87
+
88
+ if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.object) === 'inline') {
89
+ tag = 'span';
90
+ }
91
+
92
+ if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.object) === 'block') {
93
+ tag = 'div';
94
+ }
95
+
96
+ html = "<".concat(tag, " class=\"").concat(parentNodeClass, "\">").concat(parentNode.text.slice(0, selection.$anchor.textOffset)).concat(html).concat(parentNode.text.slice(selection.$head.textOffset), "</").concat(tag, ">");
97
+ }
98
+
99
+ return html;
100
+ };
101
+
102
+ var el = /*#__PURE__*/_react["default"].createElement("div", {
103
+ style: {
104
+ background: 'white',
105
+ height: 500,
106
+ padding: 20,
107
+ overflow: 'hidden',
108
+ display: 'flex',
109
+ flexFlow: 'column'
110
+ }
111
+ }, /*#__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"], {
112
+ component: "nav",
113
+ style: {
114
+ overflow: 'scroll'
115
+ }
116
+ }, opts.names.map(function (name, i) {
117
+ return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], {
118
+ key: "rule-".concat(i),
119
+ button: true,
120
+ onClick: function onClick() {
121
+ return handleChange(name);
122
+ }
123
+ }, /*#__PURE__*/_react["default"].createElement("div", {
124
+ style: {
125
+ marginRight: 20
126
+ }
127
+ }, name), /*#__PURE__*/_react["default"].createElement("div", {
128
+ dangerouslySetInnerHTML: {
129
+ __html: createHTML(name)
130
+ }
131
+ }));
132
+ })));
133
+
134
+ _reactDom["default"].render(el, newEl, function () {
135
+ var cursorItem = editor.view.nodeDOM(editor.state.selection.from);
136
+ var cursorNode = cursorItem === null || cursorItem === void 0 ? void 0 : cursorItem.parentNode;
137
+
138
+ if (cursorNode) {
139
+ var bodyRect = editorDOM.parentElement.parentElement.parentElement.getBoundingClientRect();
140
+ var boundRect = cursorNode.getBoundingClientRect();
141
+ editorDOM.parentElement.parentElement.parentElement.appendChild(newEl);
142
+ newEl.style.maxWidth = '500px';
143
+ newEl.style.position = 'absolute';
144
+ newEl.style.top = 0;
145
+ newEl.style.zIndex = 99999;
146
+ var leftValue = "".concat(boundRect.left + Math.abs(bodyRect.left) + cursorNode.offsetWidth + 10, "px");
147
+ var rightValue = "".concat(boundRect.x, "px");
148
+ newEl.style.left = leftValue;
149
+ var leftAlignedWidth = newEl.offsetWidth;
150
+ newEl.style.left = 'unset';
151
+ newEl.style.right = rightValue;
152
+ var rightAlignedWidth = newEl.offsetWidth;
153
+ newEl.style.left = 'unset';
154
+ newEl.style.right = 'unset';
155
+
156
+ if (leftAlignedWidth >= rightAlignedWidth) {
157
+ newEl.style.left = leftValue;
158
+ } else {
159
+ newEl.style.right = rightValue;
160
+ }
161
+
162
+ document.body.addEventListener('click', listener);
163
+ }
164
+ });
165
+ };
166
+
167
+ var CSSMark = _core.Mark.create({
168
+ name: 'cssmark',
169
+ addOptions: function addOptions() {
170
+ return {
171
+ classes: []
172
+ };
173
+ },
174
+ addAttributes: function addAttributes() {
175
+ return {
176
+ "class": {
177
+ "default": null,
178
+ parseHTML: function parseHTML(el) {
179
+ return el.getAttribute('class');
180
+ },
181
+ renderHTML: function renderHTML(attributes) {
182
+ if (!attributes["class"]) return {};
183
+ return {
184
+ "class": attributes["class"]
185
+ };
186
+ }
187
+ }
188
+ };
189
+ },
190
+ parseHTML: function parseHTML() {
191
+ var _this = this;
192
+
193
+ // Any span with a class that matches one of allowed classes
194
+ return [{
195
+ tag: 'span[class]',
196
+ getAttrs: function getAttrs(el) {
197
+ var cls = el.getAttribute('class') || '';
198
+
199
+ var match = _this.options.classes.find(function (name) {
200
+ return cls.includes(name);
201
+ });
202
+
203
+ return match ? {
204
+ "class": match
205
+ } : false;
206
+ }
207
+ }];
208
+ },
209
+ renderHTML: function renderHTML(_ref2) {
210
+ var HTMLAttributes = _ref2.HTMLAttributes;
211
+ return ['span', (0, _core.mergeAttributes)(HTMLAttributes), 0];
212
+ },
213
+ addCommands: function addCommands() {
214
+ var _this2 = this;
215
+
216
+ return {
217
+ setCSSClass: function setCSSClass(className) {
218
+ return function (_ref3) {
219
+ var commands = _ref3.commands;
220
+ return commands.setMark(_this2.name, {
221
+ "class": className
222
+ });
223
+ };
224
+ },
225
+ unsetCSSClass: function unsetCSSClass() {
226
+ return function (_ref4) {
227
+ var commands = _ref4.commands;
228
+ return commands.unsetMark(_this2.name);
229
+ };
230
+ },
231
+ openCSSClassDialog: function openCSSClassDialog() {
232
+ return function (_ref5) {
233
+ var editor = _ref5.editor;
234
+ insertDialog({
235
+ editor: editor,
236
+ selectedText: editor.state.doc.textBetween(editor.state.selection.from, editor.state.selection.to),
237
+ parentNode: editor.state.selection.$from.nodeAfter,
238
+ opts: _this2.options.extraCSSRules,
239
+ callback: function callback(className) {
240
+ if (className) {
241
+ editor.chain().focus().setCSSClass(className).run();
242
+ }
243
+ }
244
+ });
245
+ };
246
+ }
247
+ };
248
+ }
249
+ });
250
+
251
+ exports.CSSMark = CSSMark;
252
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL2Nzcy5qcyJdLCJuYW1lcyI6WyJyZW1vdmVEaWFsb2dzIiwicHJldkRpYWxvZ3MiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwicyIsInJlbW92ZSIsImluc2VydERpYWxvZyIsImVkaXRvciIsImNhbGxiYWNrIiwib3B0cyIsInNlbGVjdGVkVGV4dCIsInBhcmVudE5vZGUiLCJlZGl0b3JET00iLCJvcHRpb25zIiwiZWxlbWVudCIsIm5ld0VsIiwiY3JlYXRlRWxlbWVudCIsInNlbGVjdGlvbiIsInN0YXRlIiwiY2xhc3NOYW1lIiwicG9wb3ZlckVsIiwiY2xvc2VQb3BPdmVyIiwiZmlyc3RDYWxsTWFkZSIsImxpc3RlbmVyIiwiZSIsImZvY3VzSXNJbk1vZGFscyIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZm9jdXNJc0luRWRpdG9yIiwiaGFuZGxlQ2xvc2UiLCJ1bmRlZmluZWQiLCJib2R5IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNoYW5nZSIsIm5hbWUiLCJwYXJlbnROb2RlQ2xhc3MiLCJhdHRycyIsImNyZWF0ZUhUTUwiLCJodG1sIiwidGFnIiwib2JqZWN0IiwidGV4dCIsInNsaWNlIiwiJGFuY2hvciIsInRleHRPZmZzZXQiLCIkaGVhZCIsImVsIiwiYmFja2dyb3VuZCIsImhlaWdodCIsInBhZGRpbmciLCJvdmVyZmxvdyIsImRpc3BsYXkiLCJmbGV4RmxvdyIsIm5hbWVzIiwibWFwIiwiaSIsIm1hcmdpblJpZ2h0IiwiX19odG1sIiwiUmVhY3RET00iLCJyZW5kZXIiLCJjdXJzb3JJdGVtIiwidmlldyIsIm5vZGVET00iLCJmcm9tIiwiY3Vyc29yTm9kZSIsImJvZHlSZWN0IiwicGFyZW50RWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJvdW5kUmVjdCIsImFwcGVuZENoaWxkIiwic3R5bGUiLCJtYXhXaWR0aCIsInBvc2l0aW9uIiwidG9wIiwiekluZGV4IiwibGVmdFZhbHVlIiwibGVmdCIsIk1hdGgiLCJhYnMiLCJvZmZzZXRXaWR0aCIsInJpZ2h0VmFsdWUiLCJ4IiwibGVmdEFsaWduZWRXaWR0aCIsInJpZ2h0IiwicmlnaHRBbGlnbmVkV2lkdGgiLCJhZGRFdmVudExpc3RlbmVyIiwiQ1NTTWFyayIsIk1hcmsiLCJjcmVhdGUiLCJhZGRPcHRpb25zIiwiY2xhc3NlcyIsImFkZEF0dHJpYnV0ZXMiLCJwYXJzZUhUTUwiLCJnZXRBdHRyaWJ1dGUiLCJyZW5kZXJIVE1MIiwiYXR0cmlidXRlcyIsImdldEF0dHJzIiwiY2xzIiwibWF0Y2giLCJmaW5kIiwiaW5jbHVkZXMiLCJIVE1MQXR0cmlidXRlcyIsImFkZENvbW1hbmRzIiwic2V0Q1NTQ2xhc3MiLCJjb21tYW5kcyIsInNldE1hcmsiLCJ1bnNldENTU0NsYXNzIiwidW5zZXRNYXJrIiwib3BlbkNTU0NsYXNzRGlhbG9nIiwiZG9jIiwidGV4dEJldHdlZW4iLCJ0byIsIiRmcm9tIiwibm9kZUFmdGVyIiwiZXh0cmFDU1NSdWxlcyIsImNoYWluIiwiZm9jdXMiLCJydW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVPLElBQU1BLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsR0FBTTtBQUNqQyxNQUFNQyxXQUFXLEdBQUdDLFFBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsb0JBQTFCLENBQXBCO0FBRUFGLEVBQUFBLFdBQVcsQ0FBQ0csT0FBWixDQUFvQixVQUFDQyxDQUFEO0FBQUEsV0FBT0EsQ0FBQyxDQUFDQyxNQUFGLEVBQVA7QUFBQSxHQUFwQjtBQUNELENBSk07Ozs7QUFNUCxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxPQUEwRDtBQUFBLE1BQXZEQyxNQUF1RCxRQUF2REEsTUFBdUQ7QUFBQSxNQUEvQ0MsUUFBK0MsUUFBL0NBLFFBQStDO0FBQUEsTUFBckNDLElBQXFDLFFBQXJDQSxJQUFxQztBQUFBLE1BQS9CQyxZQUErQixRQUEvQkEs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RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBNYXJrLCBtZXJnZUF0dHJpYnV0ZXMgfSBmcm9tICdAdGlwdGFwL2NvcmUnO1xuaW1wb3J0IExpc3QgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvTGlzdCc7XG5pbXBvcnQgTGlzdEl0ZW0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvTGlzdEl0ZW0nO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRGlhbG9ncyA9ICgpID0+IHtcbiAgY29uc3QgcHJldkRpYWxvZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5zZXJ0LWNzcy1kaWFsb2cnKTtcblxuICBwcmV2RGlhbG9ncy5mb3JFYWNoKChzKSA9PiBzLnJlbW92ZSgpKTtcbn07XG5cbmNvbnN0IGluc2VydERpYWxvZyA9ICh7IGVkaXRvciwgY2FsbGJhY2ssIG9wdHMsIHNlbGVjdGVkVGV4dCwgcGFyZW50Tm9kZSB9KSA9PiB7XG4gIGNvbnN0IGVkaXRvckRPTSA9IGVkaXRvci5vcHRpb25zLmVsZW1lbnQ7XG4gIGNvbnN0IG5ld0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3Iuc3RhdGU7XG5cbiAgcmVtb3ZlRGlhbG9ncygpO1xuXG4gIG5ld0VsLmNsYXNzTmFtZSA9ICdpbnNlcnQtY3NzLWRpYWxvZyc7XG5cbiAgbGV0IHBvcG92ZXJFbDtcblxuICBjb25zdCBjbG9zZVBvcE92ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHBvcG92ZXJFbCkge1xuICAgICAgcG9wb3ZlckVsLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICBsZXQgZmlyc3RDYWxsTWFkZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGxpc3RlbmVyID0gKGUpID0+IHtcbiAgICAvLyB0aGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHJpZ2h0IGFmdGVyIHNldHRpbmcgaXQgYmVjYXVzZVxuICAgIC8vIHRoaXMgdG9vbGJhciBpcyBhZGRlZCBvbiB0aGUgbW91c2Vkb3duIGV2ZW50XG4gICAgLy8gc28gcmlnaHQgYWZ0ZXIgbW91c2V1cCwgdGhlIGNsaWNrIHdpbGwgYmUgdHJpZ2dlcmVkXG4gICAgaWYgKGZpcnN0Q2FsbE1hZGUpIHtcbiAgICAgIGNvbnN0IGZvY3VzSXNJbk1vZGFscyA9IG5ld0VsLmNvbnRhaW5zKGUudGFyZ2V0KSB8fCAocG9wb3ZlckVsICYmIHBvcG92ZXJFbC5jb250YWlucyhlLnRhcmdldCkpO1xuICAgICAgY29uc3QgZm9jdXNJc0luRWRpdG9yID0gZWRpdG9yRE9NLmNvbnRhaW5zKGUudGFyZ2V0KTtcblxuICAgICAgaWYgKCEoZm9jdXNJc0luTW9kYWxzIHx8IGZvY3VzSXNJbkVkaXRvcikpIHtcbiAgICAgICAgaGFuZGxlQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlyc3RDYWxsTWFkZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGNhbGxiYWNrKHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgbmV3RWwucmVtb3ZlKCk7XG4gICAgY2xvc2VQb3BPdmVyKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmFtZSkgPT4ge1xuICAgIGNhbGxiYWNrKG5hbWUsIHRydWUpO1xuICAgIG5ld0VsLnJlbW92ZSgpO1xuICAgIGNsb3NlUG9wT3ZlcigpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gIH07XG5cbiAgY29uc3QgcGFyZW50Tm9kZUNsYXNzID0gcGFyZW50Tm9kZT8uYXR0cnMuY2xhc3M7XG4gIGNvbnN0IGNyZWF0ZUhUTUwgPSAobmFtZSkgPT4ge1xuICAgIGxldCBodG1sID0gYDxzcGFuIGNsYXNzPVwiJHtuYW1lfVwiPiR7c2VsZWN0ZWRUZXh0fTwvc3Bhbj5gO1xuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgIGxldCB0YWcgPSAnc3Bhbic7XG5cbiAgICAgIGlmIChwYXJlbnROb2RlPy5vYmplY3QgPT09ICdpbmxpbmUnKSB7XG4gICAgICAgIHRhZyA9ICdzcGFuJztcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmVudE5vZGU/Lm9iamVjdCA9PT0gJ2Jsb2NrJykge1xuICAgICAgICB0YWcgPSAnZGl2JztcbiAgICAgIH1cblxuICAgICAgaHRtbCA9IGA8JHt0YWd9IGNsYXNzPVwiJHtwYXJlbnROb2RlQ2xhc3N9XCI+JHtwYXJlbnROb2RlLnRleHQuc2xpY2UoMCwgc2VsZWN0aW9uLiRhbmNob3IudGV4dE9mZnNldCl9JHtodG1sfSR7cGFyZW50Tm9kZS50ZXh0LnNsaWNlKFxuICAgICAgICBzZWxlY3Rpb24uJGhlYWQudGV4dE9mZnNldCxcbiAgICAgICl9PC8ke3RhZ30+YDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICBjb25zdCBlbCA9IChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kOiAnd2hpdGUnLCBoZWlnaHQ6IDUwMCwgcGFkZGluZzogMjAsIG92ZXJmbG93OiAnaGlkZGVuJywgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RmxvdzogJ2NvbHVtbicgfX1cbiAgICA+XG4gICAgICA8aDI+UGxlYXNlIGNob29zZSBhIGNzcyBjbGFzczwvaDI+XG4gICAgICB7cGFyZW50Tm9kZUNsYXNzICYmIDxkaXY+VGhlIGN1cnJlbnQgcGFyZW50IGhhcyB0aGlzIGNsYXNzIHtwYXJlbnROb2RlQ2xhc3N9PC9kaXY+fVxuICAgICAgPExpc3QgY29tcG9uZW50PVwibmF2XCIgc3R5bGU9e3sgb3ZlcmZsb3c6ICdzY3JvbGwnIH19PlxuICAgICAgICB7b3B0cy5uYW1lcy5tYXAoKG5hbWUsIGkpID0+IChcbiAgICAgICAgICA8TGlzdEl0ZW0ga2V5PXtgcnVsZS0ke2l9YH0gYnV0dG9uIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNoYW5nZShuYW1lKX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiAyMCB9fT57bmFtZX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgICBfX2h0bWw6IGNyZWF0ZUhUTUwobmFtZSksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGlzdEl0ZW0+XG4gICAgICAgICkpfVxuICAgICAgPC9MaXN0PlxuICAgIDwvZGl2PlxuICApO1xuXG4gIFJlYWN0RE9NLnJlbmRlcihlbCwgbmV3RWwsICgpID0+IHtcbiAgICBjb25zdCBjdXJzb3JJdGVtID0gZWRpdG9yLnZpZXcubm9kZURPTShlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uLmZyb20pO1xuICAgIGNvbnN0IGN1cnNvck5vZGUgPSBjdXJzb3JJdGVtPy5wYXJlbnROb2RlO1xuXG4gICAgaWYgKGN1cnNvck5vZGUpIHtcbiAgICAgIGNvbnN0IGJvZHlSZWN0ID0gZWRpdG9yRE9NLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgYm91bmRSZWN0ID0gY3Vyc29yTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgZWRpdG9yRE9NLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKG5ld0VsKTtcblxuICAgICAgbmV3RWwuc3R5bGUubWF4V2lkdGggPSAnNTAwcHgnO1xuICAgICAgbmV3RWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgbmV3RWwuc3R5bGUudG9wID0gMDtcbiAgICAgIG5ld0VsLnN0eWxlLnpJbmRleCA9IDk5OTk5O1xuXG4gICAgICBjb25zdCBsZWZ0VmFsdWUgPSBgJHtib3VuZFJlY3QubGVmdCArIE1hdGguYWJzKGJvZHlSZWN0LmxlZnQpICsgY3Vyc29yTm9kZS5vZmZzZXRXaWR0aCArIDEwfXB4YDtcblxuICAgICAgY29uc3QgcmlnaHRWYWx1ZSA9IGAke2JvdW5kUmVjdC54fXB4YDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9IGxlZnRWYWx1ZTtcblxuICAgICAgY29uc3QgbGVmdEFsaWduZWRXaWR0aCA9IG5ld0VsLm9mZnNldFdpZHRoO1xuXG4gICAgICBuZXdFbC5zdHlsZS5sZWZ0ID0gJ3Vuc2V0JztcbiAgICAgIG5ld0VsLnN0eWxlLnJpZ2h0ID0gcmlnaHRWYWx1ZTtcblxuICAgICAgY29uc3QgcmlnaHRBbGlnbmVkV2lkdGggPSBuZXdFbC5vZmZzZXRXaWR0aDtcblxuICAgICAgbmV3RWwuc3R5bGUubGVmdCA9ICd1bnNldCc7XG4gICAgICBuZXdFbC5zdHlsZS5yaWdodCA9ICd1bnNldCc7XG5cbiAgICAgIGlmIChsZWZ0QWxpZ25lZFdpZHRoID49IHJpZ2h0QWxpZ25lZFdpZHRoKSB7XG4gICAgICAgIG5ld0VsLnN0eWxlLmxlZnQgPSBsZWZ0VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdFbC5zdHlsZS5yaWdodCA9IHJpZ2h0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBDU1NNYXJrID0gTWFyay5jcmVhdGUoe1xuICBuYW1lOiAnY3NzbWFyaycsXG5cbiAgYWRkT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NlczogW10sXG4gICAgfTtcbiAgfSxcblxuICBhZGRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjbGFzczoge1xuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICBwYXJzZUhUTUw6IChlbCkgPT4gZWwuZ2V0QXR0cmlidXRlKCdjbGFzcycpLFxuICAgICAgICByZW5kZXJIVE1MOiAoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICAgIGlmICghYXR0cmlidXRlcy5jbGFzcykgcmV0dXJuIHt9O1xuICAgICAgICAgIHJldHVybiB7IGNsYXNzOiBhdHRyaWJ1dGVzLmNsYXNzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG5cbiAgcGFyc2VIVE1MKCkge1xuICAgIC8vIEFueSBzcGFuIHdpdGggYSBjbGFzcyB0aGF0IG1hdGNoZXMgb25lIG9mIGFsbG93ZWQgY2xhc3Nlc1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogJ3NwYW5bY2xhc3NdJyxcbiAgICAgICAgZ2V0QXR0cnM6IChlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNscyA9IGVsLmdldEF0dHJpYnV0ZSgnY2xhc3MnKSB8fCAnJztcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMub3B0aW9ucy5jbGFzc2VzLmZpbmQoKG5hbWUpID0+IGNscy5pbmNsdWRlcyhuYW1lKSk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoID8geyBjbGFzczogbWF0Y2ggfSA6IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9LFxuXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgcmV0dXJuIFsnc3BhbicsIG1lcmdlQXR0cmlidXRlcyhIVE1MQXR0cmlidXRlcyksIDBdO1xuICB9LFxuXG4gIGFkZENvbW1hbmRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZXRDU1NDbGFzczogKGNsYXNzTmFtZSkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuc2V0TWFyayh0aGlzLm5hbWUsIHsgY2xhc3M6IGNsYXNzTmFtZSB9KTtcbiAgICAgIH0sXG5cbiAgICAgIHVuc2V0Q1NTQ2xhc3M6ICgpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnVuc2V0TWFyayh0aGlzLm5hbWUpO1xuICAgICAgfSxcblxuICAgICAgb3BlbkNTU0NsYXNzRGlhbG9nOiAoKSA9PiAoeyBlZGl0b3IgfSkgPT4ge1xuICAgICAgICBpbnNlcnREaWFsb2coe1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzZWxlY3RlZFRleHQ6IGVkaXRvci5zdGF0ZS5kb2MudGV4dEJldHdlZW4oZWRpdG9yLnN0YXRlLnNlbGVjdGlvbi5mcm9tLCBlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uLnRvKSxcbiAgICAgICAgICBwYXJlbnROb2RlOiBlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uLiRmcm9tLm5vZGVBZnRlcixcbiAgICAgICAgICBvcHRzOiB0aGlzLm9wdGlvbnMuZXh0cmFDU1NSdWxlcyxcbiAgICAgICAgICBjYWxsYmFjazogKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgLnNldENTU0NsYXNzKGNsYXNzTmFtZSlcbiAgICAgICAgICAgICAgICAucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59KTtcbiJdfQ==
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
17
+
18
+ var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
19
+
20
+ var _doneButton = require("../plugins/toolbar/done-button");
21
+
22
+ var _classnames = _interopRequireDefault(require("classnames"));
23
+
24
+ var _constants = require("../constants");
25
+
26
+ var _styles = require("@material-ui/core/styles");
27
+
28
+ var _toolbar = require("../plugins/toolbar/toolbar");
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ 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; }
35
+
36
+ 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; }
37
+
38
+ function CustomToolbarWrapper(props) {
39
+ var _classNames;
40
+
41
+ var children = props.children,
42
+ deletable = props.deletable,
43
+ classes = props.classes,
44
+ toolbarOpts = props.toolbarOpts,
45
+ autoWidth = props.autoWidth,
46
+ isFocused = props.isFocused,
47
+ doneButtonRef = props.doneButtonRef,
48
+ onDelete = props.onDelete,
49
+ showDone = props.showDone,
50
+ onDone = props.onDone;
51
+ var names = (0, _classnames["default"])(classes.toolbar, _constants.PIE_TOOLBAR__CLASS, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.toolbarWithNoDone, !showDone), (0, _defineProperty2["default"])(_classNames, classes.toolbarRight, toolbarOpts.alignment === 'right'), (0, _defineProperty2["default"])(_classNames, classes.focused, toolbarOpts.alwaysVisible || isFocused), (0, _defineProperty2["default"])(_classNames, classes.autoWidth, autoWidth), (0, _defineProperty2["default"])(_classNames, classes.fullWidth, !autoWidth), (0, _defineProperty2["default"])(_classNames, classes.hidden, toolbarOpts.isHidden === true), _classNames));
52
+ var customStyles = toolbarOpts.minWidth !== undefined ? {
53
+ minWidth: toolbarOpts.minWidth
54
+ } : {};
55
+ return /*#__PURE__*/_react["default"].createElement("div", {
56
+ className: names,
57
+ style: _objectSpread({}, customStyles)
58
+ }, children, /*#__PURE__*/_react["default"].createElement("div", {
59
+ className: classes.shared
60
+ }, deletable && /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
61
+ "aria-label": "Delete",
62
+ className: classes.iconRoot,
63
+ onMouseDown: function onMouseDown(e) {
64
+ return onDelete === null || onDelete === void 0 ? void 0 : onDelete(e);
65
+ },
66
+ classes: {
67
+ root: classes.iconRoot
68
+ }
69
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)), showDone && /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
70
+ doneButtonRef: doneButtonRef,
71
+ onClick: onDone
72
+ })));
73
+ }
74
+
75
+ var style = {
76
+ toolbar: {
77
+ position: 'absolute',
78
+ zIndex: 10,
79
+ cursor: 'pointer',
80
+ justifyContent: 'space-between',
81
+ background: 'var(--editable-html-toolbar-bg, #efefef)',
82
+ minWidth: '280px',
83
+ margin: '5px 0 0 0',
84
+ padding: '2px',
85
+ boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',
86
+ boxSizing: 'border-box',
87
+ display: 'flex',
88
+ opacity: 1
89
+ },
90
+ toolbarWithNoDone: {
91
+ minWidth: '265px'
92
+ },
93
+ toolbarRight: {
94
+ right: 0
95
+ },
96
+ fullWidth: {
97
+ width: '100%'
98
+ },
99
+ hidden: {
100
+ visibility: 'hidden'
101
+ },
102
+ autoWidth: {
103
+ width: 'auto'
104
+ },
105
+ iconRoot: {
106
+ width: '28px',
107
+ height: '28px',
108
+ padding: '4px',
109
+ verticalAlign: 'top'
110
+ },
111
+ label: {
112
+ color: 'var(--editable-html-toolbar-check, #00bb00)'
113
+ },
114
+ shared: {
115
+ display: 'flex'
116
+ }
117
+ };
118
+
119
+ var _default = (0, _styles.withStyles)(style, {
120
+ index: 1000
121
+ })(CustomToolbarWrapper);
122
+
123
+ exports["default"] = _default;
124
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL2N1c3RvbS10b29sYmFyLXdyYXBwZXIuanN4Il0sIm5hbWVzIjpbIkN1c3RvbVRvb2xiYXJXcmFwcGVyIiwicHJvcHMiLCJjaGlsZHJlbiIsImRlbGV0YWJsZSIsImNsYXNzZXMiLCJ0b29sYmFyT3B0cyIsImF1dG9XaWR0aCIsImlzRm9jdXNlZCIsImRvbmVCdXR0b25SZWYiLCJvbkRlbGV0ZSIsInNob3dEb25lIiwib25Eb25lIiwibmFtZXMiLCJ0b29sYmFyIiwiUElFX1RPT0xCQVJfX0NMQVNTIiwidG9vbGJhcldpdGhOb0RvbmUiLCJ0b29sYmFyUmlnaHQiLCJhbGlnbm1lbnQiLCJmb2N1c2VkIiwiYWx3YXlzVmlzaWJsZSIsImZ1bGxXaWR0aCIsImhpZGRlbiIsImlzSGlkZGVuIiwiY3VzdG9tU3R5bGVzIiwibWluV2lkdGgiLCJ1bmRlZmluZWQiLCJzaGFyZWQiLCJpY29uUm9vdCIsImUiLCJyb290Iiwic3R5bGUiLCJwb3NpdGlvbiIsInpJbmRleCIsImN1cnNvciIsImp1c3RpZnlDb250ZW50IiwiYmFja2dyb3VuZCIsIm1hcmdpbiIsInBhZGRpbmciLCJib3hTaGFkb3ciLCJib3hTaXppbmciLCJkaXNwbGF5Iiwib3BhY2l0eSIsInJpZ2h0Iiwid2lkdGgiLCJ2aXNpYmlsaXR5IiwiaGVpZ2h0IiwidmVydGljYWxBbGlnbiIsImxhYmVsIiwiY29sb3IiLCJpbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsU0FBU0Esb0JBQVQsQ0FBOEJDLEtBQTlCLEVBQXFDO0FBQUE7O0FBQ25DLE1BQ0VDLFFBREYsR0FXSUQsS0FYSixDQUNFQyxRQURGO0FBQUEsTUFFRUMsU0FGRixHQVdJRixLQVhKLENBRUVFLFNBRkY7QUFBQSxNQUdFQyxPQUhGLEdBV0lILEtBWEosQ0FHRUcsT0FIRjtBQUFBLE1B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QXlCWnRCLEVBQUFBLE1BQU0sRUFBRTtBQUNOdUIsSUFBQUEsVUFBVSxFQUFFO0FBRE4sR0F6Qkk7QUE0Qlp0QyxFQUFBQSxTQUFTLEVBQUU7QUFDVHFDLElBQUFBLEtBQUssRUFBRTtBQURFLEdBNUJDO0FBK0JaaEIsRUFBQUEsUUFBUSxFQUFFO0FBQ1JnQixJQUFBQSxLQUFLLEVBQUUsTUFEQztBQUVSRSxJQUFBQSxNQUFNLEVBQUUsTUFGQTtBQUdSUixJQUFBQSxPQUFPLEVBQUUsS0FIRDtBQUlSUyxJQUFBQSxhQUFhLEVBQUU7QUFKUCxHQS9CRTtBQXFDWkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0xDLElBQUFBLEtBQUssRUFBRTtBQURGLEdBckNLO0FBd0NadEIsRUFBQUEsTUFBTSxFQUFFO0FBQ05jLElBQUFBLE9BQU8sRUFBRTtBQURIO0FBeENJLENBQWQ7O2VBNENlLHdCQUFXVixLQUFYLEVBQWtCO0FBQUVtQixFQUFBQSxLQUFLLEVBQUU7QUFBVCxDQUFsQixFQUFtQ2pELG9CQUFuQyxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSBcIkBtYXRlcmlhbC11aS9jb3JlL0ljb25CdXR0b25cIjtcbmltcG9ydCBEZWxldGUgZnJvbSBcIkBtYXRlcmlhbC11aS9pY29ucy9EZWxldGVcIjtcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tIFwiLi4vcGx1Z2lucy90b29sYmFyL2RvbmUtYnV0dG9uXCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgUElFX1RPT0xCQVJfX0NMQVNTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXNcIjtcbmltcG9ydCB7IFRvb2xiYXIgfSBmcm9tIFwiLi4vcGx1Z2lucy90b29sYmFyL3Rvb2xiYXJcIjtcblxuZnVuY3Rpb24gQ3VzdG9tVG9vbGJhcldyYXBwZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGRlbGV0YWJsZSxcbiAgICBjbGFzc2VzLFxuICAgIHRvb2xiYXJPcHRzLFxuICAgIGF1dG9XaWR0aCxcbiAgICBpc0ZvY3VzZWQsXG4gICAgZG9uZUJ1dHRvblJlZixcbiAgICBvbkRlbGV0ZSxcbiAgICBzaG93RG9uZSxcbiAgICBvbkRvbmUsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgbmFtZXMgPSBjbGFzc05hbWVzKGNsYXNzZXMudG9vbGJhciwgUElFX1RPT0xCQVJfX0NMQVNTLCB7XG4gICAgW2NsYXNzZXMudG9vbGJhcldpdGhOb0RvbmVdOiAhc2hvd0RvbmUsXG4gICAgW2NsYXNzZXMudG9vbGJhclJpZ2h0XTogdG9vbGJhck9wdHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgIFtjbGFzc2VzLmZvY3VzZWRdOiB0b29sYmFyT3B0cy5hbHdheXNWaXNpYmxlIHx8IGlzRm9jdXNlZCxcbiAgICBbY2xhc3Nlcy5hdXRvV2lkdGhdOiBhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuZnVsbFdpZHRoXTogIWF1dG9XaWR0aCxcbiAgICBbY2xhc3Nlcy5oaWRkZW5dOiB0b29sYmFyT3B0cy5pc0hpZGRlbiA9PT0gdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IGN1c3RvbVN0eWxlcyA9IHRvb2xiYXJPcHRzLm1pbldpZHRoICE9PSB1bmRlZmluZWQgPyB7IG1pbldpZHRoOiB0b29sYmFyT3B0cy5taW5XaWR0aCB9IDoge307XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bmFtZXN9IHN0eWxlPXt7IC4uLmN1c3RvbVN0eWxlcyB9fT5cbiAgICAgIHtjaGlsZHJlbn1cblxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuc2hhcmVkfT5cbiAgICAgICAge2RlbGV0YWJsZSAmJiAoXG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEZWxldGVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmljb25Sb290fVxuICAgICAgICAgICAgb25Nb3VzZURvd249eyhlKSA9PiBvbkRlbGV0ZT8uKGUpfVxuICAgICAgICAgICAgY2xhc3Nlcz17e1xuICAgICAgICAgICAgICByb290OiBjbGFzc2VzLmljb25Sb290LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICB7c2hvd0RvbmUgJiYgPERvbmVCdXR0b24gZG9uZUJ1dHRvblJlZj17ZG9uZUJ1dHRvblJlZn0gb25DbGljaz17b25Eb25lfSAvPn1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBzdHlsZSA9IHtcbiAgdG9vbGJhcjoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHpJbmRleDogMTAsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBiYWNrZ3JvdW5kOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWJnLCAjZWZlZmVmKScsXG4gICAgbWluV2lkdGg6ICcyODBweCcsXG4gICAgbWFyZ2luOiAnNXB4IDAgMCAwJyxcbiAgICBwYWRkaW5nOiAnMnB4JyxcbiAgICBib3hTaGFkb3c6XG4gICAgICAnMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjEyKScsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG9wYWNpdHk6IDEsXG4gIH0sXG4gIHRvb2xiYXJXaXRoTm9Eb25lOiB7XG4gICAgbWluV2lkdGg6ICcyNjVweCcsXG4gIH0sXG4gIHRvb2xiYXJSaWdodDoge1xuICAgIHJpZ2h0OiAwLFxuICB9LFxuICBmdWxsV2lkdGg6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBoaWRkZW46IHtcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgfSxcbiAgYXV0b1dpZHRoOiB7XG4gICAgd2lkdGg6ICdhdXRvJyxcbiAgfSxcbiAgaWNvblJvb3Q6IHtcbiAgICB3aWR0aDogJzI4cHgnLFxuICAgIGhlaWdodDogJzI4cHgnLFxuICAgIHBhZGRpbmc6ICc0cHgnLFxuICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICB9LFxuICBsYWJlbDoge1xuICAgIGNvbG9yOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWNoZWNrLCAjMDBiYjAwKScsXG4gIH0sXG4gIHNoYXJlZDoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgfSxcbn07XG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlLCB7IGluZGV4OiAxMDAwIH0pKEN1c3RvbVRvb2xiYXJXcmFwcGVyKTtcbiJdfQ==
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ImageUploadNode = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _core = require("@tiptap/core");
15
+
16
+ var _react = require("@tiptap/react");
17
+
18
+ var _react2 = _interopRequireWildcard(require("react"));
19
+
20
+ var _component = _interopRequireDefault(require("./component"));
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ // ---- Tiptap Extension ---- //
31
+ var ImageUploadNode = _core.Node.create({
32
+ name: 'imageUploadNode',
33
+ group: 'block',
34
+ atom: true,
35
+ // ✅ prevents content holes
36
+ selectable: true,
37
+ // optional
38
+ draggable: true,
39
+ // optional
40
+ addAttributes: function addAttributes() {
41
+ return {
42
+ loaded: {
43
+ "default": false
44
+ },
45
+ deleteStatus: {
46
+ "default": null
47
+ },
48
+ alignment: {
49
+ "default": null
50
+ },
51
+ percent: {
52
+ "default": null
53
+ },
54
+ width: {
55
+ "default": null
56
+ },
57
+ height: {
58
+ "default": null
59
+ },
60
+ src: {
61
+ "default": null
62
+ },
63
+ alt: {
64
+ "default": null
65
+ }
66
+ };
67
+ },
68
+ parseHTML: function parseHTML() {
69
+ return [{
70
+ tag: 'div[data-type="image-upload-node"]'
71
+ }];
72
+ },
73
+ // ✅ No `0` here!
74
+ renderHTML: function renderHTML(_ref) {
75
+ var HTMLAttributes = _ref.HTMLAttributes;
76
+ return ['img', (0, _core.mergeAttributes)(HTMLAttributes, {
77
+ 'data-type': 'image-upload-node'
78
+ })];
79
+ },
80
+ addNodeView: function addNodeView() {
81
+ var _this = this;
82
+
83
+ return (0, _react.ReactNodeViewRenderer)(function (props) {
84
+ return /*#__PURE__*/_react2["default"].createElement(_component["default"], _objectSpread(_objectSpread({}, props), {}, {
85
+ options: _this.options
86
+ }));
87
+ });
88
+ },
89
+ addCommands: function addCommands() {
90
+ var _this2 = this;
91
+
92
+ return {
93
+ setImageUploadNode: function setImageUploadNode() {
94
+ return function (_ref2) {
95
+ var commands = _ref2.commands;
96
+ return commands.insertContent({
97
+ type: _this2.name
98
+ });
99
+ };
100
+ }
101
+ };
102
+ }
103
+ });
104
+
105
+ exports.ImageUploadNode = ImageUploadNode;
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL2ltYWdlLmpzIl0sIm5hbWVzIjpbIkltYWdlVXBsb2FkTm9kZSIsIk5vZGUiLCJjcmVhdGUiLCJuYW1lIiwiZ3JvdXAiLCJhdG9tIiwic2VsZWN0YWJsZSIsImRyYWdnYWJsZSIsImFkZEF0dHJpYnV0ZXMiLCJsb2FkZWQiLCJkZWxldGVTdGF0dXMiLCJhbGlnbm1lbnQiLCJwZXJjZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJzcmMiLCJhbHQiLCJwYXJzZUhUTUwiLCJ0YWciLCJyZW5kZXJIVE1MIiwiSFRNTEF0dHJpYnV0ZXMiLCJhZGROb2RlVmlldyIsInByb3BzIiwib3B0aW9ucyIsImFkZENvbW1hbmRzIiwic2V0SW1hZ2VVcGxvYWROb2RlIiwiY29tbWFuZHMiLCJpbnNlcnRDb250ZW50IiwidHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7QUFFTyxJQUFNQSxlQUFlLEdBQUdDLFdBQUtDLE1BQUwsQ0FBWTtBQUN6Q0MsRUFBQUEsSUFBSSxFQUFFLGlCQURtQztBQUd6Q0MsRUFBQUEsS0FBSyxFQUFFLE9BSGtDO0FBSXpDQyxFQUFBQSxJQUFJLEVBQUUsSUFKbUM7QUFJN0I7QUFDWkMsRUFBQUEsVUFBVSxFQUFFLElBTDZCO0FBS3ZCO0FBQ2xCQyxFQUFBQSxTQUFTLEVBQUUsSUFOOEI7QUFNeEI7QUFFakJDLEVBQUFBLGFBUnlDLDJCQVF6QjtBQUNkLFdBQU87QUFDTEMsTUFBQUEsTUFBTSxFQUFFO0FBQUUsbUJBQVM7QUFBWCxPQURIO0FBRUxDLE1BQUFBLFlBQVksRUFBRTtBQUFFLG1CQUFTO0FBQVgsT0FGVDtBQUdMQyxNQUFBQSxTQUFTLEVBQUU7QUFBRSxtQkFBUztBQUFYLE9BSE47QUFJTEMsTUFBQUEsT0FBTyxFQUFFO0FBQUUsbUJBQVM7QUFBWCxPQUpKO0FBS0xDLE1BQUFBLEtBQUssRUFBRTtBQUFFLG1CQUFTO0FBQVgsT0FMRjtBQU1MQyxNQUFBQSxNQUFNLEVBQUU7QUFBRSxtQkFBUztBQUFYLE9BTkg7QUFPTEMsTUFBQUEsR0FBRyxFQUFFO0FBQUUsbUJBQVM7QUFBWCxPQVBBO0FBUUxDLE1BQUFBLEdBQUcsRUFBRTtBQUFFLG1CQUFTO0FBQVg7QUFSQSxLQUFQO0FBVUQsR0FuQndDO0FBcUJ6Q0MsRUFBQUEsU0FyQnlDLHVCQXFCN0I7QUFDVixXQUFPLENBQ0w7QUFDRUMsTUFBQUEsR0FBRyxFQUFFO0FBRFAsS0FESyxDQUFQO0FBS0QsR0EzQndDO0FBNkJ6QztBQUNBQyxFQUFBQSxVQTlCeUMsNEJBOEJWO0FBQUEsUUFBbEJDLGNBQWtCLFFBQWxCQSxjQUFrQjtBQUM3QixXQUFPLENBQUMsS0FBRCxFQUFRLDJCQUFnQkEsY0FBaEIsRUFBZ0M7QUFBRSxtQkFBYTtBQUFmLEtBQWhDLENBQVIsQ0FBUDtBQUNELEdBaEN3QztBQWtDekNDLEVBQUFBLFdBbEN5Qyx5QkFrQzNCO0FBQUE7O0FBQ1osV0FBTyxrQ0FBc0IsVUFBQ0MsS0FBRDtBQUFBLDBCQUFXLGlDQUFDLHFCQUFELGtDQUF5QkEsS0FBekI7QUFBZ0NDLFFBQUFBLE9BQU8sRUFBRSxLQUFJLENBQUNBO0FBQTlDLFNBQVg7QUFBQSxLQUF0QixDQUFQO0FBQ0QsR0FwQ3dDO0FBc0N6Q0MsRUFBQUEsV0F0Q3lDLHlCQXNDM0I7QUFBQTs7QUFDWixXQUFPO0FBQ0xDLE1BQUFBLGtCQUFrQixFQUFFO0FBQUEsZUFBTSxpQkFBa0I7QUFBQSxjQUFmQyxRQUFlLFNBQWZBLFFBQWU7QUFDMUMsaUJBQU9BLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QjtBQUM1QkMsWUFBQUEsSUFBSSxFQUFFLE1BQUksQ0FBQ3pCO0FBRGlCLFdBQXZCLENBQVA7QUFHRCxTQUptQjtBQUFBO0FBRGYsS0FBUDtBQU9EO0FBOUN3QyxDQUFaLENBQXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZSwgbWVyZ2VBdHRyaWJ1dGVzIH0gZnJvbSAnQHRpcHRhcC9jb3JlJztcbmltcG9ydCB7IE5vZGVWaWV3V3JhcHBlciwgUmVhY3ROb2RlVmlld1JlbmRlcmVyIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgSW1hZ2VDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQnO1xuXG4vLyAtLS0tIFRpcHRhcCBFeHRlbnNpb24gLS0tLSAvL1xuXG5leHBvcnQgY29uc3QgSW1hZ2VVcGxvYWROb2RlID0gTm9kZS5jcmVhdGUoe1xuICBuYW1lOiAnaW1hZ2VVcGxvYWROb2RlJyxcblxuICBncm91cDogJ2Jsb2NrJyxcbiAgYXRvbTogdHJ1ZSwgLy8g4pyFIHByZXZlbnRzIGNvbnRlbnQgaG9sZXNcbiAgc2VsZWN0YWJsZTogdHJ1ZSwgLy8gb3B0aW9uYWxcbiAgZHJhZ2dhYmxlOiB0cnVlLCAvLyBvcHRpb25hbFxuXG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRlZDogeyBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgZGVsZXRlU3RhdHVzOiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIGFsaWdubWVudDogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgICBwZXJjZW50OiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIHdpZHRoOiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIGhlaWdodDogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgICBzcmM6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgICAgYWx0OiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICB9O1xuICB9LFxuXG4gIHBhcnNlSFRNTCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0YWc6ICdkaXZbZGF0YS10eXBlPVwiaW1hZ2UtdXBsb2FkLW5vZGVcIl0nLFxuICAgICAgfSxcbiAgICBdO1xuICB9LFxuXG4gIC8vIOKchSBObyBgMGAgaGVyZSFcbiAgcmVuZGVySFRNTCh7IEhUTUxBdHRyaWJ1dGVzIH0pIHtcbiAgICByZXR1cm4gWydpbWcnLCBtZXJnZUF0dHJpYnV0ZXMoSFRNTEF0dHJpYnV0ZXMsIHsgJ2RhdGEtdHlwZSc6ICdpbWFnZS11cGxvYWQtbm9kZScgfSldO1xuICB9LFxuXG4gIGFkZE5vZGVWaWV3KCkge1xuICAgIHJldHVybiBSZWFjdE5vZGVWaWV3UmVuZGVyZXIoKHByb3BzKSA9PiA8SW1hZ2VDb21wb25lbnQgey4uLnsgLi4ucHJvcHMsIG9wdGlvbnM6IHRoaXMub3B0aW9ucyB9fSAvPik7XG4gIH0sXG5cbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEltYWdlVXBsb2FkTm9kZTogKCkgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuaW5zZXJ0Q29udGVudCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn0pO1xuIl19