@pie-lib/editable-html 10.0.0-beta.4 → 10.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CHANGELOG.md +255 -152
  2. package/lib/components.js +15 -39
  3. package/lib/components.js.map +1 -1
  4. package/lib/editor.js +200 -356
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +25 -49
  7. package/lib/index.js.map +1 -1
  8. package/lib/new-serialization.js +31 -71
  9. package/lib/new-serialization.js.map +1 -1
  10. package/lib/parse-html.js +7 -6
  11. package/lib/parse-html.js.map +1 -1
  12. package/lib/plugins/characters/custom-popper.js +3 -13
  13. package/lib/plugins/characters/custom-popper.js.map +1 -1
  14. package/lib/plugins/characters/index.js +20 -59
  15. package/lib/plugins/characters/index.js.map +1 -1
  16. package/lib/plugins/characters/utils.js +1 -1
  17. package/lib/plugins/characters/utils.js.map +1 -1
  18. package/lib/plugins/hotKeys/index.js +9 -16
  19. package/lib/plugins/hotKeys/index.js.map +1 -1
  20. package/lib/plugins/image/alt-dialog.js +6 -27
  21. package/lib/plugins/image/alt-dialog.js.map +1 -1
  22. package/lib/plugins/image/component.js +42 -99
  23. package/lib/plugins/image/component.js.map +1 -1
  24. package/lib/plugins/image/image-toolbar.js +14 -50
  25. package/lib/plugins/image/image-toolbar.js.map +1 -1
  26. package/lib/plugins/image/index.js +16 -59
  27. package/lib/plugins/image/index.js.map +1 -1
  28. package/lib/plugins/image/insert-image-handler.js +13 -25
  29. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  30. package/lib/plugins/index.js +6 -36
  31. package/lib/plugins/index.js.map +1 -1
  32. package/lib/plugins/list/index.js +11 -46
  33. package/lib/plugins/list/index.js.map +1 -1
  34. package/lib/plugins/math/index.js +89 -93
  35. package/lib/plugins/math/index.js.map +1 -1
  36. package/lib/plugins/media/index.js +32 -109
  37. package/lib/plugins/media/index.js.map +1 -1
  38. package/lib/plugins/media/media-dialog.js +107 -195
  39. package/lib/plugins/media/media-dialog.js.map +1 -1
  40. package/lib/plugins/media/media-toolbar.js +7 -27
  41. package/lib/plugins/media/media-toolbar.js.map +1 -1
  42. package/lib/plugins/media/media-wrapper.js +9 -14
  43. package/lib/plugins/media/media-wrapper.js.map +1 -1
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js +13 -53
  45. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -20
  47. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -10
  49. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  50. package/lib/plugins/respArea/icons/index.js +16 -31
  51. package/lib/plugins/respArea/icons/index.js.map +1 -1
  52. package/lib/plugins/respArea/index.js +7 -54
  53. package/lib/plugins/respArea/index.js.map +1 -1
  54. package/lib/plugins/respArea/inline-dropdown/index.js +3 -10
  55. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  56. package/lib/plugins/respArea/utils.js +6 -21
  57. package/lib/plugins/respArea/utils.js.map +1 -1
  58. package/lib/plugins/table/icons/index.js +1 -8
  59. package/lib/plugins/table/icons/index.js.map +1 -1
  60. package/lib/plugins/table/index.js +54 -187
  61. package/lib/plugins/table/index.js.map +1 -1
  62. package/lib/plugins/table/table-toolbar.js +12 -44
  63. package/lib/plugins/table/table-toolbar.js.map +1 -1
  64. package/lib/plugins/toolbar/default-toolbar.js +17 -46
  65. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  66. package/lib/plugins/toolbar/done-button.js +2 -10
  67. package/lib/plugins/toolbar/done-button.js.map +1 -1
  68. package/lib/plugins/toolbar/editor-and-toolbar.js +134 -144
  69. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  70. package/lib/plugins/toolbar/index.js +2 -6
  71. package/lib/plugins/toolbar/index.js.map +1 -1
  72. package/lib/plugins/toolbar/toolbar-buttons.js +9 -40
  73. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  74. package/lib/plugins/toolbar/toolbar.js +29 -83
  75. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  76. package/lib/plugins/utils.js +8 -30
  77. package/lib/plugins/utils.js.map +1 -1
  78. package/lib/serialization.js +11 -69
  79. package/lib/serialization.js.map +1 -1
  80. package/lib/test-serializer.js +5 -56
  81. package/lib/test-serializer.js.map +1 -1
  82. package/lib/theme.js +1 -1
  83. package/lib/theme.js.map +1 -1
  84. package/package.json +7 -7
  85. package/playground/image/data.js +20 -20
  86. package/playground/image/index.html +20 -22
  87. package/playground/image/index.jsx +10 -12
  88. package/playground/index.html +23 -25
  89. package/playground/mathquill/index.html +20 -23
  90. package/playground/mathquill/index.jsx +22 -18
  91. package/playground/prod-test/index.html +20 -24
  92. package/playground/prod-test/index.jsx +3 -5
  93. package/playground/schema-override/data.js +10 -10
  94. package/playground/schema-override/image-plugin.jsx +4 -3
  95. package/playground/schema-override/index.html +19 -21
  96. package/playground/schema-override/index.jsx +14 -13
  97. package/playground/serialization/data.js +10 -10
  98. package/playground/serialization/image-plugin.jsx +4 -3
  99. package/playground/serialization/index.html +20 -22
  100. package/playground/table-examples.html +8 -5
  101. package/playground/webpack.config.js +10 -10
  102. package/src/editor.jsx +108 -104
  103. package/src/index.jsx +20 -13
  104. package/src/new-serialization.jsx +30 -11
  105. package/src/parse-html.js +1 -1
  106. package/src/plugins/characters/custom-popper.js +7 -7
  107. package/src/plugins/characters/index.jsx +34 -23
  108. package/src/plugins/characters/utils.js +81 -81
  109. package/src/plugins/image/alt-dialog.jsx +5 -4
  110. package/src/plugins/image/component.jsx +47 -44
  111. package/src/plugins/image/image-toolbar.jsx +19 -27
  112. package/src/plugins/image/index.jsx +24 -18
  113. package/src/plugins/image/insert-image-handler.js +9 -0
  114. package/src/plugins/index.jsx +7 -9
  115. package/src/plugins/list/index.jsx +7 -7
  116. package/src/plugins/math/index.jsx +71 -28
  117. package/src/plugins/media/index.jsx +7 -7
  118. package/src/plugins/media/media-dialog.js +63 -89
  119. package/src/plugins/media/media-toolbar.jsx +8 -8
  120. package/src/plugins/media/media-wrapper.jsx +8 -5
  121. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +19 -21
  122. package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -4
  123. package/src/plugins/respArea/explicit-constructed-response/index.jsx +5 -4
  124. package/src/plugins/respArea/icons/index.jsx +14 -11
  125. package/src/plugins/respArea/index.jsx +9 -15
  126. package/src/plugins/respArea/inline-dropdown/index.jsx +6 -6
  127. package/src/plugins/respArea/utils.jsx +7 -3
  128. package/src/plugins/table/icons/index.jsx +11 -17
  129. package/src/plugins/table/index.jsx +14 -10
  130. package/src/plugins/table/table-toolbar.jsx +6 -6
  131. package/src/plugins/toolbar/default-toolbar.jsx +9 -9
  132. package/src/plugins/toolbar/done-button.jsx +4 -4
  133. package/src/plugins/toolbar/editor-and-toolbar.jsx +36 -33
  134. package/src/plugins/toolbar/index.jsx +3 -2
  135. package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
  136. package/src/plugins/toolbar/toolbar.jsx +6 -1
  137. package/src/plugins/utils.js +2 -2
  138. package/src/serialization.jsx +34 -32
  139. package/src/test-serializer.js +2 -9
  140. package/lib/old-serialization.js +0 -330
  141. package/lib/slate-editor.js +0 -302
  142. package/src/test-serializer.js.rej +0 -20
  143. package/yarn-error.log +0 -18318
