sweetalert2 11.4.21 → 11.4.24

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/README.md CHANGED
@@ -19,17 +19,32 @@ Sponsors
19
19
 
20
20
  For all questions related to sponsorship please contact me via email limon.monte@protonmail.com
21
21
 
22
- [<img src="https://sweetalert2.github.io/images/plus.png" width="80">](SPONSORS.md#sponsors) | [<img src="https://sweetalert2.github.io/images/sponsors/istartips.png" width="80">](https://www.istartips.com/) | [<img src="https://sweetalert2.github.io/images/sponsors/evguru.png" width="80">](https://www.evguru.com.my/) | [<img src="https://sweetalert2.github.io/images/sponsors/bestforandroid.png" width="80">](https://bestforandroid.com/) | [<img src="https://avatars2.githubusercontent.com/u/28631236?s=80&v=4" width="80">](https://flowcrypt.com/?utm_source=sweetalert2&utm_medium=logo)
23
- -|-|-|-|-
24
- [Become a sponsor](SPONSORS.md#sponsors) | [iStarTips](https://www.istartips.com/) | [EvGuru EV Chargers](https://www.evguru.com.my/) | [Best For Android](https://bestforandroid.com/) | [FlowCrypt](https://flowcrypt.com/?utm_source=sweetalert2&utm_medium=logo)
25
-
26
- [<img src="https://sweetalert2.github.io/images/sponsors/mybitcoinslots.png" width="80">](https://www.mybitcoinslots.com/?utm_source=sweetalert2&utm_medium=logo) | [<img src="https://sweetalert2.github.io/images/sponsors/vegega.jpeg" width="80">](https://www.vegega.com/) | [<img src="https://sweetalert2.github.io/images/sponsors/phatoil.png" width="80">](https://phatoil.com/) | [<img src="https://sweetalert2.github.io/images/sponsors/celltrackingapps.png" width="80">](https://celltrackingapps.com/)
27
- -|-|-|-
28
- [My Bitcoin slots](https://www.mybitcoinslots.com/?utm_source=sweetalert2&utm_medium=logo) | [Metal Raised Garden Bed](https://www.vegega.com/) | [Pure Essential Oil](https://phatoil.com/) | [Phone Tracking Apps](https://celltrackingapps.com)
29
-
30
- [<img src="https://sweetalert2.github.io/images/sponsors/torc-stark.png" width="80">](https://torcstark.com/) | [<img src="https://sweetalert2.github.io/images/sponsors/coderubik.png" width="80">](https://coderubik.com/?utm_source=sweetalert2&utm_medium=logo) | [<img src="https://sweetalert2.github.io/images/sponsors/halvinlaina.png" width="80">](https://halvinlaina.fi/) | [<img src="https://avatars0.githubusercontent.com/u/3986989?s=80&v=4" width="80">](https://github.com/tiagostutz)
31
- -|-|-|-
32
- [TorcStark](https://torcstark.com/) | [Code Rubik](https://coderubik.com/?utm_source=sweetalert2&utm_medium=logo) | [Halvin Laina](https://halvinlaina.fi/) | [Tiago de Oliveira Stutz](https://github.com/tiagostutz)
22
+ <table>
23
+ <tr>
24
+ <td align="center"><a href="SPONSORS.md#sponsors"><img src="https://sweetalert2.github.io/images/plus.png" width="80"><br>Become a sponsor</a></td>
25
+ <td align="center"><a href="https://iganony.com/"><img src="https://sweetalert2.github.io/images/sponsors/iganony.png" width="80"><br>Instagram Viewer & Downloader</a>
26
+ <td align="center"><a href="https://www.realspyapps.com/"><img src="https://sweetalert2.github.io/images/sponsors/realspyapps.jpeg" width="80"><br>Real Spy Apps</a>
27
+ <td align="center"><a href="https://www.istartips.com/"><img src="https://sweetalert2.github.io/images/sponsors/istartips.png" width="80"><br>iStarTips</a><td align="center"><a href="https://www.evguru.com.my/"><img src="https://sweetalert2.github.io/images/sponsors/evguru.png" width="80"><br>EvGuru EV Chargers</a></td>
28
+ <td align="center"><a href="https://bestforandroid.com/"><img src="https://sweetalert2.github.io/images/sponsors/bestforandroid.png" width="80"><br>Best For Android</a></td>
29
+ </tr>
30
+ </table>
31
+ <table>
32
+ <tr>
33
+ <td align="center"><a href="https://celltrackingapps.com/"><img src="https://sweetalert2.github.io/images/sponsors/celltrackingapps.png" width="80"><br>Phone Tracking Apps</a></td>
34
+ <td align="center"><a href="https://flowcrypt.com/"><img src="https://avatars2.githubusercontent.com/u/28631236?s=80&v=4" width="80"><br>FlowCrypt</a></td>
35
+ <td align="center"><a href="https://www.mybitcoinslots.com/"><img src="https://sweetalert2.github.io/images/sponsors/mybitcoinslots.png" width="80"><br>My Bitcoin slots</a></td>
36
+ <td align="center"><a href="https://www.vegega.com/"><img src="https://sweetalert2.github.io/images/sponsors/vegega.jpeg" width="80"><br>Metal Raised Garden Bed</a></td>
37
+ </tr>
38
+ </table>
39
+ <table>
40
+ <tr>
41
+ <td align="center"><a href="https://phatoil.com/"><img src="https://sweetalert2.github.io/images/sponsors/phatoil.png" width="80"><br>Pure Essential Oil</a></td>
42
+ <td align="center"><a href="https://torcstark.com/"><img src="https://sweetalert2.github.io/images/sponsors/torc-stark.png" width="80"><br>TorcStark</a></td>
43
+ <td align="center"><a href="https://coderubik.com/"><img src="https://sweetalert2.github.io/images/sponsors/coderubik.png" width="80"><br>Code Rubik</a></td>
44
+ <td align="center"><a href="https://halvinlaina.fi/"><img src="https://sweetalert2.github.io/images/sponsors/halvinlaina.png" width="80"><br>Halvin Laina</a></td>
45
+ <td align="center"><a href="https://github.com/tiagostutz"><img src="https://avatars0.githubusercontent.com/u/3986989?s=80&v=4" width="80"><br>Tiago de Oliveira Stutz</a></td>
46
+ </tr>
47
+ </table>
33
48
 
34
49
  NSFW Sponsors
35
50
  -------------
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sweetalert2 v11.4.21
2
+ * sweetalert2 v11.4.24
3
3
  * Released under the MIT License.
4
4
  */
5
5
  (function (global, factory) {
@@ -32,12 +32,6 @@
32
32
  */
33
33
 
34
34
  const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);
35
- /**
36
- * @param {NodeList | HTMLCollection | NamedNodeMap | DOMTokenList} nodeList
37
- * @returns {array}
38
- */
39
-
40
- const toArray = nodeList => Array.prototype.slice.call(nodeList);
41
35
  /**
42
36
  * Standardize console warnings
43
37
  * @param {string | array} message
@@ -378,7 +372,7 @@
378
372
  */
379
373
 
380
374
  const getFocusableElements = () => {
381
- const focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
375
+ const focusableElementsWithTabindex = Array.from(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex
382
376
  .sort((a, b) => {
383
377
  const tabindexA = parseInt(a.getAttribute('tabindex'));
384
378
  const tabindexB = parseInt(b.getAttribute('tabindex'));
@@ -391,7 +385,7 @@
391
385
 
392
386
  return 0;
393
387
  });
394
- const otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
388
+ const otherFocusableElements = Array.from(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');
395
389
  return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));
396
390
  };
397
391
  /**
@@ -433,10 +427,10 @@
433
427
  if (html) {
434
428
  const parser = new DOMParser();
435
429
  const parsed = parser.parseFromString(html, "text/html");
436
- toArray(parsed.querySelector('head').childNodes).forEach(child => {
430
+ Array.from(parsed.querySelector('head').childNodes).forEach(child => {
437
431
  elem.appendChild(child);
438
432
  });
439
- toArray(parsed.querySelector('body').childNodes).forEach(child => {
433
+ Array.from(parsed.querySelector('body').childNodes).forEach(child => {
440
434
  elem.appendChild(child);
441
435
  });
442
436
  }
@@ -468,7 +462,7 @@
468
462
  */
469
463
 
470
464
  const removeCustomClasses = (elem, params) => {
471
- toArray(elem.classList).forEach(className => {
465
+ Array.from(elem.classList).forEach(className => {
472
466
  if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {
473
467
  elem.classList.remove(className);
474
468
  }
@@ -586,11 +580,13 @@
586
580
  */
587
581
 
588
582
  const getDirectChildByClass = (elem, className) => {
589
- const childNodes = toArray(elem.childNodes);
583
+ const children = Array.from(elem.children);
590
584
 
591
- for (let i = 0; i < childNodes.length; i++) {
592
- if (hasClass(childNodes[i], className)) {
593
- return childNodes[i];
585
+ for (let i = 0; i < children.length; i++) {
586
+ const child = children[i];
587
+
588
+ if (child instanceof HTMLElement && hasClass(child, className)) {
589
+ return child;
594
590
  }
595
591
  }
596
592
  };
@@ -1819,7 +1815,7 @@
1819
1815
  // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.
1820
1816
 
1821
1817
  const setAriaHidden = () => {
1822
- const bodyChildren = toArray(document.body.children);
1818
+ const bodyChildren = Array.from(document.body.children);
1823
1819
  bodyChildren.forEach(el => {
1824
1820
  if (el === getContainer() || el.contains(getContainer())) {
1825
1821
  return;
@@ -1833,7 +1829,7 @@
1833
1829
  });
1834
1830
  };
1835
1831
  const unsetAriaHidden = () => {
1836
- const bodyChildren = toArray(document.body.children);
1832
+ const bodyChildren = Array.from(document.body.children);
1837
1833
  bodyChildren.forEach(el => {
1838
1834
  if (el.hasAttribute('data-previous-aria-hidden')) {
1839
1835
  el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));
@@ -1865,7 +1861,10 @@
1865
1861
 
1866
1862
  const getSwalParams = templateContent => {
1867
1863
  const result = {};
1868
- toArray(templateContent.querySelectorAll('swal-param')).forEach(param => {
1864
+ /** @type {HTMLElement[]} */
1865
+
1866
+ const swalParams = Array.from(templateContent.querySelectorAll('swal-param'));
1867
+ swalParams.forEach(param => {
1869
1868
  showWarningsForAttributes(param, ['name', 'value']);
1870
1869
  const paramName = param.getAttribute('name');
1871
1870
  const value = param.getAttribute('value');
@@ -1887,7 +1886,10 @@
1887
1886
 
1888
1887
  const getSwalButtons = templateContent => {
1889
1888
  const result = {};
1890
- toArray(templateContent.querySelectorAll('swal-button')).forEach(button => {
1889
+ /** @type {HTMLElement[]} */
1890
+
1891
+ const swalButtons = Array.from(templateContent.querySelectorAll('swal-button'));
1892
+ swalButtons.forEach(button => {
1891
1893
  showWarningsForAttributes(button, ['type', 'color', 'aria-label']);
1892
1894
  const type = button.getAttribute('type');
1893
1895
  result["".concat(type, "ButtonText")] = button.innerHTML;
@@ -1990,12 +1992,14 @@
1990
1992
  result.inputValue = input.getAttribute('value');
1991
1993
  }
1992
1994
  }
1995
+ /** @type {HTMLElement[]} */
1993
1996
 
1994
- const inputOptions = templateContent.querySelectorAll('swal-input-option');
1997
+
1998
+ const inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option'));
1995
1999
 
1996
2000
  if (inputOptions.length) {
1997
2001
  result.inputOptions = {};
1998
- toArray(inputOptions).forEach(option => {
2002
+ inputOptions.forEach(option => {
1999
2003
  showWarningsForAttributes(option, ['value']);
2000
2004
  const optionValue = option.getAttribute('value');
2001
2005
  const optionName = option.innerHTML;
@@ -2035,7 +2039,7 @@
2035
2039
 
2036
2040
  const showWarningsForElements = templateContent => {
2037
2041
  const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);
2038
- toArray(templateContent.children).forEach(el => {
2042
+ Array.from(templateContent.children).forEach(el => {
2039
2043
  const tagName = el.tagName.toLowerCase();
2040
2044
 
2041
2045
  if (allowedElements.indexOf(tagName) === -1) {
@@ -2050,7 +2054,7 @@
2050
2054
 
2051
2055
 
2052
2056
  const showWarningsForAttributes = (el, allowedAttributes) => {
2053
- toArray(el.attributes).forEach(attribute => {
2057
+ Array.from(el.attributes).forEach(attribute => {
2054
2058
  if (allowedAttributes.indexOf(attribute.name) === -1) {
2055
2059
  warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);
2056
2060
  }
@@ -3269,6 +3273,10 @@
3269
3273
  _destroy: _destroy
3270
3274
  });
3271
3275
 
3276
+ /**
3277
+ * @param {SweetAlert2} instance
3278
+ */
3279
+
3272
3280
  const handleConfirmButtonClick = instance => {
3273
3281
  const innerParams = privateProps.innerParams.get(instance);
3274
3282
  instance.disableButtons();
@@ -3279,6 +3287,10 @@
3279
3287
  confirm(instance, true);
3280
3288
  }
3281
3289
  };
3290
+ /**
3291
+ * @param {SweetAlert2} instance
3292
+ */
3293
+
3282
3294
  const handleDenyButtonClick = instance => {
3283
3295
  const innerParams = privateProps.innerParams.get(instance);
3284
3296
  instance.disableButtons();
@@ -3289,18 +3301,26 @@
3289
3301
  deny(instance, false);
3290
3302
  }
3291
3303
  };
3304
+ /**
3305
+ * @param {SweetAlert2} instance
3306
+ * @param {Function} dismissWith
3307
+ */
3308
+
3292
3309
  const handleCancelButtonClick = (instance, dismissWith) => {
3293
3310
  instance.disableButtons();
3294
3311
  dismissWith(DismissReason.cancel);
3295
3312
  };
3313
+ /**
3314
+ * @param {SweetAlert2} instance
3315
+ * @param {'confirm' | 'deny'} type
3316
+ */
3296
3317
 
3297
- const handleConfirmOrDenyWithInput = (instance, type
3298
- /* 'confirm' | 'deny' */
3299
- ) => {
3318
+ const handleConfirmOrDenyWithInput = (instance, type) => {
3300
3319
  const innerParams = privateProps.innerParams.get(instance);
3301
3320
 
3302
3321
  if (!innerParams.input) {
3303
- return error("The \"input\" parameter is needed to be set when using returnInputValueOn".concat(capitalizeFirstLetter(type)));
3322
+ error("The \"input\" parameter is needed to be set when using returnInputValueOn".concat(capitalizeFirstLetter(type)));
3323
+ return;
3304
3324
  }
3305
3325
 
3306
3326
  const inputValue = getInputValue(instance, innerParams);
@@ -3316,10 +3336,14 @@
3316
3336
  confirm(instance, inputValue);
3317
3337
  }
3318
3338
  };
3339
+ /**
3340
+ * @param {SweetAlert2} instance
3341
+ * @param {string} inputValue
3342
+ * @param {'confirm' | 'deny'} type
3343
+ */
3319
3344
 
3320
- const handleInputValidator = (instance, inputValue, type
3321
- /* 'confirm' | 'deny' */
3322
- ) => {
3345
+
3346
+ const handleInputValidator = (instance, inputValue, type) => {
3323
3347
  const innerParams = privateProps.innerParams.get(instance);
3324
3348
  instance.disableInput();
3325
3349
  const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
@@ -3336,6 +3360,11 @@
3336
3360
  }
3337
3361
  });
3338
3362
  };
3363
+ /**
3364
+ * @param {SweetAlert2} instance
3365
+ * @param {any} value
3366
+ */
3367
+
3339
3368
 
3340
3369
  const deny = (instance, value) => {
3341
3370
  const innerParams = privateProps.innerParams.get(instance || undefined);
@@ -3353,30 +3382,48 @@
3353
3382
  instance.hideLoading();
3354
3383
  handleAwaitingPromise(instance);
3355
3384
  } else {
3356
- instance.closePopup({
3385
+ instance.close({
3357
3386
  isDenied: true,
3358
3387
  value: typeof preDenyValue === 'undefined' ? value : preDenyValue
3359
3388
  });
3360
3389
  }
3361
3390
  }).catch(error$$1 => rejectWith(instance || undefined, error$$1));
3362
3391
  } else {
3363
- instance.closePopup({
3392
+ instance.close({
3364
3393
  isDenied: true,
3365
3394
  value
3366
3395
  });
3367
3396
  }
3368
3397
  };
3398
+ /**
3399
+ * @param {SweetAlert2} instance
3400
+ * @param {any} value
3401
+ */
3402
+
3369
3403
 
3370
3404
  const succeedWith = (instance, value) => {
3371
- instance.closePopup({
3405
+ instance.close({
3372
3406
  isConfirmed: true,
3373
3407
  value
3374
3408
  });
3375
3409
  };
3410
+ /**
3411
+ *
3412
+ * @param {SweetAlert2} instance
3413
+ * @param {string} error
3414
+ */
3415
+
3376
3416
 
3377
3417
  const rejectWith = (instance, error$$1) => {
3418
+ // @ts-ignore
3378
3419
  instance.rejectPromise(error$$1);
3379
3420
  };
3421
+ /**
3422
+ *
3423
+ * @param {SweetAlert2} instance
3424
+ * @param {any} value
3425
+ */
3426
+
3380
3427
 
3381
3428
  const confirm = (instance, value) => {
3382
3429
  const innerParams = privateProps.innerParams.get(instance || undefined);
@@ -3899,8 +3946,14 @@
3899
3946
  if (Math.random() < 0.1) {
3900
3947
  const noWar = document.createElement('div');
3901
3948
  noWar.className = 'leave-russia-now-and-apply-your-skills-to-the-world';
3902
- const videoId = getRandomElement(['4CfDhaRkw7I', 's-GLAIY4DXA']);
3903
- setInnerHtml(noWar, "\n <div>\n \u0415\u0441\u043B\u0438 \u043C\u044B \u043D\u0435 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u043E\u0439\u043D\u0443, \u043E\u043D\u0430 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432 \u0434\u043E\u043C <strong>\u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0438\u0437 \u043D\u0430\u0441</strong> \u0438 \u0435\u0451 \u043F\u043E\u0441\u043B\u0435\u0434\u0441\u0442\u0432\u0438\u044F \u0431\u0443\u0434\u0443\u0442 <strong>\u0443\u0436\u0430\u0441\u0430\u044E\u0449\u0438\u043C\u0438</strong>.\n </div>\n <div>\n \u041F\u0443\u0442\u0438\u043D\u0441\u043A\u0438\u0439 \u0440\u0435\u0436\u0438\u043C \u0437\u0430 20 \u0441 \u043B\u0438\u0448\u043D\u0438\u043C \u043B\u0435\u0442 \u0441\u0432\u043E\u0435\u0433\u043E \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043E\u0432\u0430\u043D\u0438\u044F \u0432\u0434\u043E\u043B\u0431\u0438\u043B \u043D\u0430\u043C, \u0447\u0442\u043E \u043C\u044B \u0431\u0435\u0441\u0441\u0438\u043B\u044C\u043D\u044B \u0438 \u043E\u0434\u0438\u043D \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043D\u0438\u0447\u0435\u0433\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C. <strong>\u042D\u0442\u043E \u043D\u0435 \u0442\u0430\u043A!</strong>\n </div>\n <div>\n \u0412 \u043D\u0438\u0436\u0435\u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u043E\u043C \u0432\u0438\u0434\u0435\u043E \u043E\u0431\u044A\u044F\u0441\u043D\u044F\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u043A\u0430\u0436\u0434\u044B\u0439 \u0438\u0437 \u043D\u0430\u0441 \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u043C\u043E\u0447\u044C \u0432 \u0442\u043E\u043C, <strong>\u0447\u0442\u043E\u0431\u044B \u044D\u0442\u0430 \u0431\u0435\u0441\u0441\u043C\u044B\u0441\u043B\u0435\u043D\u043D\u0430\u044F \u0438 \u0431\u0435\u0441\u0447\u0435\u043B\u043E\u0432\u0435\u0447\u043D\u0430\u044F \u0432\u043E\u0439\u043D\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043B\u0430\u0441\u044C</strong>:\n </div>\n <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/".concat(videoId, "\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n <div>\n \u041D\u0435\u0442 \u0432\u043E\u0439\u043D\u0435!\n </div>\n "));
3949
+ const video = getRandomElement([{
3950
+ text: "\u0412 \u043D\u0438\u0436\u0435\u043F\u0440\u0438\u0432\u0435\u0434\u0451\u043D\u043D\u043E\u043C \u0432\u0438\u0434\u0435\u043E \u043E\u0431\u044A\u044F\u0441\u043D\u044F\u0435\u0442\u0441\u044F \u043A\u0430\u043A \u043A\u0430\u0436\u0434\u044B\u0439 \u0438\u0437 \u043D\u0430\u0441 \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u043C\u043E\u0447\u044C \u0432 \u0442\u043E\u043C,\n <strong>\u0447\u0442\u043E\u0431\u044B \u044D\u0442\u0430 \u0431\u0435\u0441\u0441\u043C\u044B\u0441\u043B\u0435\u043D\u043D\u0430\u044F \u0438 \u0431\u0435\u0441\u0447\u0435\u043B\u043E\u0432\u0435\u0447\u043D\u0430\u044F \u0432\u043E\u0439\u043D\u0430 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043B\u0430\u0441\u044C</strong>:",
3951
+ id: '4CfDhaRkw7I'
3952
+ }, {
3953
+ text: 'Эмпатия - главное <strong>человеческое</strong> чувство. Способность сопереживать. <strong>Способность поставить себя на место другого.</strong>',
3954
+ id: 's-GLAIY4DXA'
3955
+ }]);
3956
+ setInnerHtml(noWar, "\n <div>\n \u0415\u0441\u043B\u0438 \u043C\u044B \u043D\u0435 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u043E\u0439\u043D\u0443, \u043E\u043D\u0430 \u043F\u0440\u0438\u0434\u0435\u0442 \u0432 \u0434\u043E\u043C <strong>\u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0438\u0437 \u043D\u0430\u0441</strong> \u0438 \u0435\u0451 \u043F\u043E\u0441\u043B\u0435\u0434\u0441\u0442\u0432\u0438\u044F \u0431\u0443\u0434\u0443\u0442 <strong>\u0443\u0436\u0430\u0441\u0430\u044E\u0449\u0438\u043C\u0438</strong>.\n </div>\n <div>\n \u041F\u0443\u0442\u0438\u043D\u0441\u043A\u0438\u0439 \u0440\u0435\u0436\u0438\u043C \u0437\u0430 20 \u0441 \u043B\u0438\u0448\u043D\u0438\u043C \u043B\u0435\u0442 \u0441\u0432\u043E\u0435\u0433\u043E \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043E\u0432\u0430\u043D\u0438\u044F \u0432\u0434\u043E\u043B\u0431\u0438\u043B \u043D\u0430\u043C, \u0447\u0442\u043E \u043C\u044B \u0431\u0435\u0441\u0441\u0438\u043B\u044C\u043D\u044B \u0438 \u043E\u0434\u0438\u043D \u0447\u0435\u043B\u043E\u0432\u0435\u043A \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043D\u0438\u0447\u0435\u0433\u043E \u0441\u0434\u0435\u043B\u0430\u0442\u044C. <strong>\u042D\u0442\u043E \u043D\u0435 \u0442\u0430\u043A!</strong>\n </div>\n <div>\n ".concat(video.text, "\n </div>\n <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/").concat(video.id, "\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n <div>\n \u041D\u0435\u0442 \u0432\u043E\u0439\u043D\u0435!\n </div>\n "));
3904
3957
  const closeButton = document.createElement('button');
3905
3958
  closeButton.innerHTML = '&times;';
3906
3959
 
@@ -3928,7 +3981,7 @@
3928
3981
  };
3929
3982
  });
3930
3983
  SweetAlert.DismissReason = DismissReason;
3931
- SweetAlert.version = '11.4.21';
3984
+ SweetAlert.version = '11.4.24';
3932
3985
 
3933
3986
  const Swal = SweetAlert; // @ts-ignore
3934
3987