@pie-lib/editable-html-tip-tap 1.1.1-next.1 → 1.1.1-next.3

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 (155) hide show
  1. package/LICENSE.md +5 -0
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/components/CharacterPicker.js +10 -24
  4. package/lib/components/CharacterPicker.js.map +1 -1
  5. package/lib/components/EditableHtml.js +0 -17
  6. package/lib/components/EditableHtml.js.map +1 -1
  7. package/lib/components/MenuBar.js +0 -17
  8. package/lib/components/MenuBar.js.map +1 -1
  9. package/lib/components/TiptapContainer.js +4 -17
  10. package/lib/components/TiptapContainer.js.map +1 -1
  11. package/lib/components/characters/characterUtils.js +0 -2
  12. package/lib/components/characters/characterUtils.js.map +1 -1
  13. package/lib/components/characters/custom-popper.js +0 -1
  14. package/lib/components/characters/custom-popper.js.map +1 -1
  15. package/lib/components/common/done-button.js +0 -1
  16. package/lib/components/common/done-button.js.map +1 -1
  17. package/lib/components/common/toolbar-buttons.js +0 -12
  18. package/lib/components/common/toolbar-buttons.js.map +1 -1
  19. package/lib/components/icons/CssIcon.js +0 -1
  20. package/lib/components/icons/CssIcon.js.map +1 -1
  21. package/lib/components/icons/RespArea.js +0 -10
  22. package/lib/components/icons/RespArea.js.map +1 -1
  23. package/lib/components/icons/TableIcons.js +0 -1
  24. package/lib/components/icons/TableIcons.js.map +1 -1
  25. package/lib/components/icons/TextAlign.js +0 -7
  26. package/lib/components/icons/TextAlign.js.map +1 -1
  27. package/lib/components/image/AltDialog.js +0 -5
  28. package/lib/components/image/AltDialog.js.map +1 -1
  29. package/lib/components/image/ImageToolbar.js +0 -13
  30. package/lib/components/image/ImageToolbar.js.map +1 -1
  31. package/lib/components/image/InsertImageHandler.js +0 -10
  32. package/lib/components/image/InsertImageHandler.js.map +1 -1
  33. package/lib/components/media/MediaDialog.js +0 -19
  34. package/lib/components/media/MediaDialog.js.map +1 -1
  35. package/lib/components/media/MediaToolbar.js +0 -2
  36. package/lib/components/media/MediaToolbar.js.map +1 -1
  37. package/lib/components/media/MediaWrapper.js +0 -11
  38. package/lib/components/media/MediaWrapper.js.map +1 -1
  39. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +2 -12
  40. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -1
  41. package/lib/components/respArea/DragInTheBlank/choice.js +0 -8
  42. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  43. package/lib/components/respArea/ExplicitConstructedResponse.js +0 -8
  44. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
  45. package/lib/components/respArea/InlineDropdown.js +0 -8
  46. package/lib/components/respArea/InlineDropdown.js.map +1 -1
  47. package/lib/components/respArea/ToolbarIcon.js +0 -10
  48. package/lib/components/respArea/ToolbarIcon.js.map +1 -1
  49. package/lib/constants.js +0 -1
  50. package/lib/constants.js.map +1 -1
  51. package/lib/extensions/css.js +0 -11
  52. package/lib/extensions/css.js.map +1 -1
  53. package/lib/extensions/custom-toolbar-wrapper.js +1 -19
  54. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -1
  55. package/lib/extensions/extended-table.js +1 -5
  56. package/lib/extensions/extended-table.js.map +1 -1
  57. package/lib/extensions/image-component.js +4 -21
  58. package/lib/extensions/image-component.js.map +1 -1
  59. package/lib/extensions/image.js +0 -11
  60. package/lib/extensions/image.js.map +1 -1
  61. package/lib/extensions/index.js +3 -12
  62. package/lib/extensions/index.js.map +1 -1
  63. package/lib/extensions/math.js +0 -16
  64. package/lib/extensions/math.js.map +1 -1
  65. package/lib/extensions/media.js +0 -15
  66. package/lib/extensions/media.js.map +1 -1
  67. package/lib/extensions/responseArea.js +0 -23
  68. package/lib/extensions/responseArea.js.map +1 -1
  69. package/lib/index.js +0 -7
  70. package/lib/index.js.map +1 -1
  71. package/lib/styles/editorContainerStyles.js +0 -2
  72. package/lib/styles/editorContainerStyles.js.map +1 -1
  73. package/lib/theme.js +0 -1
  74. package/lib/theme.js.map +1 -1
  75. package/lib/utils/size.js +0 -6
  76. package/lib/utils/size.js.map +1 -1
  77. package/package.json +9 -9
  78. package/src/__tests__/constants.test.js +1 -2
  79. package/src/__tests__/extensions.test.js +1 -1
  80. package/src/__tests__/index.test.jsx +1 -1
  81. package/src/components/CharacterPicker.jsx +11 -8
  82. package/src/components/EditableHtml.jsx +2 -2
  83. package/src/components/MenuBar.jsx +32 -186
  84. package/src/components/TiptapContainer.jsx +4 -1
  85. package/src/components/__tests__/AltDialog.test.jsx +1 -1
  86. package/src/components/__tests__/CharacterPicker.test.jsx +5 -3
  87. package/src/components/__tests__/DragInTheBlank.test.jsx +1 -1
  88. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +1 -1
  89. package/src/components/__tests__/ImageToolbar.test.jsx +1 -1
  90. package/src/components/__tests__/InlineDropdown.test.jsx +1 -1
  91. package/src/components/__tests__/MediaDialog.test.jsx +1 -1
  92. package/src/components/__tests__/MediaToolbar.test.jsx +1 -1
  93. package/src/components/__tests__/MenuBar.test.jsx +1 -1
  94. package/src/components/__tests__/TableIcons.test.jsx +1 -1
  95. package/src/components/__tests__/TextAlign.test.jsx +2 -2
  96. package/src/components/__tests__/choice.test.jsx +1 -1
  97. package/src/components/__tests__/done-button.test.jsx +2 -2
  98. package/src/components/__tests__/toolbar-buttons.test.jsx +2 -2
  99. package/src/components/image/AltDialog.jsx +1 -1
  100. package/src/components/image/InsertImageHandler.js +1 -1
  101. package/src/components/media/MediaDialog.js +4 -15
  102. package/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx +1 -1
  103. package/src/components/respArea/DragInTheBlank/choice.jsx +34 -27
  104. package/src/components/respArea/ExplicitConstructedResponse.jsx +1 -1
  105. package/src/components/respArea/InlineDropdown.jsx +2 -3
  106. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +1 -1
  107. package/src/extensions/__tests__/extended-table.test.js +0 -21
  108. package/src/extensions/__tests__/image-component.test.jsx +1 -1
  109. package/src/extensions/__tests__/media.test.js +1 -1
  110. package/src/extensions/__tests__/responseArea.test.js +2 -2
  111. package/src/extensions/css.js +25 -23
  112. package/src/extensions/custom-toolbar-wrapper.jsx +1 -2
  113. package/src/extensions/extended-table.js +0 -3
  114. package/src/extensions/image-component.jsx +2 -2
  115. package/src/extensions/image.js +8 -6
  116. package/src/extensions/index.js +1 -3
  117. package/src/extensions/math.js +29 -27
  118. package/src/extensions/media.js +12 -14
  119. package/src/extensions/responseArea.js +91 -86
  120. package/src/styles/editorContainerStyles.js +0 -1
  121. package/lib/__tests__/EditableHtml.test.js +0 -374
  122. package/lib/__tests__/constants.test.js +0 -28
  123. package/lib/__tests__/extensions.test.js +0 -214
  124. package/lib/__tests__/index.test.js +0 -246
  125. package/lib/__tests__/size-utils.test.js +0 -57
  126. package/lib/__tests__/theme.test.js +0 -17
  127. package/lib/components/__tests__/AltDialog.test.js +0 -201
  128. package/lib/components/__tests__/CharacterPicker.test.js +0 -313
  129. package/lib/components/__tests__/CssIcon.test.js +0 -58
  130. package/lib/components/__tests__/DragInTheBlank.test.js +0 -309
  131. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +0 -263
  132. package/lib/components/__tests__/ImageToolbar.test.js +0 -195
  133. package/lib/components/__tests__/InlineDropdown.test.js +0 -297
  134. package/lib/components/__tests__/InsertImageHandler.test.js +0 -162
  135. package/lib/components/__tests__/MediaDialog.test.js +0 -435
  136. package/lib/components/__tests__/MediaToolbar.test.js +0 -126
  137. package/lib/components/__tests__/MediaWrapper.test.js +0 -96
  138. package/lib/components/__tests__/MenuBar.test.js +0 -459
  139. package/lib/components/__tests__/RespArea.test.js +0 -171
  140. package/lib/components/__tests__/TableIcons.test.js +0 -153
  141. package/lib/components/__tests__/TextAlign.test.js +0 -216
  142. package/lib/components/__tests__/TiptapContainer.test.js +0 -196
  143. package/lib/components/__tests__/characterUtils.test.js +0 -189
  144. package/lib/components/__tests__/choice.test.js +0 -213
  145. package/lib/components/__tests__/custom-popper.test.js +0 -108
  146. package/lib/components/__tests__/done-button.test.js +0 -72
  147. package/lib/components/__tests__/toolbar-buttons.test.js +0 -277
  148. package/lib/extensions/__tests__/component.test.js +0 -314
  149. package/lib/extensions/__tests__/css.test.js +0 -218
  150. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +0 -185
  151. package/lib/extensions/__tests__/extended-table.test.js +0 -114
  152. package/lib/extensions/__tests__/image.test.js +0 -178
  153. package/lib/extensions/__tests__/media.test.js +0 -296
  154. package/lib/extensions/__tests__/responseArea.test.js +0 -332
  155. package/lib/extensions/component.js +0 -308