@@ -1,101 +1,61 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = exports.MediaDialog = void 0;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
12
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
-
20
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
-
28
17
  var _react = _interopRequireDefault(require("react"));
29
-
30
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
-
32
19
  var _debug = _interopRequireDefault(require("debug"));
33
-
34
20
  var _renderUi = require("@pie-lib/render-ui");
35
-
36
21
  var _styles = require("@material-ui/core/styles");
37
-
38
22
  var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
39
-
40
23
  var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
41
-
42
24
  var _Tabs = _interopRequireDefault(require("@material-ui/core/Tabs"));
43
-
44
25
  var _Tab = _interopRequireDefault(require("@material-ui/core/Tab"));
45
-
46
26
  var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
47
-
48
27
  var _DialogContent = _interopRequireDefault(require("@material-ui/core/DialogContent"));
49
-
50
28
  var _DialogContentText = _interopRequireDefault(require("@material-ui/core/DialogContentText"));
51
-
52
29
  var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
53
-
54
30
  var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
55
-
56
31
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
57
-
58
32
  var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
59
-
60
33
  var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
61
-
62
34
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
63
-
64
35
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
65
-
66
36
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
67
-
68
37
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
69
-
70
38
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:media:dialog');
71
-
72
39
  var matchYoutubeUrl = function matchYoutubeUrl(url) {
73
40
  if (!url) {
74
41
  return false;
75
42
  }
76
-
77
43
  var p = /^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
78
-
79
44
  if (url.match(p)) {
80
45
  return url.match(p)[1];
81
46
  }
82
-
83
47
  return false;
84
48
  };
85
-
86
49
  var matchVimeoUrl = function matchVimeoUrl(url) {
87
50
  return url && /(http|https)?:\/\/(www\.)?(player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^/]*)\/videos\/|)(video\/)?(\d+)(?:|\/\?)/.test(url);
88
51
  };
89
-
90
52
  var matchSoundCloudUrl = function matchSoundCloudUrl(url) {
91
53
  if (!url) {
92
54
  return false;
93
55
  }
94
-
95
56
  var regexp = /^https?:\/\/(soundcloud\.com|snd\.sc)\/(.*)$/;
96
57
  return url.match(regexp) && url.match(regexp)[2];
97
58
  };
