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