@@ -1,435 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
- require("core-js/modules/es.object.to-string.js");
8
- require("core-js/modules/es.promise.js");
9
- var _react = _interopRequireDefault(require("react"));
10
- var _react2 = require("@testing-library/react");
11
- var _MediaDialog = require("../media/MediaDialog");
12
- global.fetch = jest.fn();
13
- jest.mock('@mui/material/Dialog', function () {
14
- return {
15
- __esModule: true,
16
- "default": function _default(_ref) {
17
- var children = _ref.children,
18
- open = _ref.open;
19
- return open && /*#__PURE__*/_react["default"].createElement("div", {
20
- "data-testid": "dialog"
21
- }, children);
22
- }
23
- };
24
- });
25
- jest.mock('@mui/material/DialogTitle', function () {
26
- return {
27
- __esModule: true,
28
- "default": function _default(_ref2) {
29
- var children = _ref2.children;
30
- return /*#__PURE__*/_react["default"].createElement("div", {
31
- "data-testid": "dialog-title"
32
- }, children);
33
- }
34
- };
35
- });
36
- jest.mock('@mui/material/DialogContent', function () {
37
- return {
38
- __esModule: true,
39
- "default": function _default(_ref3) {
40
- var children = _ref3.children;
41
- return /*#__PURE__*/_react["default"].createElement("div", {
42
- "data-testid": "dialog-content"
43
- }, children);
44
- }
45
- };
46
- });
47
- jest.mock('@mui/material/DialogContentText', function () {
48
- return {
49
- __esModule: true,
50
- "default": function _default(_ref4) {
51
- var children = _ref4.children;
52
- return /*#__PURE__*/_react["default"].createElement("div", null, children);
53
- }
54
- };
55
- });
56
- jest.mock('@mui/material/DialogActions', function () {
57
- return {
58
- __esModule: true,
59
- "default": function _default(_ref5) {
60
- var children = _ref5.children;
61
- return /*#__PURE__*/_react["default"].createElement("div", {
62
- "data-testid": "dialog-actions"
63
- }, children);
64
- }
65
- };
66
- });
67
- jest.mock('@mui/material/Button', function () {
68
- return {
69
- __esModule: true,
70
- "default": function _default(_ref6) {
71
- var children = _ref6.children,
72
- onClick = _ref6.onClick,
73
- disabled = _ref6.disabled;
74
- return /*#__PURE__*/_react["default"].createElement("button", {
75
- onClick: onClick,
76
- disabled: disabled
77
- }, children);
78
- }
79
- };
80
- });
81
- jest.mock('@mui/material/TextField', function () {
82
- return {
83
- __esModule: true,
84
- "default": function _default(_ref7) {
85
- var value = _ref7.value,
86
- onChange = _ref7.onChange,
87
- label = _ref7.label,
88
- placeholder = _ref7.placeholder,
89
- inputProps = _ref7.inputProps;
90
- return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, label), /*#__PURE__*/_react["default"].createElement("input", (0, _extends2["default"])({
91
- value: value === undefined ? '' : value,
92
- onChange: onChange,
93
- placeholder: placeholder,
94
- "aria-label": label
95
- }, inputProps)));
96
- }
97
- };
98
- });
99
- jest.mock('@mui/material/Tabs', function () {
100
- return {
101
- __esModule: true,
102
- "default": function _default(_ref8) {
103
- var children = _ref8.children,
104
- value = _ref8.value,
105
- onChange = _ref8.onChange;
106
- return /*#__PURE__*/_react["default"].createElement("div", {
107
- "data-testid": "tabs",
108
- "data-value": value
109
- }, children);
110
- }
111
- };
112
- });
113
- jest.mock('@mui/material/Tab', function () {
114
- return {
115
- __esModule: true,
116
- "default": function _default(_ref9) {
117
- var label = _ref9.label,
118
- onClick = _ref9.onClick;
119
- return /*#__PURE__*/_react["default"].createElement("button", {
120
- onClick: onClick,
121
- "data-testid": "tab"
122
- }, label);
123
- }
124
- };
125
- });
126
- jest.mock('@mui/material/Typography', function () {
127
- return {
128
- __esModule: true,
129
- "default": function _default(_ref0) {
130
- var children = _ref0.children;
131
- return /*#__PURE__*/_react["default"].createElement("div", null, children);
132
- }
133
- };
134
- });
135
- jest.mock('@mui/material/IconButton', function () {
136
- return {
137
- __esModule: true,
138
- "default": function _default(_ref1) {
139
- var children = _ref1.children,
140
- onClick = _ref1.onClick;
141
- return /*#__PURE__*/_react["default"].createElement("button", {
142
- onClick: onClick
143
- }, children);
144
- }
145
- };
146
- });
147
- jest.mock('@mui/icons-material/Delete', function () {
148
- return {
149
- __esModule: true,
150
- "default": function _default() {
151
- return /*#__PURE__*/_react["default"].createElement("svg", {
152
- "data-testid": "delete-icon"
153
- });
154
- }
155
- };
156
- });
157
- describe('MediaDialog', function () {
158
- var defaultProps = {
159
- open: true,
160
- handleClose: jest.fn(),
161
- type: 'video'
162
- };
163
- beforeEach(function () {
164
- jest.clearAllMocks();
165
- global.fetch.mockClear();
166
- });
167
- it('renders without crashing', function () {
168
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, defaultProps)),
169
- container = _render.container;
170
- expect(container).toBeInTheDocument();
171
- });
172
- it('renders dialog title for video', function () {
173
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
174
- type: "video"
175
- }))),
176
- getByText = _render2.getByText;
177
- expect(getByText('Insert Video')).toBeInTheDocument();
178
- });
179
- it('renders dialog title for audio', function () {
180
- var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
181
- type: "audio"
182
- }))),
183
- getByText = _render3.getByText;
184
- expect(getByText('Insert Audio')).toBeInTheDocument();
185
- });
186
- it('renders URL input field', function () {
187
- var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, defaultProps)),
188
- getByLabelText = _render4.getByLabelText;
189
- expect(getByLabelText('URL')).toBeInTheDocument();
190
- });
191
- it('renders Cancel button', function () {
192
- var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, defaultProps)),
193
- getByText = _render5.getByText;
194
- expect(getByText('Cancel')).toBeInTheDocument();
195
- });
196
- it('renders Insert button', function () {
197
- var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, defaultProps)),
198
- getByText = _render6.getByText;
199
- expect(getByText('Insert')).toBeInTheDocument();
200
- });
201
- it('calls handleClose with false when Cancel is clicked', function () {
202
- var handleClose = jest.fn();
203
- var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
204
- handleClose: handleClose
205
- }))),
206
- getByText = _render7.getByText;
207
- _react2.fireEvent.click(getByText('Cancel'));
208
- expect(handleClose).toHaveBeenCalledWith(false);
209
- });
210
- it('disables Insert button when URL is invalid', function () {
211
- var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, defaultProps)),
212
- getByText = _render8.getByText;
213
- var insertButton = getByText('Insert');
214
- expect(insertButton).toBeDisabled();
215
- });
216
- it('shows video properties fields for video type', function () {
217
- var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
218
- type: "video"
219
- }))),
220
- getByLabelText = _render9.getByLabelText;
221
- expect(getByLabelText('Width')).toBeInTheDocument();
222
- expect(getByLabelText('Height')).toBeInTheDocument();
223
- });
224
- it('shows starts and ends fields for video', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
225
- var _render0, getByLabelText, getByPlaceholderText;
226
- return _regenerator["default"].wrap(function (_context) {
227
- while (1) switch (_context.prev = _context.next) {
228
- case 0:
229
- _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
230
- type: "video",
231
- url: "https://youtube.com/watch?v=abc"
232
- }))), getByLabelText = _render0.getByLabelText, getByPlaceholderText = _render0.getByPlaceholderText;
233
- _context.next = 1;
234
- return (0, _react2.waitFor)(function () {
235
- var urlInput = getByPlaceholderText('Paste URL of video...');
236
- _react2.fireEvent.change(urlInput, {
237
- target: {
238
- value: 'https://youtube.com/watch?v=abc123'
239
- }
240
- });
241
- });
242
- case 1:
243
- case "end":
244
- return _context.stop();
245
- }
246
- }, _callee);
247
- })));
248
- it('updates width on change', function () {
249
- var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
250
- type: "video"
251
- }))),
252
- getByLabelText = _render1.getByLabelText;
253
- var widthInput = getByLabelText('Width');
254
- _react2.fireEvent.change(widthInput, {
255
- target: {
256
- value: '800'
257
- }
258
- });
259
- expect(widthInput.value).toBe('800');
260
- });
261
- it('updates height on change', function () {
262
- var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
263
- type: "video"
264
- }))),
265
- getByLabelText = _render10.getByLabelText;
266
- var heightInput = getByLabelText('Height');
267
- _react2.fireEvent.change(heightInput, {
268
- target: {
269
- value: '600'
270
- }
271
- });
272
- expect(heightInput.value).toBe('600');
273
- });
274
- it('has default width of 560', function () {
275
- var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
276
- type: "video"
277
- }))),
278
- getByLabelText = _render11.getByLabelText;
279
- var widthInput = getByLabelText('Width');
280
- expect(widthInput.value).toBe('560');
281
- });
282
- it('has default height of 315', function () {
283
- var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
284
- type: "video"
285
- }))),
286
- getByLabelText = _render12.getByLabelText;
287
- var heightInput = getByLabelText('Height');
288
- expect(heightInput.value).toBe('315');
289
- });
290
- it('shows Insert URL tab', function () {
291
- var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
292
- type: "video"
293
- }))),
294
- getByText = _render13.getByText;
295
- expect(getByText('Insert YouTube, Vimeo, or Google Drive URL')).toBeInTheDocument();
296
- });
297
- it('shows Insert URL tab for audio', function () {
298
- var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
299
- type: "audio"
300
- }))),
301
- getByText = _render14.getByText;
302
- expect(getByText('Insert SoundCloud URL')).toBeInTheDocument();
303
- });
304
- it('shows Upload file tab when uploadSoundSupport is provided', function () {
305
- var uploadSoundSupport = {
306
- add: jest.fn(),
307
- "delete": jest.fn()
308
- };
309
- var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
310
- type: "audio",
311
- uploadSoundSupport: uploadSoundSupport
312
- }))),
313
- getByText = _render15.getByText;
314
- expect(getByText('Upload file')).toBeInTheDocument();
315
- });
316
- it('does not show Upload file tab for video', function () {
317
- var uploadSoundSupport = {
318
- add: jest.fn(),
319
- "delete": jest.fn()
320
- };
321
- var _render16 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
322
- type: "video",
323
- uploadSoundSupport: uploadSoundSupport
324
- }))),
325
- queryByText = _render16.queryByText;
326
- expect(queryByText('Upload file')).not.toBeInTheDocument();
327
- });
328
- it('changes tab on tab click', function () {
329
- var uploadSoundSupport = {
330
- add: jest.fn(),
331
- "delete": jest.fn()
332
- };
333
- var _render17 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
334
- type: "audio",
335
- uploadSoundSupport: uploadSoundSupport
336
- }))),
337
- getByText = _render17.getByText;
338
- var insertUrlTab = getByText('Insert SoundCloud URL');
339
- _react2.fireEvent.click(insertUrlTab);
340
- expect(insertUrlTab).toBeInTheDocument();
341
- });
342
- it('shows Insert button text when not editing', function () {
343
- var _render18 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
344
- edit: false
345
- }))),
346
- getByText = _render18.getByText;
347
- expect(getByText('Insert')).toBeInTheDocument();
348
- });
349
- it('shows Update button text when editing', function () {
350
- var _render19 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
351
- edit: true
352
- }))),
353
- getByText = _render19.getByText;
354
- expect(getByText('Update')).toBeInTheDocument();
355
- });
356
- it('accepts custom src prop', function () {
357
- var _render20 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
358
- src: "https://example.com/video"
359
- }))),
360
- container = _render20.container;
361
- expect(container).toBeInTheDocument();
362
- });
363
- it('accepts custom url prop', function () {
364
- var _render21 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
365
- url: "https://youtube.com/watch?v=test"
366
- }))),
367
- getByPlaceholderText = _render21.getByPlaceholderText;
368
- var urlInput = getByPlaceholderText('Paste URL of video...');
369
- expect(urlInput.value).toBe('https://youtube.com/watch?v=test');
370
- });
371
- it('accepts custom starts prop', function () {
372
- var _render22 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
373
- starts: 10,
374
- type: "video",
375
- url: "https://youtube.com/watch?v=test"
376
- }))),
377
- container = _render22.container;
378
- expect(container).toBeInTheDocument();
379
- });
380
- it('accepts custom ends prop', function () {
381
- var _render23 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
382
- ends: 60,
383
- type: "video",
384
- url: "https://youtube.com/watch?v=test"
385
- }))),
386
- container = _render23.container;
387
- expect(container).toBeInTheDocument();
388
- });
389
- it('disables portal when disablePortal is true', function () {
390
- var _render24 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
391
- disablePortal: true
392
- }))),
393
- container = _render24.container;
394
- expect(container).toBeInTheDocument();
395
- });
396
- it('handles URL change for YouTube', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
397
- var _render25, getByPlaceholderText, container, urlInput;
398
- return _regenerator["default"].wrap(function (_context2) {
399
- while (1) switch (_context2.prev = _context2.next) {
400
- case 0:
401
- _render25 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
402
- type: "video"
403
- }))), getByPlaceholderText = _render25.getByPlaceholderText, container = _render25.container;
404
- urlInput = getByPlaceholderText('Paste URL of video...');
405
- _react2.fireEvent.change(urlInput, {
406
- target: {
407
- value: 'https://youtube.com/watch?v=abc123'
408
- }
409
- });
410
- // Just verify the input rendered and change event didn't throw
411
- expect(container).toBeInTheDocument();
412
- case 1:
413
- case "end":
414
- return _context2.stop();
415
- }
416
- }, _callee2);
417
- })));
418
- it('renders file upload input when on upload file tab', function () {
419
- var uploadSoundSupport = {
420
- add: jest.fn(),
421
- "delete": jest.fn()
422
- };
423
- var _render26 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaDialog.MediaDialog, (0, _extends2["default"])({}, defaultProps, {
424
- type: "audio",
425
- uploadSoundSupport: uploadSoundSupport
426
- }))),
427
- getByText = _render26.getByText,
428
- container = _render26.container;
429
- var uploadTab = getByText('Upload file');
430
- _react2.fireEvent.click(uploadTab);
431
- var fileInput = container.querySelector('input[type="file"]');
432
- expect(fileInput).toBeInTheDocument();
433
- });
434
- });
435
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfTWVkaWFEaWFsb2ciLCJnbG9iYWwiLCJmZXRjaCIsImplc3QiLCJmbiIsIm1vY2siLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9yZWYiLCJjaGlsZHJlbiIsIm9wZW4iLCJjcmVhdGVFbGVtZW50IiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsIl9yZWY3IiwidmFsdWUiLCJvbkNoYW5nZSIsImxhYmVsIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiX2V4dGVuZHMyIiwidW5kZWZpbmVkIiwiX3JlZjgiLCJfcmVmOSIsIl9yZWYwIiwiX3JlZjEiLCJkZXNjcmliZSIsImRlZmF1bHRQcm9wcyIsImhhbmRsZUNsb3NlIiwidHlwZSIsImJlZm9yZUVhY2giLCJjbGVhckFsbE1vY2tzIiwibW9ja0NsZWFyIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiTWVkaWFEaWFsb2ciLCJjb250YWluZXIiLCJleHBlY3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9yZW5kZXIyIiwiZ2V0QnlUZXh0IiwiX3JlbmRlcjMiLCJfcmVuZGVyNCIsImdldEJ5TGFiZWxUZXh0IiwiX3JlbmRlcjUiLCJfcmVuZGVyNiIsIl9yZW5kZXI3IiwiZmlyZUV2ZW50IiwiY2xpY2siLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsIl9yZW5kZXI4IiwiaW5zZXJ0QnV0dG9uIiwidG9CZURpc2FibGVkIiwiX3JlbmRlcjkiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZW5kZXIwIiwiZ2V0QnlQbGFjZWhvbGRlclRleHQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVybCIsIndhaXRGb3IiLCJ1cmxJbnB1dCIsImNoYW5nZSIsInRhcmdldCIsInN0b3AiLCJfcmVuZGVyMSIsIndpZHRoSW5wdXQiLCJ0b0JlIiwiX3JlbmRlcjEwIiwiaGVpZ2h0SW5wdXQiLCJfcmVuZGVyMTEiLCJfcmVuZGVyMTIiLCJfcmVuZGVyMTMiLCJfcmVuZGVyMTQiLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJhZGQiLCJfcmVuZGVyMTUiLCJfcmVuZGVyMTYiLCJxdWVyeUJ5VGV4dCIsIm5vdCIsIl9yZW5kZXIxNyIsImluc2VydFVybFRhYiIsIl9yZW5kZXIxOCIsImVkaXQiLCJfcmVuZGVyMTkiLCJfcmVuZGVyMjAiLCJzcmMiLCJfcmVuZGVyMjEiLCJfcmVuZGVyMjIiLCJzdGFydHMiLCJfcmVuZGVyMjMiLCJlbmRzIiwiX3JlbmRlcjI0IiwiZGlzYWJsZVBvcnRhbCIsIl9jYWxsZWUyIiwiX3JlbmRlcjI1IiwiX2NvbnRleHQyIiwiX3JlbmRlcjI2IiwidXBsb2FkVGFiIiwiZmlsZUlucHV0IiwicXVlcnlTZWxlY3RvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9NZWRpYURpYWxvZy50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBmaXJlRXZlbnQsIHdhaXRGb3IgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IE1lZGlhRGlhbG9nIH0gZnJvbSAnLi4vbWVkaWEvTWVkaWFEaWFsb2cnO1xuXG5nbG9iYWwuZmV0Y2ggPSBqZXN0LmZuKCk7XG5cbmplc3QubW9jaygnQG11aS9tYXRlcmlhbC9EaWFsb2cnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiwgb3BlbiB9KSA9PiBvcGVuICYmIDxkaXYgZGF0YS10ZXN0aWQ9XCJkaWFsb2dcIj57Y2hpbGRyZW59PC9kaXY+LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGUnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiB9KSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiZGlhbG9nLXRpdGxlXCI+e2NoaWxkcmVufTwvZGl2Pixcbn0pKTtcblxuamVzdC5tb2NrKCdAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnQnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiB9KSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiZGlhbG9nLWNvbnRlbnRcIj57Y2hpbGRyZW59PC9kaXY+LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHQnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiB9KSA9PiA8ZGl2PntjaGlsZHJlbn08L2Rpdj4sXG59KSk7XG5cbmplc3QubW9jaygnQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zJywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiBkYXRhLXRlc3RpZD1cImRpYWxvZy1hY3Rpb25zXCI+e2NoaWxkcmVufTwvZGl2Pixcbn0pKTtcblxuamVzdC5tb2NrKCdAbXVpL21hdGVyaWFsL0J1dHRvbicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICh7IGNoaWxkcmVuLCBvbkNsaWNrLCBkaXNhYmxlZCB9KSA9PiAoXG4gICAgPGJ1dHRvbiBvbkNsaWNrPXtvbkNsaWNrfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BtdWkvbWF0ZXJpYWwvVGV4dEZpZWxkJywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHsgdmFsdWUsIG9uQ2hhbmdlLCBsYWJlbCwgcGxhY2Vob2xkZXIsIGlucHV0UHJvcHMgfSkgPT4gKFxuICAgIDxkaXY+XG4gICAgICA8bGFiZWw+e2xhYmVsfTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdmFsdWU9e3ZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHZhbHVlfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgYXJpYS1sYWJlbD17bGFiZWx9XG4gICAgICAgIHsuLi5pbnB1dFByb3BzfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuamVzdC5tb2NrKCdAbXVpL21hdGVyaWFsL1RhYnMnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiwgdmFsdWUsIG9uQ2hhbmdlIH0pID0+IChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwidGFic1wiIGRhdGEtdmFsdWU9e3ZhbHVlfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuamVzdC5tb2NrKCdAbXVpL21hdGVyaWFsL1RhYicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICh7IGxhYmVsLCBvbkNsaWNrIH0pID0+IChcbiAgICA8YnV0dG9uIG9uQ2xpY2s9e29uQ2xpY2t9IGRhdGEtdGVzdGlkPVwidGFiXCI+XG4gICAgICB7bGFiZWx9XG4gICAgPC9idXR0b24+XG4gICksXG59KSk7XG5cbmplc3QubW9jaygnQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5JywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHsgY2hpbGRyZW4gfSkgPT4gPGRpdj57Y2hpbGRyZW59PC9kaXY+LFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICh7IGNoaWxkcmVuLCBvbkNsaWNrIH0pID0+IDxidXR0b24gb25DbGljaz17b25DbGlja30+e2NoaWxkcmVufTwvYnV0dG9uPixcbn0pKTtcblxuamVzdC5tb2NrKCdAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZScsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICgpID0+IDxzdmcgZGF0YS10ZXN0aWQ9XCJkZWxldGUtaWNvblwiIC8+LFxufSkpO1xuXG5kZXNjcmliZSgnTWVkaWFEaWFsb2cnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcGVuOiB0cnVlLFxuICAgIGhhbmRsZUNsb3NlOiBqZXN0LmZuKCksXG4gICAgdHlwZTogJ3ZpZGVvJyxcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICBnbG9iYWwuZmV0Y2gubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIGRpYWxvZyB0aXRsZSBmb3IgdmlkZW8nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cInZpZGVvXCIgLz4pO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJ0luc2VydCBWaWRlbycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBkaWFsb2cgdGl0bGUgZm9yIGF1ZGlvJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJhdWRpb1wiIC8+KTtcbiAgICBleHBlY3QoZ2V0QnlUZXh0KCdJbnNlcnQgQXVkaW8nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgVVJMIGlucHV0IGZpZWxkJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlMYWJlbFRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGV4cGVjdChnZXRCeUxhYmVsVGV4dCgnVVJMJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIENhbmNlbCBidXR0b24nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJ0NhbmNlbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBJbnNlcnQgYnV0dG9uJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICBleHBlY3QoZ2V0QnlUZXh0KCdJbnNlcnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIGhhbmRsZUNsb3NlIHdpdGggZmFsc2Ugd2hlbiBDYW5jZWwgaXMgY2xpY2tlZCcsICgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9IGplc3QuZm4oKTtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxNZWRpYURpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+KTtcbiAgICBmaXJlRXZlbnQuY2xpY2soZ2V0QnlUZXh0KCdDYW5jZWwnKSk7XG4gICAgZXhwZWN0KGhhbmRsZUNsb3NlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdkaXNhYmxlcyBJbnNlcnQgYnV0dG9uIHdoZW4gVVJMIGlzIGludmFsaWQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGNvbnN0IGluc2VydEJ1dHRvbiA9IGdldEJ5VGV4dCgnSW5zZXJ0Jyk7XG4gICAgZXhwZWN0KGluc2VydEJ1dHRvbikudG9CZURpc2FibGVkKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG93cyB2aWRlbyBwcm9wZXJ0aWVzIGZpZWxkcyBmb3IgdmlkZW8gdHlwZScsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5TGFiZWxUZXh0IH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJ2aWRlb1wiIC8+KTtcbiAgICBleHBlY3QoZ2V0QnlMYWJlbFRleHQoJ1dpZHRoJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KGdldEJ5TGFiZWxUZXh0KCdIZWlnaHQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3dzIHN0YXJ0cyBhbmQgZW5kcyBmaWVsZHMgZm9yIHZpZGVvJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlMYWJlbFRleHQsIGdldEJ5UGxhY2Vob2xkZXJUZXh0IH0gPSByZW5kZXIoXG4gICAgICA8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cInZpZGVvXCIgdXJsPVwiaHR0cHM6Ly95b3V0dWJlLmNvbS93YXRjaD92PWFiY1wiIC8+LFxuICAgICk7XG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBjb25zdCB1cmxJbnB1dCA9IGdldEJ5UGxhY2Vob2xkZXJUZXh0KCdQYXN0ZSBVUkwgb2YgdmlkZW8uLi4nKTtcbiAgICAgIGZpcmVFdmVudC5jaGFuZ2UodXJsSW5wdXQsIHsgdGFyZ2V0OiB7IHZhbHVlOiAnaHR0cHM6Ly95b3V0dWJlLmNvbS93YXRjaD92PWFiYzEyMycgfSB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3VwZGF0ZXMgd2lkdGggb24gY2hhbmdlJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlMYWJlbFRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cInZpZGVvXCIgLz4pO1xuICAgIGNvbnN0IHdpZHRoSW5wdXQgPSBnZXRCeUxhYmVsVGV4dCgnV2lkdGgnKTtcbiAgICBmaXJlRXZlbnQuY2hhbmdlKHdpZHRoSW5wdXQsIHsgdGFyZ2V0OiB7IHZhbHVlOiAnODAwJyB9IH0pO1xuICAgIGV4cGVjdCh3aWR0aElucHV0LnZhbHVlKS50b0JlKCc4MDAnKTtcbiAgfSk7XG5cbiAgaXQoJ3VwZGF0ZXMgaGVpZ2h0IG9uIGNoYW5nZScsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5TGFiZWxUZXh0IH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJ2aWRlb1wiIC8+KTtcbiAgICBjb25zdCBoZWlnaHRJbnB1dCA9IGdldEJ5TGFiZWxUZXh0KCdIZWlnaHQnKTtcbiAgICBmaXJlRXZlbnQuY2hhbmdlKGhlaWdodElucHV0LCB7IHRhcmdldDogeyB2YWx1ZTogJzYwMCcgfSB9KTtcbiAgICBleHBlY3QoaGVpZ2h0SW5wdXQudmFsdWUpLnRvQmUoJzYwMCcpO1xuICB9KTtcblxuICBpdCgnaGFzIGRlZmF1bHQgd2lkdGggb2YgNTYwJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlMYWJlbFRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cInZpZGVvXCIgLz4pO1xuICAgIGNvbnN0IHdpZHRoSW5wdXQgPSBnZXRCeUxhYmVsVGV4dCgnV2lkdGgnKTtcbiAgICBleHBlY3Qod2lkdGhJbnB1dC52YWx1ZSkudG9CZSgnNTYwJyk7XG4gIH0pO1xuXG4gIGl0KCdoYXMgZGVmYXVsdCBoZWlnaHQgb2YgMzE1JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlMYWJlbFRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cInZpZGVvXCIgLz4pO1xuICAgIGNvbnN0IGhlaWdodElucHV0ID0gZ2V0QnlMYWJlbFRleHQoJ0hlaWdodCcpO1xuICAgIGV4cGVjdChoZWlnaHRJbnB1dC52YWx1ZSkudG9CZSgnMzE1Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG93cyBJbnNlcnQgVVJMIHRhYicsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxNZWRpYURpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSB0eXBlPVwidmlkZW9cIiAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGV4dCgnSW5zZXJ0IFlvdVR1YmUsIFZpbWVvLCBvciBHb29nbGUgRHJpdmUgVVJMJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG93cyBJbnNlcnQgVVJMIHRhYiBmb3IgYXVkaW8nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cImF1ZGlvXCIgLz4pO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJ0luc2VydCBTb3VuZENsb3VkIFVSTCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnc2hvd3MgVXBsb2FkIGZpbGUgdGFiIHdoZW4gdXBsb2FkU291bmRTdXBwb3J0IGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHVwbG9hZFNvdW5kU3VwcG9ydCA9IHtcbiAgICAgIGFkZDogamVzdC5mbigpLFxuICAgICAgZGVsZXRlOiBqZXN0LmZuKCksXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKFxuICAgICAgPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJhdWRpb1wiIHVwbG9hZFNvdW5kU3VwcG9ydD17dXBsb2FkU291bmRTdXBwb3J0fSAvPixcbiAgICApO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJ1VwbG9hZCBmaWxlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCBzaG93IFVwbG9hZCBmaWxlIHRhYiBmb3IgdmlkZW8nLCAoKSA9PiB7XG4gICAgY29uc3QgdXBsb2FkU291bmRTdXBwb3J0ID0ge1xuICAgICAgYWRkOiBqZXN0LmZuKCksXG4gICAgICBkZWxldGU6IGplc3QuZm4oKSxcbiAgICB9O1xuICAgIGNvbnN0IHsgcXVlcnlCeVRleHQgfSA9IHJlbmRlcihcbiAgICAgIDxNZWRpYURpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSB0eXBlPVwidmlkZW9cIiB1cGxvYWRTb3VuZFN1cHBvcnQ9e3VwbG9hZFNvdW5kU3VwcG9ydH0gLz4sXG4gICAgKTtcbiAgICBleHBlY3QocXVlcnlCeVRleHQoJ1VwbG9hZCBmaWxlJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY2hhbmdlcyB0YWIgb24gdGFiIGNsaWNrJywgKCkgPT4ge1xuICAgIGNvbnN0IHVwbG9hZFNvdW5kU3VwcG9ydCA9IHtcbiAgICAgIGFkZDogamVzdC5mbigpLFxuICAgICAgZGVsZXRlOiBqZXN0LmZuKCksXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKFxuICAgICAgPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJhdWRpb1wiIHVwbG9hZFNvdW5kU3VwcG9ydD17dXBsb2FkU291bmRTdXBwb3J0fSAvPixcbiAgICApO1xuICAgIGNvbnN0IGluc2VydFVybFRhYiA9IGdldEJ5VGV4dCgnSW5zZXJ0IFNvdW5kQ2xvdWQgVVJMJyk7XG4gICAgZmlyZUV2ZW50LmNsaWNrKGluc2VydFVybFRhYik7XG4gICAgZXhwZWN0KGluc2VydFVybFRhYikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3dzIEluc2VydCBidXR0b24gdGV4dCB3aGVuIG5vdCBlZGl0aW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IGVkaXQ9e2ZhbHNlfSAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGV4dCgnSW5zZXJ0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG93cyBVcGRhdGUgYnV0dG9uIHRleHQgd2hlbiBlZGl0aW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IGVkaXQ9e3RydWV9IC8+KTtcbiAgICBleHBlY3QoZ2V0QnlUZXh0KCdVcGRhdGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2FjY2VwdHMgY3VzdG9tIHNyYyBwcm9wJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHNyYz1cImh0dHBzOi8vZXhhbXBsZS5jb20vdmlkZW9cIiAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2FjY2VwdHMgY3VzdG9tIHVybCBwcm9wJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlQbGFjZWhvbGRlclRleHQgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdXJsPVwiaHR0cHM6Ly95b3V0dWJlLmNvbS93YXRjaD92PXRlc3RcIiAvPik7XG4gICAgY29uc3QgdXJsSW5wdXQgPSBnZXRCeVBsYWNlaG9sZGVyVGV4dCgnUGFzdGUgVVJMIG9mIHZpZGVvLi4uJyk7XG4gICAgZXhwZWN0KHVybElucHV0LnZhbHVlKS50b0JlKCdodHRwczovL3lvdXR1YmUuY29tL3dhdGNoP3Y9dGVzdCcpO1xuICB9KTtcblxuICBpdCgnYWNjZXB0cyBjdXN0b20gc3RhcnRzIHByb3AnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxNZWRpYURpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBzdGFydHM9ezEwfSB0eXBlPVwidmlkZW9cIiB1cmw9XCJodHRwczovL3lvdXR1YmUuY29tL3dhdGNoP3Y9dGVzdFwiIC8+LFxuICAgICk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2FjY2VwdHMgY3VzdG9tIGVuZHMgcHJvcCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IGVuZHM9ezYwfSB0eXBlPVwidmlkZW9cIiB1cmw9XCJodHRwczovL3lvdXR1YmUuY29tL3dhdGNoP3Y9dGVzdFwiIC8+LFxuICAgICk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc2FibGVzIHBvcnRhbCB3aGVuIGRpc2FibGVQb3J0YWwgaXMgdHJ1ZScsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxNZWRpYURpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBkaXNhYmxlUG9ydGFsPXt0cnVlfSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgVVJMIGNoYW5nZSBmb3IgWW91VHViZScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5UGxhY2Vob2xkZXJUZXh0LCBjb250YWluZXIgfSA9IHJlbmRlcig8TWVkaWFEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cInZpZGVvXCIgLz4pO1xuICAgIGNvbnN0IHVybElucHV0ID0gZ2V0QnlQbGFjZWhvbGRlclRleHQoJ1Bhc3RlIFVSTCBvZiB2aWRlby4uLicpO1xuICAgIGZpcmVFdmVudC5jaGFuZ2UodXJsSW5wdXQsIHsgdGFyZ2V0OiB7IHZhbHVlOiAnaHR0cHM6Ly95b3V0dWJlLmNvbS93YXRjaD92PWFiYzEyMycgfSB9KTtcbiAgICAvLyBKdXN0IHZlcmlmeSB0aGUgaW5wdXQgcmVuZGVyZWQgYW5kIGNoYW5nZSBldmVudCBkaWRuJ3QgdGhyb3dcbiAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBmaWxlIHVwbG9hZCBpbnB1dCB3aGVuIG9uIHVwbG9hZCBmaWxlIHRhYicsICgpID0+IHtcbiAgICBjb25zdCB1cGxvYWRTb3VuZFN1cHBvcnQgPSB7XG4gICAgICBhZGQ6IGplc3QuZm4oKSxcbiAgICAgIGRlbGV0ZTogamVzdC5mbigpLFxuICAgIH07XG4gICAgY29uc3QgeyBnZXRCeVRleHQsIGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgPE1lZGlhRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJhdWRpb1wiIHVwbG9hZFNvdW5kU3VwcG9ydD17dXBsb2FkU291bmRTdXBwb3J0fSAvPixcbiAgICApO1xuICAgIGNvbnN0IHVwbG9hZFRhYiA9IGdldEJ5VGV4dCgnVXBsb2FkIGZpbGUnKTtcbiAgICBmaXJlRXZlbnQuY2xpY2sodXBsb2FkVGFiKTtcbiAgICBjb25zdCBmaWxlSW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImZpbGVcIl0nKTtcbiAgICBleHBlY3QoZmlsZUlucHV0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNB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
@@ -1,126 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _react = _interopRequireDefault(require("react"));
5
- var _react2 = require("@testing-library/react");
6
- var _MediaToolbar = _interopRequireDefault(require("../media/MediaToolbar"));
7
- describe('MediaToolbar', function () {
8
- it('renders without crashing', function () {
9
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
10
- onEdit: jest.fn(),
11
- onRemove: jest.fn()
12
- })),
13
- container = _render.container;
14
- expect(container).toBeInTheDocument();
15
- });
16
- it('renders Edit Settings text', function () {
17
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
18
- onEdit: jest.fn(),
19
- onRemove: jest.fn()
20
- })),
21
- getByText = _render2.getByText;
22
- expect(getByText('Edit Settings')).toBeInTheDocument();
23
- });
24
- it('renders Remove text', function () {
25
- var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
26
- onEdit: jest.fn(),
27
- onRemove: jest.fn()
28
- })),
29
- getByText = _render3.getByText;
30
- expect(getByText('Remove')).toBeInTheDocument();
31
- });
32
- it('calls onEdit when Edit Settings is clicked', function () {
33
- var onEdit = jest.fn();
34
- var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
35
- onEdit: onEdit,
36
- onRemove: jest.fn()
37
- })),
38
- getByText = _render4.getByText;
39
- _react2.fireEvent.click(getByText('Edit Settings'));
40
- expect(onEdit).toHaveBeenCalled();
41
- });
42
- it('calls onRemove when Remove is clicked', function () {
43
- var onRemove = jest.fn();
44
- var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
45
- onEdit: jest.fn(),
46
- onRemove: onRemove
47
- })),
48
- getByText = _render5.getByText;
49
- _react2.fireEvent.click(getByText('Remove'));
50
- expect(onRemove).toHaveBeenCalled();
51
- });
52
- it('hides Edit Settings when hideEdit is true', function () {
53
- var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
54
- hideEdit: true,
55
- onEdit: jest.fn(),
56
- onRemove: jest.fn()
57
- })),
58
- queryByText = _render6.queryByText;
59
- expect(queryByText('Edit Settings')).not.toBeInTheDocument();
60
- });
61
- it('shows Edit Settings when hideEdit is false', function () {
62
- var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
63
- hideEdit: false,
64
- onEdit: jest.fn(),
65
- onRemove: jest.fn()
66
- })),
67
- getByText = _render7.getByText;
68
- expect(getByText('Edit Settings')).toBeInTheDocument();
69
- });
70
- it('applies cursor pointer style', function () {
71
- var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
72
- onEdit: jest.fn(),
73
- onRemove: jest.fn()
74
- })),
75
- getByText = _render8.getByText;
76
- var editButton = getByText('Edit Settings');
77
- expect(editButton).toHaveStyle({
78
- cursor: 'pointer'
79
- });
80
- });
81
- it('has border on Edit Settings container', function () {
82
- var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
83
- onEdit: jest.fn(),
84
- onRemove: jest.fn()
85
- })),
86
- getByText = _render9.getByText;
87
- var editButton = getByText('Edit Settings');
88
- expect(editButton).toHaveStyle({
89
- borderWidth: '0 2px 0 0'
90
- });
91
- });
92
- it('applies white background', function () {
93
- var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
94
- onEdit: jest.fn(),
95
- onRemove: jest.fn()
96
- })),
97
- container = _render0.container;
98
- var root = container.firstChild;
99
- expect(root).toHaveStyle({
100
- background: '#fff'
101
- });
102
- });
103
- it('applies box shadow', function () {
104
- var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
105
- onEdit: jest.fn(),
106
- onRemove: jest.fn()
107
- })),
108
- container = _render1.container;
109
- var root = container.firstChild;
110
- expect(root).toHaveStyle({
111
- boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.25)'
112
- });
113
- });
114
- it('displays inline-flex', function () {
115
- var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_MediaToolbar["default"], {
116
- onEdit: jest.fn(),
117
- onRemove: jest.fn()
118
- })),
119
- container = _render10.container;
120
- var root = container.firstChild;
121
- expect(root).toHaveStyle({
122
- display: 'inline-flex'
123
- });
124
- });
125
- });
126
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfTWVkaWFUb29sYmFyIiwiZGVzY3JpYmUiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50Iiwib25FZGl0IiwiamVzdCIsImZuIiwib25SZW1vdmUiLCJjb250YWluZXIiLCJleHBlY3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9yZW5kZXIyIiwiZ2V0QnlUZXh0IiwiX3JlbmRlcjMiLCJfcmVuZGVyNCIsImZpcmVFdmVudCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZCIsIl9yZW5kZXI1IiwiX3JlbmRlcjYiLCJoaWRlRWRpdCIsInF1ZXJ5QnlUZXh0Iiwibm90IiwiX3JlbmRlcjciLCJfcmVuZGVyOCIsImVkaXRCdXR0b24iLCJ0b0hhdmVTdHlsZSIsImN1cnNvciIsIl9yZW5kZXI5IiwiYm9yZGVyV2lkdGgiLCJfcmVuZGVyMCIsInJvb3QiLCJmaXJzdENoaWxkIiwiYmFja2dyb3VuZCIsIl9yZW5kZXIxIiwiYm94U2hhZG93IiwiX3JlbmRlcjEwIiwiZGlzcGxheSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9NZWRpYVRvb2xiYXIudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgZmlyZUV2ZW50IH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgTWVkaWFUb29sYmFyIGZyb20gJy4uL21lZGlhL01lZGlhVG9vbGJhcic7XG5cbmRlc2NyaWJlKCdNZWRpYVRvb2xiYXInLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8TWVkaWFUb29sYmFyIG9uRWRpdD17amVzdC5mbigpfSBvblJlbW92ZT17amVzdC5mbigpfSAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgRWRpdCBTZXR0aW5ncyB0ZXh0JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPE1lZGlhVG9vbGJhciBvbkVkaXQ9e2plc3QuZm4oKX0gb25SZW1vdmU9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJ0VkaXQgU2V0dGluZ3MnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgUmVtb3ZlIHRleHQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFUb29sYmFyIG9uRWRpdD17amVzdC5mbigpfSBvblJlbW92ZT17amVzdC5mbigpfSAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGV4dCgnUmVtb3ZlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBvbkVkaXQgd2hlbiBFZGl0IFNldHRpbmdzIGlzIGNsaWNrZWQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb25FZGl0ID0gamVzdC5mbigpO1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPE1lZGlhVG9vbGJhciBvbkVkaXQ9e29uRWRpdH0gb25SZW1vdmU9e2plc3QuZm4oKX0gLz4pO1xuICAgIGZpcmVFdmVudC5jbGljayhnZXRCeVRleHQoJ0VkaXQgU2V0dGluZ3MnKSk7XG4gICAgZXhwZWN0KG9uRWRpdCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnY2FsbHMgb25SZW1vdmUgd2hlbiBSZW1vdmUgaXMgY2xpY2tlZCcsICgpID0+IHtcbiAgICBjb25zdCBvblJlbW92ZSA9IGplc3QuZm4oKTtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxNZWRpYVRvb2xiYXIgb25FZGl0PXtqZXN0LmZuKCl9IG9uUmVtb3ZlPXtvblJlbW92ZX0gLz4pO1xuICAgIGZpcmVFdmVudC5jbGljayhnZXRCeVRleHQoJ1JlbW92ZScpKTtcbiAgICBleHBlY3Qob25SZW1vdmUpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hpZGVzIEVkaXQgU2V0dGluZ3Mgd2hlbiBoaWRlRWRpdCBpcyB0cnVlJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgcXVlcnlCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFUb29sYmFyIGhpZGVFZGl0PXt0cnVlfSBvbkVkaXQ9e2plc3QuZm4oKX0gb25SZW1vdmU9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChxdWVyeUJ5VGV4dCgnRWRpdCBTZXR0aW5ncycpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3dzIEVkaXQgU2V0dGluZ3Mgd2hlbiBoaWRlRWRpdCBpcyBmYWxzZScsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxNZWRpYVRvb2xiYXIgaGlkZUVkaXQ9e2ZhbHNlfSBvbkVkaXQ9e2plc3QuZm4oKX0gb25SZW1vdmU9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRleHQoJ0VkaXQgU2V0dGluZ3MnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2FwcGxpZXMgY3Vyc29yIHBvaW50ZXIgc3R5bGUnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8TWVkaWFUb29sYmFyIG9uRWRpdD17amVzdC5mbigpfSBvblJlbW92ZT17amVzdC5mbigpfSAvPik7XG4gICAgY29uc3QgZWRpdEJ1dHRvbiA9IGdldEJ5VGV4dCgnRWRpdCBTZXR0aW5ncycpO1xuICAgIGV4cGVjdChlZGl0QnV0dG9uKS50b0hhdmVTdHlsZSh7IGN1cnNvcjogJ3BvaW50ZXInIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIGJvcmRlciBvbiBFZGl0IFNldHRpbmdzIGNvbnRhaW5lcicsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxNZWRpYVRvb2xiYXIgb25FZGl0PXtqZXN0LmZuKCl9IG9uUmVtb3ZlPXtqZXN0LmZuKCl9IC8+KTtcbiAgICBjb25zdCBlZGl0QnV0dG9uID0gZ2V0QnlUZXh0KCdFZGl0IFNldHRpbmdzJyk7XG4gICAgZXhwZWN0KGVkaXRCdXR0b24pLnRvSGF2ZVN0eWxlKHsgYm9yZGVyV2lkdGg6ICcwIDJweCAwIDAnIH0pO1xuICB9KTtcblxuICBpdCgnYXBwbGllcyB3aGl0ZSBiYWNrZ3JvdW5kJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPE1lZGlhVG9vbGJhciBvbkVkaXQ9e2plc3QuZm4oKX0gb25SZW1vdmU9e2plc3QuZm4oKX0gLz4pO1xuICAgIGNvbnN0IHJvb3QgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICBleHBlY3Qocm9vdCkudG9IYXZlU3R5bGUoeyBiYWNrZ3JvdW5kOiAnI2ZmZicgfSk7XG4gIH0pO1xuXG4gIGl0KCdhcHBsaWVzIGJveCBzaGFkb3cnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8TWVkaWFUb29sYmFyIG9uRWRpdD17amVzdC5mbigpfSBvblJlbW92ZT17amVzdC5mbigpfSAvPik7XG4gICAgY29uc3Qgcm9vdCA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgIGV4cGVjdChyb290KS50b0hhdmVTdHlsZSh7IGJveFNoYWRvdzogJzBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSknIH0pO1xuICB9KTtcblxuICBpdCgnZGlzcGxheXMgaW5saW5lLWZsZXgnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8TWVkaWFUb29sYmFyIG9uRWRpdD17amVzdC5mbigpfSBvblJlbW92ZT17amVzdC5mbigpfSAvPik7XG4gICAgY29uc3Qgcm9vdCA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgIGV4cGVjdChyb290KS50b0hhdmVTdHlsZSh7IGRpc3BsYXk6ICdpbmxpbmUtZmxleCcgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBRyxRQUFRLENBQUMsY0FBYyxFQUFFLFlBQU07RUFDN0JDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO0lBQ25DLElBQUFDLE9BQUEsR0FBc0IsSUFBQUMsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsYUFBQSxXQUFZO1FBQUNNLE1BQU0sRUFBRUMsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBRTtRQUFDQyxRQUFRLEVBQUVGLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQUUsQ0FBRSxDQUFDLENBQUM7TUFBOUVFLFNBQVMsR0FBQVAsT0FBQSxDQUFUTyxTQUFTO0lBQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDO0VBQ3ZDLENBQUMsQ0FBQztFQUVGVixFQUFFLENBQUMsNEJBQTRCLEVBQUUsWUFBTTtJQUNyQyxJQUFBVyxRQUFBLEdBQXNCLElBQUFULGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLGFBQUEsV0FBWTtRQUFDTSxNQUFNLEVBQUVDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUU7UUFBQ0MsUUFBUSxFQUFFRixJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFFLENBQUUsQ0FBQyxDQUFDO01BQTlFTSxTQUFTLEdBQUFELFFBQUEsQ0FBVEMsU0FBUztJQUNqQkgsTUFBTSxDQUFDRyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQ0YsaUJBQWlCLENBQUMsQ0FBQztFQUN4RCxDQUFDLENBQUM7RUFFRlYsRUFBRSxDQUFDLHFCQUFx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