98
-
99
59
  var makeApiRequest = function makeApiRequest(url) {
100
60
  return new Promise(function (resolve) {
101
61
  try {
@@ -115,71 +75,57 @@ var makeApiRequest = function makeApiRequest(url) {
115
75
  }
116
76
  });
117
77
  };
118
-
119
78
  var typeMap = {
120
79
  video: 'Video',
121
80
  audio: 'Audio'
122
81
  };
123
-
124
82
  var MediaDialog = /*#__PURE__*/function (_React$Component) {
125
83
  (0, _inherits2["default"])(MediaDialog, _React$Component);
126
-
127
84
  var _super = _createSuper(MediaDialog);
128
-
129
85
  function MediaDialog(props) {
130
86
  var _this;
131
-
132
87
  (0, _classCallCheck2["default"])(this, MediaDialog);
133
88
  _this = _super.call(this, props);
134
89
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "formatUrl", function () {
135
90
  var _this$state = _this.state,
136
- url = _this$state.url,
137
- urlToUse = _this$state.urlToUse,
138
- starts = _this$state.starts,
139
- ends = _this$state.ends;
91
+ url = _this$state.url,
92
+ urlToUse = _this$state.urlToUse,
93
+ starts = _this$state.starts,
94
+ ends = _this$state.ends;
140
95
  var isYoutube = matchYoutubeUrl(url);
141
96
  var isVimeo = matchVimeoUrl(url);
142
97
  var formattedUrl = urlToUse || '';
143
-
144
98
  if ((isYoutube || isVimeo) && urlToUse) {
145
99
  var params = [];
146
100
  var paramName;
147
101
  var paramStart;
148
-
149
102
  switch (true) {
150
103
  case isVimeo:
151
104
  paramName = 't';
152
105
  paramStart = '#';
153
106
  break;
154
-
155
107
  case isYoutube:
156
108
  paramName = 'start';
157
109
  paramStart = '?';
158
110
  break;
159
-
160
111
  default:
161
112
  paramName = 'start';
162
113
  paramStart = '?';
163
114
  }
164
-
165
115
  if (starts) {
166
116
  params.push("".concat(paramName, "=").concat(starts));
167
117
  }
168
-
169
118
  if (ends) {
170
119
  params.push("end=".concat(ends));
171
120
  }
172
-
173
121
  formattedUrl = "".concat(urlToUse).concat(params.length ? paramStart : '').concat(params.join('&'));
174
122
  }
175
-
176
123
  var callback = function callback() {
177
124
  return _this.setState({
178
125
  formattedUrl: formattedUrl,
179
126
  updating: false
180
127
  });
181
128
  };
182
-
183
129
  _this.setState({
184
130
  formattedUrl: null,
185
131
  updating: true
@@ -190,10 +136,8 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
190
136
  });
191
137
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "urlChange", function (e) {
192
138
  var _ref = e.target || {},
193
- value = _ref.value;
194
-
139
+ value = _ref.value;
195
140
  var type = _this.props.type;
196
-
197
141
  if (type && type === 'audio') {
198
142
  if (matchSoundCloudUrl(value)) {
199
143
  makeApiRequest(value).then(function (urlToUse) {
@@ -212,34 +156,26 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
212
156
  var id = match[2];
213
157
  var urlToUse = "https://youtube.com/embed/".concat(id);
214
158
  log('is youtube');
215
-
216
159
  _this.handleStateChange({
217
160
  urlToUse: urlToUse,
218
161
  url: value || '',
219
162
  invalid: false
220
163
  });
221
-
222
164
  return;
223
165
  }
224
-
225
166
  if (matchVimeoUrl(value)) {
226
167
  var _id = value.replace(/.*vimeo.com\/(.*)/g, '$1');
227
-
228
168
  var _urlToUse2 = "https://player.vimeo.com/video/".concat(_id);
229
-
230
169
  log('is vimeo');
231
-
232
170
  _this.handleStateChange({
233
171
  urlToUse: _urlToUse2,
234
172
  url: value || '',
235
173
  ends: null,
236
174
  invalid: false
237
175
  });
238
-
239
176
  return;
240
177
  }
241
178
  }
242
-
243
179
  _this.handleStateChange({
244
180
  urlToUse: '',
245
181
  url: '',
@@ -254,25 +190,23 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
254
190
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleDone", function (val) {
255
191
  var handleClose = _this.props.handleClose;
256
192
  var _this$state2 = _this.state,
257
- tabValue = _this$state2.tabValue,
258
- fileUpload = _this$state2.fileUpload;
193
+ tabValue = _this$state2.tabValue,
194
+ fileUpload = _this$state2.fileUpload;
259
195
  var isInsertURL = tabValue === 0;
260
-
261
196
  if (!val) {
262
197
  if (fileUpload.url) {
263
198
  _this.handleRemoveFile();
264
199
  }
265
-
266
200
  handleClose(val);
267
201
  } else if (isInsertURL) {
268
202
  var _this$state3 = _this.state,
269
- ends = _this$state3.ends,
270
- height = _this$state3.height,
271
- url = _this$state3.url,
272
- urlToUse = _this$state3.urlToUse,
273
- formattedUrl = _this$state3.formattedUrl,
274
- starts = _this$state3.starts,
275
- width = _this$state3.width;
203
+ ends = _this$state3.ends,
204
+ height = _this$state3.height,
205
+ url = _this$state3.url,
206
+ urlToUse = _this$state3.urlToUse,
207
+ formattedUrl = _this$state3.formattedUrl,
208
+ starts = _this$state3.starts,
209
+ width = _this$state3.width;
276
210
  handleClose(val, {
277
211
  tag: 'iframe',
278
212
  ends: ends,
@@ -294,111 +228,95 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
294
228
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(e) {
295
229
  var fileChosen, reader;
296
230
  return _regenerator["default"].wrap(function _callee$(_context) {
297
- while (1) {
298
- switch (_context.prev = _context.next) {
299
- case 0:
300
- e.preventDefault();
301
-
231
+ while (1) switch (_context.prev = _context.next) {
232
+ case 0:
233
+ e.preventDefault();
234
+ _this.setState({
235
+ fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
236
+ error: null,
237
+ loading: true
238
+ })
239
+ });
240
+ fileChosen = e.target.files[0];
241
+ reader = new FileReader();
242
+ reader.onload = function () {
243
+ var dataURL = reader.result;
302
244
  _this.setState({
303
245
  fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
304
- error: null,
305
- loading: true
246
+ url: dataURL
306
247
  })
307
248
  });
308
-
309
- fileChosen = e.target.files[0];
310
- reader = new FileReader();
311
-
312
- reader.onload = function () {
313
- var dataURL = reader.result;
314
-
315
- _this.setState({
316
- fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
317
- url: dataURL
318
- })
319
- });
320
- };
321
-
322
- reader.readAsDataURL(fileChosen);
323
-
324
- _this.props.uploadSoundSupport.add({
325
- fileChosen: fileChosen,
326
- done: function done(err, src) {
327
- log('done: err:', err);
328
-
329
- if (err) {
330
- //eslint-disable-next-line
331
- console.log(err);
332
-
333
- _this.setState({
334
- fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
335
- loading: false,
336
- error: err
337
- })
338
- });
339
- } else {
340
- _this.setState({
341
- fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
342
- loading: false,
343
- url: src
344
- })
345
- });
346
- }
249
+ };
250
+ reader.readAsDataURL(fileChosen);
251
+ _this.props.uploadSoundSupport.add({
252
+ fileChosen: fileChosen,
253
+ done: function done(err, src) {
254
+ log('done: err:', err);
255
+ if (err) {
256
+ //eslint-disable-next-line
257
+ console.log(err);
258
+ _this.setState({
259
+ fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
260
+ loading: false,
261
+ error: err
262
+ })
263
+ });
264
+ } else {
265
+ _this.setState({
266
+ fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
267
+ loading: false,
268
+ url: src
269
+ })
270
+ });
347
271
  }
348
- });
349
-
350
- case 7:
351
- case "end":
352
- return _context.stop();
353
- }
272
+ }
273
+ });
274
+ case 7:
275
+ case "end":
276
+ return _context.stop();
354
277
  }
355
278
  }, _callee);
356
279
  }));
357
-
358
280
  return function (_x) {
359
281
  return _ref2.apply(this, arguments);
360
282
  };
361
283
  }());
362
284
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleRemoveFile", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
363
285
  return _regenerator["default"].wrap(function _callee2$(_context2) {
364
- while (1) {
365
- switch (_context2.prev = _context2.next) {
366
- case 0:
367
- _this.props.uploadSoundSupport["delete"](_this.state.fileUpload.url, function (err) {
368
- if (err) {
369
- //eslint-disable-next-line
370
- console.log(err);
371
-
372
- _this.setState({
373
- fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
374
- error: err
375
- })
376
- });
377
- }
378
- }); // we should put it inside uploadSoundSupport.delete but we can leave it here for testing purposes
379
-
380
-
381
- _this.setState({
382
- fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
383
- loading: false,
384
- url: ''
385
- })
386
- });
286
+ while (1) switch (_context2.prev = _context2.next) {
287
+ case 0:
288
+ _this.props.uploadSoundSupport["delete"](_this.state.fileUpload.url, function (err) {
289
+ if (err) {
290
+ //eslint-disable-next-line
291
+ console.log(err);
292
+ _this.setState({
293
+ fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
294
+ error: err
295
+ })
296
+ });
297
+ }
298
+ });
387
299
 
388
- case 2:
389
- case "end":
390
- return _context2.stop();
391
- }
300
+ // we should put it inside uploadSoundSupport.delete but we can leave it here for testing purposes
301
+ _this.setState({
302
+ fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
303
+ loading: false,
304
+ url: ''
305
+ })
306
+ });
307
+ case 2:
308
+ case "end":
309
+ return _context2.stop();
392
310
  }
393
311
  }, _callee2);
394
312
  })));
395
313
  var _src = props.src,
396
- _starts = props.starts,
397
- _ends = props.ends,
398
- _height = props.height,
399
- _url = props.url,
400
- _urlToUse = props.urlToUse,
401
- _width = props.width;
314
+ _starts = props.starts,
315
+ _ends = props.ends,
316
+ _height = props.height,
317
+ _url = props.url,
318
+ _urlToUse = props.urlToUse,
319
+ _width = props.width;
402
320
  _this.state = {
403
321
  ends: _ends || 0,
404
322
  url: _url || '',
@@ -418,7 +336,6 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
418
336
  };
419
337
  return _this;
420
338
  }
421
-
422
339
  (0, _createClass2["default"])(MediaDialog, [{
423
340
  key: "componentDidMount",
424
341
  value: function componentDidMount() {
@@ -434,25 +351,24 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
434
351
  key: "render",
435
352
  value: function render() {
436
353
  var _this2 = this;
437
-
438
354
  var _this$props = this.props,
439
- classes = _this$props.classes,
440
- open = _this$props.open,
441
- disablePortal = _this$props.disablePortal,
442
- type = _this$props.type,
443
- edit = _this$props.edit,
444
- uploadSoundSupport = _this$props.uploadSoundSupport;
355
+ classes = _this$props.classes,
356
+ open = _this$props.open,
357
+ disablePortal = _this$props.disablePortal,
358
+ type = _this$props.type,
359
+ edit = _this$props.edit,
360
+ uploadSoundSupport = _this$props.uploadSoundSupport;
445
361
  var _this$state4 = this.state,
446
- ends = _this$state4.ends,
447
- height = _this$state4.height,
448
- invalid = _this$state4.invalid,
449
- starts = _this$state4.starts,
450
- width = _this$state4.width,
451
- url = _this$state4.url,
452
- formattedUrl = _this$state4.formattedUrl,
453
- updating = _this$state4.updating,
454
- tabValue = _this$state4.tabValue,
455
- fileUpload = _this$state4.fileUpload;
362
+ ends = _this$state4.ends,
363
+ height = _this$state4.height,
364
+ invalid = _this$state4.invalid,
365
+ starts = _this$state4.starts,
366
+ width = _this$state4.width,
367
+ url = _this$state4.url,
368
+ formattedUrl = _this$state4.formattedUrl,
369
+ updating = _this$state4.updating,
370
+ tabValue = _this$state4.tabValue,
371
+ fileUpload = _this$state4.fileUpload;
456
372
  var isYoutube = matchYoutubeUrl(url);
457
373
  var isInsertURL = tabValue === 0;
458
374
  var isUploadMedia = tabValue === 1;
@@ -585,7 +501,6 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
585
501
  }]);
586
502
  return MediaDialog;
587
503
  }(_react["default"].Component);
588
-
589
504
  exports.MediaDialog = MediaDialog;
590
505
  (0, _defineProperty2["default"])(MediaDialog, "propTypes", {
591
506
  classes: _propTypes["default"].object.isRequired,
@@ -606,8 +521,7 @@ exports.MediaDialog = MediaDialog;
606
521
  height: _propTypes["default"].number,
607
522
  width: _propTypes["default"].number
608
523
  });
609
-
610
- var styles = function styles() {
524
+ var styles = function styles(theme) {
611
525
  return {
612
526
  paper: {
613
527
  minWidth: '500px'
@@ -620,7 +534,7 @@ var styles = function styles() {
620
534
  flexDirection: 'space-between'
621
535
  },
622
536
  rowItem: {
623
- marginRight: '12px',
537
+ marginRight: theme.spacing.unit * 1.5,
624
538
  cursor: 'pointer'
625
539
  },
626
540
  active: {
@@ -628,19 +542,17 @@ var styles = function styles() {
628
542
  borderBottom: "2px solid ".concat(_renderUi.color.primary())
629
543
  },
630
544
  uploadInput: {
631
- marginTop: '12px'
545
+ marginTop: theme.spacing.unit * 1.5
632
546
  },
633
547
  error: {
634
- marginTop: '12px',
635
- color: 'red'
548
+ marginTop: theme.spacing.unit * 1.5,
549
+ color: theme.palette.error.main
636
550
  },
637
551
  deleteIcon: {
638
- marginLeft: '12px'
552
+ marginLeft: theme.spacing.unit * 1.5
639
553
  }
640
554
  };
641
555
  };
642
-
643
556
  var _default = (0, _styles.withStyles)(styles)(MediaDialog);
644
-
645
557
  exports["default"] = _default;
646
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIm1hdGNoWW91dHViZVVybCIsInVybCIsInAiLCJtYXRjaCIsIm1hdGNoVmltZW9VcmwiLCJ0ZXN0IiwibWF0Y2hTb3VuZENsb3VkVXJsIiwicmVnZXhwIiwibWFrZUFwaVJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZldGNoIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsImQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJodG1sIiwiaWZyYW1lIiwicXVlcnlTZWxlY3RvciIsInNyYyIsImVyciIsInR5cGVNYXAiLCJ2aWRlbyIsImF1ZGlvIiwiTWVkaWFEaWFsb2ciLCJwcm9wcyIsInN0YXRlIiwidXJsVG9Vc2UiLCJzdGFydHMiLCJlbmRzIiwiaXNZb3V0dWJlIiwiaXNWaW1lbyIsImZvcm1hdHRlZFVybCIsInBhcmFtcyIsInBhcmFtTmFtZSIsInBhcmFtU3RhcnQiLCJwdXNoIiwibGVuZ3RoIiwiam9pbiIsImNhbGxiYWNrIiwic2V0U3RhdGUiLCJ1cGRhdGluZyIsIm5ld1N0YXRlIiwiZm9ybWF0VXJsIiwiZSIsInRhcmdldCIsInZhbHVlIiwidHlwZSIsImhhbmRsZVN0YXRlQ2hhbmdlIiwiaW52YWxpZCIsInJlZ0V4cCIsImlkIiwicmVwbGFjZSIsInZhbCIsImhhbmRsZUNsb3NlIiwidGFiVmFsdWUiLCJmaWxlVXBsb2FkIiwiaXNJbnNlcnRVUkwiLCJoYW5kbGVSZW1vdmVGaWxlIiwiaGVpZ2h0Iiwid2lkdGgiLCJ0YWciLCJwcmV2ZW50RGVmYXVsdCIsImVycm9yIiwibG9hZGluZyIsImZpbGVDaG9zZW4iLCJmaWxlcyIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJkYXRhVVJMIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsInVwbG9hZFNvdW5kU3VwcG9ydCIsImFkZCIsImRvbmUiLCJjb25zb2xlIiwidXJsQ2hhbmdlIiwiY2xhc3NlcyIsIm9wZW4iLCJkaXNhYmxlUG9ydGFsIiwiZWRpdCIsImlzVXBsb2FkTWVkaWEiLCJzdWJtaXRJc0Rpc2FibGVkIiwidW5kZWZpbmVkIiwicGFwZXIiLCJoYW5kbGVEb25lIiwicm93IiwiZXZlbnQiLCJyb290IiwicHJvcGVydGllcyIsImNoYW5nZUhhbmRsZXIiLCJ1cGxvYWRJbnB1dCIsImRlbGV0ZUljb24iLCJpbnB1dCIsImhhbmRsZVVwbG9hZEZpbGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJib29sIiwiZnVuYyIsInNoYXBlIiwic3RyaW5nIiwibnVtYmVyIiwic3R5bGVzIiwibWluV2lkdGgiLCJwYWRkaW5nIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJyb3dJdGVtIiwibWFyZ2luUmlnaHQiLCJjdXJzb3IiLCJhY3RpdmUiLCJjb2xvciIsInByaW1hcnkiLCJib3JkZXJCb3R0b20iLCJtYXJnaW5Ub3AiLCJtYXJnaW5MZWZ0Iiwid2l0aFN0eWxlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL21lZGlhL21lZGlhLWRpYWxvZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQnV0dG9uJztcbmltcG9ydCBEaWFsb2cgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nJztcbmltcG9ydCBNdWlUYWJzIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1RhYnMnO1xuaW1wb3J0IE11aVRhYiBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UYWInO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ1RpdGxlJztcbmltcG9ydCBEaWFsb2dDb250ZW50IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0NvbnRlbnQnO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnRUZXh0IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0NvbnRlbnRUZXh0JztcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0FjdGlvbnMnO1xuaW1wb3J0IFRleHRGaWVsZCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UZXh0RmllbGQnO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVHlwb2dyYXBoeSc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9JY29uQnV0dG9uJztcbmltcG9ydCBBY3Rpb25EZWxldGUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0RlbGV0ZSc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6bWVkaWE6ZGlhbG9nJyk7XG5cbmNvbnN0IG1hdGNoWW91dHViZVVybCA9IHVybCA9PiB7XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcCA9IC9eKD86aHR0cHM/OlxcL1xcLyk/KD86bVxcLnx3d3dcXC4pPyg/OnlvdXR1XFwuYmVcXC98eW91dHViZVxcLmNvbVxcLyg/OmVtYmVkXFwvfHZcXC98d2F0Y2hcXD92PXx3YXRjaFxcPy4rJnY9KSkoKFxcd3wtKXsxMX0pKD86XFxTKyk/JC87XG4gIGlmICh1cmwubWF0Y2gocCkpIHtcbiAgICByZXR1cm4gdXJsLm1hdGNoKHApWzFdO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IG1hdGNoVmltZW9VcmwgPSB1cmwgPT5cbiAgdXJsICYmXG4gIC8oaHR0cHxodHRwcyk/OlxcL1xcLyh3d3dcXC4pPyhwbGF5ZXJcXC4pP3ZpbWVvLmNvbVxcLyg/OmNoYW5uZWxzXFwvKD86XFx3K1xcLyk/fGdyb3Vwc1xcLyhbXi9dKilcXC92aWRlb3NcXC98KSh2aWRlb1xcLyk/KFxcZCspKD86fFxcL1xcPykvLnRlc3QoXG4gICAgdXJsXG4gICk7XG5cbmNvbnN0IG1hdGNoU291bmRDbG91ZFVybCA9IHVybCA9PiB7XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcmVnZXhwID0gL15odHRwcz86XFwvXFwvKHNvdW5kY2xvdWRcXC5jb218c25kXFwuc2MpXFwvKC4qKSQvO1xuICByZXR1cm4gdXJsLm1hdGNoKHJlZ2V4cCkgJiYgdXJsLm1hdGNoKHJlZ2V4cClbMl07XG59O1xuXG5jb25zdCBtYWtlQXBpUmVxdWVzdCA9IHVybCA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0cnkge1xuICAgICAgZmV0Y2goYGh0dHBzOi8vc291bmRjbG91ZC5jb20vb2VtYmVkP2Zvcm1hdD1qc29uJnVybD0ke3VybH1gKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC50aGVuKGpzb24gPT4ge1xuICAgICAgICAgIGNvbnN0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgICAgIGQuaW5uZXJIVE1MID0ganNvbi5odG1sO1xuXG4gICAgICAgICAgY29uc3QgaWZyYW1lID0gZC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKTtcblxuICAgICAgICAgIHJlc29sdmUoaWZyYW1lLnNyYyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIHJlc29sdmUoJycpO1xuICAgICAgICAgIGxvZyhlcnIpO1xuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlc29sdmUoJycpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCB0eXBlTWFwID0ge1xuICB2aWRlbzogJ1ZpZGVvJyxcbiAgYXVkaW86ICdBdWRpbydcbn07XG5cbmV4cG9ydCBjbGFzcyBNZWRpYURpYWxvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIGVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRpc2FibGVQb3J0YWw6IFByb3BUeXBlcy5ib29sLFxuICAgIGhhbmRsZUNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB1cGxvYWRTb3VuZFN1cHBvcnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhZGQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgZGVsZXRlOiBQcm9wVHlwZXMuZnVuY1xuICAgIH0pLFxuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc3JjOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB1cmxUb1VzZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzdGFydHM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZW5kczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIGNvbnN0IHsgc3JjLCBzdGFydHMsIGVuZHMsIGhlaWdodCwgdXJsLCB1cmxUb1VzZSwgd2lkdGggfSA9IHByb3BzO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGVuZHM6IGVuZHMgfHwgMCxcbiAgICAgIHVybDogdXJsIHx8ICcnLFxuICAgICAgdXJsVG9Vc2U6IHVybFRvVXNlIHx8ICcnLFxuICAgICAgZm9ybWF0dGVkVXJsOiBzcmMgfHwgJycsXG4gICAgICBoZWlnaHQ6IGhlaWdodCB8fCAzMTUsXG4gICAgICBpbnZhbGlkOiBmYWxzZSxcbiAgICAgIHN0YXJ0czogc3RhcnRzIHx8IDAsXG4gICAgICB3aWR0aDogd2lkdGggfHwgNTYwLFxuICAgICAgdGFiVmFsdWU6IDAsXG4gICAgICB1cGRhdGluZzogZmFsc2UsXG4gICAgICBmaWxlVXBsb2FkOiB7XG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICB1cmw6ICcnLFxuICAgICAgICBlcnJvcjogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy51cmwpIHtcbiAgICAgIHRoaXMudXJsQ2hhbmdlKHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgdmFsdWU6IHRoaXMucHJvcHMudXJsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFVybCA9ICgpID0+IHtcbiAgICBjb25zdCB7IHVybCwgdXJsVG9Vc2UsIHN0YXJ0cywgZW5kcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBpc1lvdXR1YmUgPSBtYXRjaFlvdXR1YmVVcmwodXJsKTtcbiAgICBjb25zdCBpc1ZpbWVvID0gbWF0Y2hWaW1lb1VybCh1cmwpO1xuICAgIGxldCBmb3JtYXR0ZWRVcmwgPSB1cmxUb1VzZSB8fCAnJztcblxuICAgIGlmICgoaXNZb3V0dWJlIHx8IGlzVmltZW8pICYmIHVybFRvVXNlKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBbXTtcblxuICAgICAgbGV0IHBhcmFtTmFtZTtcbiAgICAgIGxldCBwYXJhbVN0YXJ0O1xuXG4gICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgY2FzZSBpc1ZpbWVvOlxuICAgICAgICAgIHBhcmFtTmFtZSA9ICd0JztcbiAgICAgICAgICBwYXJhbVN0YXJ0ID0gJyMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlzWW91dHViZTpcbiAgICAgICAgICBwYXJhbU5hbWUgPSAnc3RhcnQnO1xuICAgICAgICAgIHBhcmFtU3RhcnQgPSAnPyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcGFyYW1OYW1lID0gJ3N0YXJ0JztcbiAgICAgICAgICBwYXJhbVN0YXJ0ID0gJz8nO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnRzKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKGAke3BhcmFtTmFtZX09JHtzdGFydHN9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbmRzKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKGBlbmQ9JHtlbmRzfWApO1xuICAgICAgfVxuXG4gICAgICBmb3JtYXR0ZWRVcmwgPSBgJHt1cmxUb1VzZX0ke3BhcmFtcy5sZW5ndGggPyBwYXJhbVN0YXJ0IDogJyd9JHtwYXJhbXMuam9pbignJicpfWA7XG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHsgZm9ybWF0dGVkVXJsLCB1cGRhdGluZzogZmFsc2UgfSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgZm9ybWF0dGVkVXJsOiBudWxsLCB1cGRhdGluZzogdHJ1ZSB9LCBjYWxsYmFjayk7XG4gIH07XG5cbiAgaGFuZGxlU3RhdGVDaGFuZ2UgPSBuZXdTdGF0ZSA9PiB0aGlzLnNldFN0YXRlKG5ld1N0YXRlLCB0aGlzLmZvcm1hdFVybCk7XG5cbiAgdXJsQ2hhbmdlID0gZSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gZS50YXJnZXQgfHwge307XG4gICAgY29uc3QgeyB0eXBlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHR5cGUgJiYgdHlwZSA9PT0gJ2F1ZGlvJykge1xuICAgICAgaWYgKG1hdGNoU291bmRDbG91ZFVybCh2YWx1ZSkpIHtcbiAgICAgICAgbWFrZUFwaVJlcXVlc3QodmFsdWUpXG4gICAgICAgICAgLnRoZW4odXJsVG9Vc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSh7XG4gICAgICAgICAgICAgIHVybFRvVXNlLFxuICAgICAgICAgICAgICBpbnZhbGlkOiAhdXJsVG9Vc2UsXG4gICAgICAgICAgICAgIHVybDogdmFsdWUgfHwgJydcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGxvZyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSAmJiB0eXBlID09PSAndmlkZW8nKSB7XG4gICAgICBpZiAobWF0Y2hZb3V0dWJlVXJsKHZhbHVlKSkge1xuICAgICAgICBjb25zdCByZWdFeHAgPSAvXi4qKHlvdXR1XFwuYmVcXC98dlxcL3x1XFwvXFx3XFwvfGVtYmVkXFwvfHdhdGNoXFw/dj18JnY9KShbXiMmP10qKS4qLztcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdFeHApO1xuICAgICAgICBjb25zdCBpZCA9IG1hdGNoWzJdO1xuICAgICAgICBjb25zdCB1cmxUb1VzZSA9IGBodHRwczovL3lvdXR1YmUuY29tL2VtYmVkLyR7aWR9YDtcblxuICAgICAgICBsb2coJ2lzIHlvdXR1YmUnKTtcblxuICAgICAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKHtcbiAgICAgICAgICB1cmxUb1VzZSxcbiAgICAgICAgICB1cmw6IHZhbHVlIHx8ICcnLFxuICAgICAgICAgIGludmFsaWQ6IGZhbHNlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hdGNoVmltZW9VcmwodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdmFsdWUucmVwbGFjZSgvLip2aW1lby5jb21cXC8oLiopL2csICckMScpO1xuICAgICAgICBjb25zdCB1cmxUb1VzZSA9IGBodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJHtpZH1gO1xuXG4gICAgICAgIGxvZygnaXMgdmltZW8nKTtcblxuICAgICAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKHtcbiAgICAgICAgICB1cmxUb1VzZSxcbiAgICAgICAgICB1cmw6IHZhbHVlIHx8ICcnLFxuICAgICAgICAgIGVuZHM6IG51bGwsXG4gICAgICAgICAgaW52YWxpZDogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2Uoe1xuICAgICAgdXJsVG9Vc2U6ICcnLFxuICAgICAgdXJsOiAnJyxcbiAgICAgIGludmFsaWQ6IHRydWVcbiAgICB9KTtcbiAgfTtcblxuICBjaGFuZ2VIYW5kbGVyID0gdHlwZSA9PiBlID0+IHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2UoeyBbdHlwZV06IGUudGFyZ2V0LnZhbHVlIH0pO1xuXG4gIGhhbmRsZURvbmUgPSB2YWwgPT4ge1xuICAgIGNvbnN0IHsgaGFuZGxlQ2xvc2UgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyB0YWJWYWx1ZSwgZmlsZVVwbG9hZCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBpc0luc2VydFVSTCA9IHRhYlZhbHVlID09PSAwO1xuXG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIGlmIChmaWxlVXBsb2FkLnVybCkge1xuICAgICAgICB0aGlzLmhhbmRsZVJlbW92ZUZpbGUoKTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlQ2xvc2UodmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzSW5zZXJ0VVJMKSB7XG4gICAgICBjb25zdCB7IGVuZHMsIGhlaWdodCwgdXJsLCB1cmxUb1VzZSwgZm9ybWF0dGVkVXJsLCBzdGFydHMsIHdpZHRoIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICBoYW5kbGVDbG9zZSh2YWwsIHtcbiAgICAgICAgdGFnOiAnaWZyYW1lJyxcbiAgICAgICAgZW5kcyxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBzdGFydHMsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICB1cmwsXG4gICAgICAgIHVybFRvVXNlLFxuICAgICAgICBzcmM6IGZvcm1hdHRlZFVybFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZUNsb3NlKHZhbCwge1xuICAgICAgICB0YWc6ICdhdWRpbycsXG4gICAgICAgIHNyYzogZmlsZVVwbG9hZC51cmxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBoYW5kbGVVcGxvYWRGaWxlID0gYXN5bmMgZSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBmaWxlVXBsb2FkOiB7XG4gICAgICAgIC4uLnRoaXMuc3RhdGUuZmlsZVVwbG9hZCxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbGVDaG9zZW4gPSBlLnRhcmdldC5maWxlc1swXTtcblxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YVVSTCA9IHJlYWRlci5yZXN1bHQ7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmaWxlVXBsb2FkOiB7XG4gICAgICAgICAgLi4udGhpcy5zdGF0ZS5maWxlVXBsb2FkLFxuICAgICAgICAgIHVybDogZGF0YVVSTFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGVDaG9zZW4pO1xuXG4gICAgdGhpcy5wcm9wcy51cGxvYWRTb3VuZFN1cHBvcnQuYWRkKHtcbiAgICAgIGZpbGVDaG9zZW4sXG4gICAgICBkb25lOiAoZXJyLCBzcmMpID0+IHtcbiAgICAgICAgbG9nKCdkb25lOiBlcnI6JywgZXJyKTtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGZpbGVVcGxvYWQ6IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5maWxlVXBsb2FkLFxuICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgZXJyb3I6IGVyclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlLmZpbGVVcGxvYWQsXG4gICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICB1cmw6IHNyY1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgaGFuZGxlUmVtb3ZlRmlsZSA9IGFzeW5jICgpID0+IHtcbiAgICB0aGlzLnByb3BzLnVwbG9hZFNvdW5kU3VwcG9ydC5kZWxldGUodGhpcy5zdGF0ZS5maWxlVXBsb2FkLnVybCwgZXJyID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5maWxlVXBsb2FkLFxuICAgICAgICAgICAgZXJyb3I6IGVyclxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB3ZSBzaG91bGQgcHV0IGl0IGluc2lkZSB1cGxvYWRTb3VuZFN1cHBvcnQuZGVsZXRlIGJ1dCB3ZSBjYW4gbGVhdmUgaXQgaGVyZSBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZmlsZVVwbG9hZDoge1xuICAgICAgICAuLi50aGlzLnN0YXRlLmZpbGVVcGxvYWQsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICB1cmw6ICcnXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2xhc3Nlcywgb3BlbiwgZGlzYWJsZVBvcnRhbCwgdHlwZSwgZWRpdCwgdXBsb2FkU291bmRTdXBwb3J0IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHtcbiAgICAgIGVuZHMsXG4gICAgICBoZWlnaHQsXG4gICAgICBpbnZhbGlkLFxuICAgICAgc3RhcnRzLFxuICAgICAgd2lkdGgsXG4gICAgICB1cmwsXG4gICAgICBmb3JtYXR0ZWRVcmwsXG4gICAgICB1cGRhdGluZyxcbiAgICAgIHRhYlZhbHVlLFxuICAgICAgZmlsZVVwbG9hZFxuICAgIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGlzWW91dHViZSA9IG1hdGNoWW91dHViZVVybCh1cmwpO1xuICAgIGNvbnN0IGlzSW5zZXJ0VVJMID0gdGFiVmFsdWUgPT09IDA7XG4gICAgY29uc3QgaXNVcGxvYWRNZWRpYSA9IHRhYlZhbHVlID09PSAxO1xuICAgIGNvbnN0IHN1Ym1pdElzRGlzYWJsZWQgPSBpc0luc2VydFVSTFxuICAgICAgPyBpbnZhbGlkIHx8IHVybCA9PT0gbnVsbCB8fCB1cmwgPT09IHVuZGVmaW5lZFxuICAgICAgOiAhZmlsZVVwbG9hZC51cmw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERpYWxvZ1xuICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgcGFwZXI6IGNsYXNzZXMucGFwZXJcbiAgICAgICAgfX1cbiAgICAgICAgZGlzYWJsZVBvcnRhbD17ZGlzYWJsZVBvcnRhbH1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gdGhpcy5oYW5kbGVEb25lKGZhbHNlKX1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZm9ybS1kaWFsb2ctdGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJmb3JtLWRpYWxvZy10aXRsZVwiPkluc2VydCB7dHlwZU1hcFt0eXBlXX08L0RpYWxvZ1RpdGxlPlxuICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucm93fT5cbiAgICAgICAgICAgICAgPE11aVRhYnNcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3JDb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJWYWx1ZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2ZW50LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRhYlZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPE11aVRhYlxuICAgICAgICAgICAgICAgICAgbGFiZWw9e3R5cGUgPT09ICd2aWRlbycgPyAnSW5zZXJ0IFlvdVR1YmUgb3IgVmltZW8gVVJMJyA6ICdJbnNlcnQgU291bmRDbG91ZCBVUkwnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge3VwbG9hZFNvdW5kU3VwcG9ydD8uYWRkICYmIHVwbG9hZFNvdW5kU3VwcG9ydD8uZGVsZXRlICYmIHR5cGUgIT09ICd2aWRlbycgPyAoXG4gICAgICAgICAgICAgICAgICA8TXVpVGFiIGxhYmVsPVwiVXBsb2FkIGZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L011aVRhYnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtpc0luc2VydFVSTCAmJiAoXG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBlcnJvcj17aW52YWxpZH1cbiAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9e2ludmFsaWQgPyAnSW52YWxpZCBVUkwnIDogJyd9XG4gICAgICAgICAgICAgICAgICBtYXJnaW49XCJkZW5zZVwiXG4gICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJVUkxcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2BQYXN0ZSBVUkwgb2YgJHt0eXBlfS4uLmB9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy51cmxDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dXJsfVxuICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7dHlwZSA9PT0gJ3ZpZGVvJyAmJiAoXG4gICAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgcm9vdDogY2xhc3Nlcy5wcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEaWFsb2dDb250ZW50VGV4dD5WaWRlbyBQcm9wZXJ0aWVzPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbj1cImRlbnNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cIndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIldpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17d2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuY2hhbmdlSGFuZGxlcignd2lkdGgnKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbj1cImRlbnNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmNoYW5nZUhhbmRsZXIoJ2hlaWdodCcpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2Zvcm1hdHRlZFVybCAmJiAoXG4gICAgICAgICAgICAgICAgICA8aWZyYW1lXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgIHNyYz17Zm9ybWF0dGVkVXJsfVxuICAgICAgICAgICAgICAgICAgICBmcmFtZUJvcmRlcj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBhbGxvdz1cImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmVcIlxuICAgICAgICAgICAgICAgICAgICBhbGxvd0Z1bGxTY3JlZW5cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7dHlwZSA9PT0gJ3ZpZGVvJyAmJiAoZm9ybWF0dGVkVXJsIHx8IHVwZGF0aW5nKSAmJiAhaW52YWxpZCAmJiAoXG4gICAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxEaWFsb2dDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdDogY2xhc3Nlcy5wcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luPVwiZGVuc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdGFydHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJTdGFydHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlN0YXJ0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c3RhcnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuY2hhbmdlSGFuZGxlcignc3RhcnRzJyl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNZb3V0dWJlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbj1cImRlbnNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJFbmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW5kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlbmRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2VIYW5kbGVyKCdlbmRzJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2lzVXBsb2FkTWVkaWEgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy51cGxvYWRJbnB1dH0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIHtmaWxlVXBsb2FkLnVybCA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb3d9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF1ZGlvIGNvbnRyb2xzPVwiY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSB0eXBlPVwiYXVkaW8vbXAzXCIgc3JjPXtmaWxlVXBsb2FkLnVybH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXVkaW8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmRlbGV0ZUljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlUmVtb3ZlRmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFjdGlvbkRlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIHtmaWxlVXBsb2FkLmxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwic3ViaGVhZGluZ1wiPkxvYWRpbmcuLi48L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSA6ICFmaWxlVXBsb2FkLmxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImF1ZGlvLypcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5pbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVVcGxvYWRGaWxlfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgeyEhZmlsZVVwbG9hZC5lcnJvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IGNsYXNzTmFtZT17Y2xhc3Nlcy5lcnJvcn0gdmFyaWFudD1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7ZmlsZVVwbG9hZC5lcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVEb25lKGZhbHNlKX0gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGRpc2FibGVkPXtzdWJtaXRJc0Rpc2FibGVkfSBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZURvbmUodHJ1ZSl9IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAge2VkaXQgPyAnVXBkYXRlJyA6ICdJbnNlcnQnfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICA8L0RpYWxvZz5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9ICgpID0+ICh7XG4gIHBhcGVyOiB7XG4gICAgbWluV2lkdGg6ICc1MDBweCdcbiAgfSxcbiAgcHJvcGVydGllczoge1xuICAgIHBhZGRpbmc6IDBcbiAgfSxcbiAgcm93OiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdzcGFjZS1iZXR3ZWVuJ1xuICB9LFxuICByb3dJdGVtOiB7XG4gICAgbWFyZ2luUmlnaHQ6ICcxMnB4JyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJ1xuICB9LFxuICBhY3RpdmU6IHtcbiAgICBjb2xvcjogY29sb3IucHJpbWFyeSgpLFxuICAgIGJvcmRlckJvdHRvbTogYDJweCBzb2xpZCAke2NvbG9yLnByaW1hcnkoKX1gXG4gIH0sXG4gIHVwbG9hZElucHV0OiB7XG4gICAgbWFyZ2luVG9wOiAnMTJweCdcbiAgfSxcbiAgZXJyb3I6IHtcbiAgICBtYXJnaW5Ub3A6ICcxMnB4JyxcbiAgICBjb2xvcjogJ3JlZCdcbiAgfSxcbiAgZGVsZXRlSWNvbjoge1xuICAgIG1hcmdpbkxlZnQ6ICcxMnB4J1xuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKE1lZGlhRGlhbG9nKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsSUFBQUMsaUJBQUEsRUFBTSw2Q0FBTixDQUFaOztBQUVBLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQUMsR0FBRyxFQUFJO0VBQzdCLElBQUksQ0FBQ0EsR0FBTCxFQUFVO0lBQ1IsT0FBTyxLQUFQO0VBQ0Q7O0VBRUQsSUFBTUMsQ0FBQyxHQUFHLDBIQUFWOztFQUNBLElBQUlELEdBQUcsQ0FBQ0UsS0FBSixDQUFVRCxDQUFWLENBQUosRUFBa0I7SUFDaEIsT0FBT0QsR0FBRyxDQUFDRSxLQUFKLENBQVVELENBQVYsRUFBYSxDQUFiLENBQVA7RUFDRDs7RUFDRCxPQUFPLEtBQVA7QUFDRCxDQVZEOztBQVlBLElBQU1FLGFBQWEsR0FBRyxTQUFo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
558
+ //# sourceMappingURL=media-dialog.js.map