PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9.1
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9.1
4.4.9.1 4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 All 141 releases
← All changes | assets/dist/js/admin/admin-courses.js +369 -255 4.3.9 → 4.4.9.1 View file →
@@ -1,4 +1,4 @@
1 1 /******/ (() => { // webpackBootstrap
2 2 /******/ var __webpack_modules__ = ({
3 3
4 4 /***/ "./assets/src/js/admin/courses/generate-with-ai.js"
@@ -15,10 +15,10 @@
15 15 /* harmony import */ var lpAssetsJsPath_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lpAssetsJsPath/utils.js */ "./assets/src/js/utils.js");
16 16 /* harmony import */ var sweetalert2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! sweetalert2 */ "./node_modules/sweetalert2/dist/sweetalert2.all.js");
17 17 /* harmony import */ var sweetalert2__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(sweetalert2__WEBPACK_IMPORTED_MODULE_1__);
18 18 /* harmony import */ var lpAssetsJsPath_lpToastify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lpAssetsJsPath/lpToastify.js */ "./assets/src/js/lpToastify.js");
19 -/**
20 - * Create course with AI
19 +/**
20 + * Create course with AI
21 21 */
22 22
23 23
24 24
@@ -103,10 +103,10 @@
103 103 sweetalert2__WEBPACK_IMPORTED_MODULE_1___default().close();
104 104 }
105 105
106 106 // Testing custom confirm box
107 - /*if ( confirm( message ) ) {
108 - SweetAlert.close();
107 + /*if ( confirm( message ) ) {
108 + SweetAlert.close();
109 109 }*/
110 110 }
111 111 }]);
112 112 }
@@ -211,11 +211,11 @@
211 211 }
212 212 });
213 213 }
214 214
215 - /**
216 - * Create prompt from data config
217 - * @param args
215 + /**
216 + * Create prompt from data config
217 + * @param args
218 218 */
219 219 generatePrompt(args) {
220 220 const {
221 221 e,
@@ -254,11 +254,11 @@
254 254 };
255 255 window.lpAJAXG.fetchAJAX(dataSend, callBack);
256 256 }
257 257
258 - /**
259 - * Submit prompt to OpenAI to generate course data
260 - * @param args
258 + /**
259 + * Submit prompt to OpenAI to generate course data
260 + * @param args
261 261 */
262 262 generateDataCourse(args) {
263 263 const {
264 264 e,
@@ -308,11 +308,11 @@
308 308 lp_is_generating_course_data = true;
309 309 window.lpAJAXG.fetchAJAX(dataSend, callBack);
310 310 }
311 311
312 - /**
313 - * Create course with data of OpenAI
314 - * @param args
312 + /**
313 + * Create course with data of OpenAI
314 + * @param args
315 315 */
316 316 createCourse(args) {
317 317 const {
318 318 e,
@@ -418,9 +418,8 @@
418 418 if (!btn) {
419 419 return;
420 420 }
421 421 lpAssetsJsPath_utils_js__WEBPACK_IMPORTED_MODULE_1__.lpSetLoadingEl(btn, isLoading ? 1 : 0);
422 - btn.disabled = !!isLoading;
423 422 }
424 423 init() {
425 424 if (ViewStudentsModal._loadedEvents) {
426 425 return;
@@ -456,9 +455,9 @@
456 455 }]);
457 456 }
458 457 handleOpenModal(args) {
459 458 const btn = args?.target?.closest(ViewStudentsModal.selectors.courseTrigger);
460 - if (!btn || this.isRequesting || btn.classList.contains('loading') || btn.disabled) {
459 + if (!btn || this.isRequesting || btn.classList.contains('loading')) {
461 460 return;
462 461 }
463 462 const courseId = parseInt(btn.dataset.courseId, 10) || 0;
464 463 if (!courseId) {
@@ -508,9 +507,9 @@
508 507 }
509 508 if (args?.e) {
510 509 args.e.preventDefault();
511 510 }
512 - if (this.isRequesting || btn.classList.contains('loading') || btn.disabled) {
511 + if (this.isRequesting || btn.classList.contains('loading')) {
513 512 return;
514 513 }
515 514 form.reset();
516 515 this.setButtonLoadingState(btn, true);
@@ -662,16 +661,16 @@
662 661 /* harmony export */ });
663 662 /* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! toastify-js */ "./node_modules/toastify-js/src/toastify.js");
664 663 /* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(toastify_js__WEBPACK_IMPORTED_MODULE_0__);
665 664 /* harmony import */ var toastify_js_src_toastify_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! toastify-js/src/toastify.css */ "./node_modules/toastify-js/src/toastify.css");
666 -/**
667 - * Utils functions
668 - *
669 - * @param url
670 - * @param data
671 - * @param functions
672 - * @since 4.3.0
673 - * @version 1.0.0
665 +/**
666 + * Utils functions
667 + *
668 + * @param url
669 + * @param data
670 + * @param functions
671 + * @since 4.3.0
672 + * @version 1.0.0
674 673 */
675 674
676 675
677 676 const argsToastify = {
@@ -713,8 +712,9 @@
713 712 __webpack_require__.r(__webpack_exports__);
714 713 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
715 714 /* harmony export */ debounce: () => (/* binding */ debounce),
716 715 /* harmony export */ eventHandlers: () => (/* binding */ eventHandlers),
716 +/* harmony export */ fullScreenView: () => (/* binding */ fullScreenView),
717 717 /* harmony export */ getDataOfForm: () => (/* binding */ getDataOfForm),
718 718 /* harmony export */ getFieldKeysOfForm: () => (/* binding */ getFieldKeysOfForm),
719 719 /* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated),
720 720 /* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed),
@@ -726,18 +726,19 @@
726 726 /* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady),
727 727 /* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl),
728 728 /* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl),
729 729 /* harmony export */ mergeDataWithDatForm: () => (/* binding */ mergeDataWithDatForm),
730 -/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse)
730 +/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse),
731 +/* harmony export */ toggleEnable: () => (/* binding */ toggleEnable)
731 732 /* harmony export */ });
732 -/**
733 - * Utils functions
734 - *
735 - * @param url
736 - * @param data
737 - * @param functions
738 - * @since 4.2.5.1
739 - * @version 1.0.6
733 +/**
734 + * Utils functions
735 + *
736 + * @param url
737 + * @param data
738 + * @param functions
739 + * @since 4.2.5.1
740 + * @version 1.0.7
740 741 */
741 742 const lpClassName = {
742 743 hidden: 'lp-hidden',
743 744 loading: 'loading',
@@ -742,9 +743,12 @@
742 743 hidden: 'lp-hidden',
743 744 loading: 'loading',
744 745 elCollapse: 'lp-collapse',
745 746 elSectionToggle: '.lp-section-toggle',
746 - elTriggerToggle: '.lp-trigger-toggle'
747 + elTriggerToggle: '.lp-trigger-toggle',
748 + elBtnFullScreen: '.lp-btn-full-screen-view',
749 + elFullScreen: 'lp-full-screen-view',
750 + elBtnFullScreenClose: 'lp-full-screen-view__close'
747 751 };
748 752 const lpFetchAPI = (url, data = {}, functions = {}) => {
749 753 if ('function' === typeof functions.before) {
750 754 functions.before();
@@ -766,12 +770,12 @@
766 770 }
767 771 });
768 772 };
769 773
770 -/**
771 - * Get current URL without params.
772 - *
773 - * @since 4.2.5.1
774 +/**
775 + * Get current URL without params.
776 + *
777 + * @since 4.2.5.1
774 778 */
775 779 const lpGetCurrentURLNoParam = () => {
776 780 let currentUrl = window.location.href;
777 781 const hasParams = currentUrl.includes('?');
@@ -787,14 +791,14 @@
787 791 });
788 792 return url;
789 793 };
790 794
791 -/**
792 - * Listen element viewed.
793 - *
794 - * @param el
795 - * @param callback
796 - * @since 4.2.5.8
795 +/**
796 + * Listen element viewed.
797 + *
798 + * @param el
799 + * @param callback
800 + * @since 4.2.5.8
797 801 */
798 802 const listenElementViewed = (el, callback) => {
799 803 const observerSeeItem = new IntersectionObserver(function (entries) {
800 804 for (const entry of entries) {
@@ -805,13 +809,13 @@
805 809 });
806 810 observerSeeItem.observe(el);
807 811 };
808 812
809 -/**
810 - * Listen element created.
811 - *
812 - * @param callback
813 - * @since 4.2.5.8
813 +/**
814 + * Listen element created.
815 + *
816 + * @param callback
817 + * @since 4.2.5.8
814 818 */
815 819 const listenElementCreated = callback => {
816 820 const observerCreateItem = new MutationObserver(function (mutations) {
817 821 mutations.forEach(function (mutation) {
@@ -830,14 +834,14 @@
830 834 });
831 835 // End.
832 836 };
833 837
834 -/**
835 - * Listen element created.
836 - *
837 - * @param selector
838 - * @param callback
839 - * @since 4.2.7.1
838 +/**
839 + * Listen element created.
840 + *
841 + * @param selector
842 + * @param callback
843 + * @since 4.2.7.1
840 844 */
841 845 const lpOnElementReady = (selector, callback) => {
842 846 const element = document.querySelector(selector);
843 847 if (element) {
@@ -978,17 +982,17 @@
978 982 };
979 983 return dataHandle;
980 984 };
981 985
982 -/**
983 - * Event trigger
984 - * For each list of event handlers, listen event on document.
985 - *
986 - * eventName: 'click', 'change', ...
987 - * eventHandlers = [ { selector: '.lp-button', callBack: function(){}, class: object } ]
988 - *
989 - * @param eventName
990 - * @param eventHandlers
986 +/**
987 + * Event trigger
988 + * For each list of event handlers, listen event on document.
989 + *
990 + * eventName: 'click', 'change', ...
991 + * eventHandlers = [ { selector: '.lp-button', callBack: function(){}, class: object } ]
992 + *
993 + * @param eventName
994 + * @param eventHandlers
991 995 */
992 996 const eventHandlers = (eventName, eventHandlers) => {
993 997 document.addEventListener(eventName, e => {
994 998 const target = e.target;
@@ -1029,32 +1033,32 @@
1029 1033 });
1030 1034 });
1031 1035 };
1032 1036
1033 -/**
1034 - * Debounce - delays function execution until after `wait` ms of inactivity.
1035 - *
1036 - * Each call resets the timer. Only the last call in a burst executes.
1037 - *
1038 - * USE CASES:
1039 - * - Search inputs, form validation, window resize
1040 - * - Multiple elements need independent timers
1041 - * - When you need to call with different arguments
1042 - *
1043 - * EXAMPLES:
1044 - * const debouncedSearch = debounce( (query) => fetchResults(query), 300 );
1045 - * searchInput.addEventListener('input', (e) => debouncedSearch(e.target.value));
1046 - *
1047 - * const debouncedResize = debounce( recalculateLayout, 250 );
1048 - * window.addEventListener('resize', debouncedResize);
1049 - *
1050 - * ⚠️ Create ONCE outside event handlers, not inside.
1051 - *
1052 - * @param {Function} func - Function to debounce (can be anonymous)
1053 - * @param {number} wait - Milliseconds to wait (default: 500)
1054 - * @return {Function} Debounced wrapper function
1055 - * @since 4.3.7
1056 - * @version 1.0.0
1037 +/**
1038 + * Debounce - delays function execution until after `wait` ms of inactivity.
1039 + *
1040 + * Each call resets the timer. Only the last call in a burst executes.
1041 + *
1042 + * USE CASES:
1043 + * - Search inputs, form validation, window resize
1044 + * - Multiple elements need independent timers
1045 + * - When you need to call with different arguments
1046 + *
1047 + * EXAMPLES:
1048 + * const debouncedSearch = debounce( (query) => fetchResults(query), 300 );
1049 + * searchInput.addEventListener('input', (e) => debouncedSearch(e.target.value));
1050 + *
1051 + * const debouncedResize = debounce( recalculateLayout, 250 );
1052 + * window.addEventListener('resize', debouncedResize);
1053 + *
1054 + * ⚠️ Create ONCE outside event handlers, not inside.
1055 + *
1056 + * @param {Function} func - Function to debounce (can be anonymous)
1057 + * @param {number} wait - Milliseconds to wait (default: 500)
1058 + * @return {Function} Debounced wrapper function
1059 + * @since 4.3.7
1060 + * @version 1.0.0
1057 1061 */
1058 1062 const debounce = (func, wait = 500) => {
1059 1063 let timer;
1060 1064 return args => {
@@ -1062,8 +1066,141 @@
1062 1066 timer = setTimeout(() => func(args), wait);
1063 1067 };
1064 1068 };
1065 1069
1070 +/**
1071 + * Initialize lp-toggle-enable components.
1072 + *
1073 + * Finds all `.lp-toggle-enable` elements and wires up toggle behavior.
1074 + * Reads initial state from `data-enabled` attribute ("true"/"false").
1075 + * Calls `data-on-toggle` callback (if provided via options) on state change.
1076 + *
1077 + * HTML structure:
1078 + * <label class="lp-toggle-enable" data-enabled="true">
1079 + * <input type="checkbox" class="lp-toggle-enable__input" />
1080 + * <span class="lp-toggle-enable__track"></span>
1081 + * </label>
1082 + *
1083 + * @param {string} selector CSS selector for toggle elements (default: '.lp-toggle-enable')
1084 + * @param {Function} onToggle Optional callback( el, isEnabled ) called on state change
1085 + * @since 4.4.5
1086 + * @version 1.0.0
1087 + */
1088 +window.lpToggleEnableInit = 0;
1089 +const toggleEnable = (onToggle = null) => {
1090 + if (window.lpToggleEnableInit) {
1091 + return;
1092 + }
1093 + window.lpToggleEnableInit = 1;
1094 + const selector = '.lp-toggle-enable';
1095 + const updateUI = (toggle, isEnabled) => {
1096 + toggle.classList.toggle('is-enabled', isEnabled);
1097 + const input = toggle.querySelector('.lp-toggle-enable__input');
1098 + if (input) {
1099 + input.checked = isEnabled;
1100 + input.value = isEnabled ? '1' : '0';
1101 + }
1102 + };
1103 +
1104 + // Delegate click handling via eventHandlers.
1105 + eventHandlers('click', [{
1106 + selector,
1107 + callBack: args => {
1108 + const {
1109 + e,
1110 + target
1111 + } = args;
1112 + const toggle = target.closest(selector);
1113 + if (!toggle || toggle.classList.contains('is-disabled')) {
1114 + return;
1115 + }
1116 + e.preventDefault();
1117 + const isEnabled = !toggle.classList.contains('is-enabled');
1118 + updateUI(toggle, isEnabled);
1119 + if ('function' === typeof onToggle) {
1120 + onToggle(toggle, isEnabled);
1121 + }
1122 + }
1123 + }]);
1124 +};
1125 +
1126 +/**
1127 + * Initialize custom fullscreen view buttons.
1128 + *
1129 + * Delegates clicks on `.lp-btn-full-screen-view` buttons to
1130 + * `lpToggleFullscreenView`. Reads the `data-target` attribute to find the
1131 + * target element. Falls back to the button's parent element when
1132 + * `data-target` is not provided.
1133 + *
1134 + * @since 4.4.5
1135 + * @version 1.0.0
1136 + */
1137 +window.lpFullScreenViewInit = 0;
1138 +const fullScreenView = () => {
1139 + if (window.lpFullScreenViewInit) {
1140 + return;
1141 + }
1142 + window.lpFullScreenViewInit = 1;
1143 + let lastScrollY = 0;
1144 + const lpToggleFullscreenView = (elTarget, elBtnFullScreen = null) => {
1145 + const isFullscreen = elTarget.classList.contains(lpClassName.elFullScreen);
1146 + if (isFullscreen) {
1147 + elTarget.classList.remove(lpClassName.elFullScreen);
1148 + document.documentElement.classList.remove('lp-full-screen-active');
1149 + window.scrollTo(0, lastScrollY);
1150 + } else {
1151 + lastScrollY = window.scrollY;
1152 + elTarget.classList.add(lpClassName.elFullScreen);
1153 + document.documentElement.classList.add('lp-full-screen-active');
1154 + }
1155 + if (!isFullscreen) {
1156 + if (!elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`)) {
1157 + const closeButton = document.createElement('button');
1158 + closeButton.type = 'button';
1159 + closeButton.className = lpClassName.elBtnFullScreenClose;
1160 + closeButton.setAttribute('aria-label', 'Close');
1161 + closeButton.innerHTML = lpData.i18n.closeButtonFullScreen || 'Close &times;';
1162 + closeButton.addEventListener('click', e => {
1163 + e.preventDefault();
1164 + lpToggleFullscreenView(elTarget);
1165 + });
1166 + elTarget.appendChild(closeButton);
1167 + }
1168 + } else {
1169 + const closeButton = elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`);
1170 + if (closeButton) {
1171 + closeButton.remove();
1172 + }
1173 + }
1174 + };
1175 + eventHandlers('click', [{
1176 + selector: lpClassName.elBtnFullScreen,
1177 + callBack: args => {
1178 + const {
1179 + e,
1180 + target
1181 + } = args;
1182 + const elBtnFullScreen = target.closest(lpClassName.elBtnFullScreen);
1183 + if (!elBtnFullScreen) {
1184 + console.log('No full screen button found');
1185 + return;
1186 + }
1187 + e.preventDefault();
1188 + let elTarget = null;
1189 + const targetSelector = elBtnFullScreen.dataset.targetFullscreen;
1190 + console.log(targetSelector);
1191 + if (targetSelector) {
1192 + elTarget = document.querySelector(targetSelector);
1193 + }
1194 + if (!elTarget) {
1195 + console.log('No target element found');
1196 + return;
1197 + }
1198 + lpToggleFullscreenView(elTarget, elBtnFullScreen);
1199 + }
1200 + }]);
1201 +};
1202 +
1066 1203 /***/ },
1067 1204
1068 1205 /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/toastify-js/src/toastify.css"
1069 1206 /*!*****************************************************************************************!*\
@@ -1632,9 +1769,9 @@
1632 1769 \**********************************************************/
1633 1770 (module) {
1634 1771
1635 1772 /*!
1636 -* sweetalert2 v11.26.17
1773 +* sweetalert2 v11.26.25
1637 1774 * Released under the MIT License.
1638 1775 */
1639 1776 (function (global, factory) {
1640 1777 true ? module.exports = factory() :
@@ -1803,8 +1940,13 @@
1803 1940 */
1804 1941 const isPromise = arg => arg && Promise.resolve(arg) === arg;
1805 1942
1806 1943 /**
1944 + * @returns {boolean}
1945 + */
1946 + const isFirefox = () => navigator.userAgent.includes('Firefox');
1947 +
1948 + /**
1807 1949 * Gets the popup container which contains the backdrop and the popup itself.
1808 1950 *
1809 1951 * @returns {HTMLElement | null}
1810 1952 */
@@ -2026,15 +2168,9 @@
2026 2168 const hasClass = (elem, className) => {
2027 2169 if (!className) {
2028 2170 return false;
2029 2171 }
2030 - const classList = className.split(/\s+/);
2031 - for (let i = 0; i < classList.length; i++) {
2032 - if (!elem.classList.contains(classList[i])) {
2033 - return false;
2034 - }
2035 - }
2036 - return true;
2172 + return className.split(/\s+/).every(cls => elem.classList.contains(cls));
2037 2173 };
2038 2174
2039 2175 /**
2040 2176 * @param {HTMLElement} elem
@@ -2117,27 +2253,18 @@
2117 2253 const toggleClass = (target, classList, condition) => {
2118 2254 if (!target || !classList) {
2119 2255 return;
2120 2256 }
2121 - if (typeof classList === 'string') {
2122 - classList = classList.split(/\s+/).filter(Boolean);
2123 - }
2124 - classList.forEach(className => {
2125 - if (Array.isArray(target)) {
2126 - target.forEach(elem => {
2127 - if (condition) {
2128 - elem.classList.add(className);
2129 - } else {
2130 - elem.classList.remove(className);
2131 - }
2132 - });
2133 - } else {
2257 + const classes = typeof classList === 'string' ? classList.split(/\s+/).filter(Boolean) : classList;
2258 + const targets = Array.isArray(target) ? target : [target];
2259 + targets.forEach(elem => {
2260 + classes.forEach(className => {
2134 2261 if (condition) {
2135 - target.classList.add(className);
2262 + elem.classList.add(className);
2136 2263 } else {
2137 - target.classList.remove(className);
2264 + elem.classList.remove(className);
2138 2265 }
2139 - }
2266 + });
2140 2267 });
2141 2268 };
2142 2269
2143 2270 /**
@@ -2162,17 +2289,10 @@
2162 2289 * @param {HTMLElement} elem
2163 2290 * @param {string} className
2164 2291 * @returns {HTMLElement | undefined}
2165 2292 */
2166 - const getDirectChildByClass = (elem, className) => {
2167 - const children = Array.from(elem.children);
2168 - for (let i = 0; i < children.length; i++) {
2169 - const child = children[i];
2170 - if (child instanceof HTMLElement && hasClass(child, className)) {
2171 - return child;
2172 - }
2173 - }
2174 - };
2293 + const getDirectChildByClass = (elem, className) => (/** @type {HTMLElement | undefined} */
2294 + Array.from(elem.children).find(child => child instanceof HTMLElement && hasClass(child, className)));
2175 2295
2176 2296 /**
2177 2297 * @param {HTMLElement} elem
2178 2298 * @param {string} property
@@ -2181,9 +2301,9 @@
2181 2301 const applyNumericalStyle = (elem, property, value) => {
2182 2302 if (value === `${parseInt(`${value}`)}`) {
2183 2303 value = parseInt(value);
2184 2304 }
2185 - if (value || parseInt(`${value}`) === 0) {
2305 + if (value || value === 0) {
2186 2306 elem.style.setProperty(property, typeof value === 'number' ? `${value}px` : (/** @type {string} */value));
2187 2307 } else {
2188 2308 elem.style.removeProperty(property);
2189 2309 }
@@ -2630,23 +2750,17 @@
2630 2750 return;
2631 2751 }
2632 2752 addClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
2633 2753
2634 - // Apply custom background colors to action buttons
2635 - if (params.confirmButtonColor) {
2636 - confirmButton.style.setProperty('--swal2-confirm-button-background-color', params.confirmButtonColor);
2637 - }
2638 - if (params.denyButtonColor) {
2639 - denyButton.style.setProperty('--swal2-deny-button-background-color', params.denyButtonColor);
2640 - }
2641 - if (params.cancelButtonColor) {
2642 - cancelButton.style.setProperty('--swal2-cancel-button-background-color', params.cancelButtonColor);
2643 - }
2644 -
2645 - // Apply the outline color to action buttons
2646 - applyOutlineColor(confirmButton);
2647 - applyOutlineColor(denyButton);
2648 - applyOutlineColor(cancelButton);
2754 + // Apply custom background colors and outline colors to action buttons
2755 + /** @type {[HTMLElement, string, string | undefined][]} */
2756 + const buttons = [[confirmButton, 'confirm', params.confirmButtonColor], [denyButton, 'deny', params.denyButtonColor], [cancelButton, 'cancel', params.cancelButtonColor]];
2757 + buttons.forEach(([button, type, color]) => {
2758 + if (color) {
2759 + button.style.setProperty(`--swal2-${type}-button-background-color`, color);
2760 + }
2761 + applyOutlineColor(button);
2762 + });
2649 2763 }
2650 2764
2651 2765 /**
2652 2766 * @param {HTMLElement} button
@@ -2761,9 +2875,10 @@
2761 2875 */
2762 2876
2763 2877 var privateProps = {
2764 2878 innerParams: new WeakMap(),
2765 - domCache: new WeakMap()
2879 + domCache: new WeakMap(),
2880 + focusedElement: new WeakMap()
2766 2881 };
2767 2882
2768 2883 /// <reference path="../../../../sweetalert2.d.ts"/>
2769 2884
@@ -2835,12 +2950,13 @@
2835 2950 /**
2836 2951 * @param {HTMLInputElement} input
2837 2952 */
2838 2953 const removeAttributes = input => {
2839 - for (let i = 0; i < input.attributes.length; i++) {
2840 - const attrName = input.attributes[i].name;
2841 - if (!['id', 'type', 'value', 'style'].includes(attrName)) {
2842 - input.removeAttribute(attrName);
2954 + for (const {
2955 + name
2956 + } of Array.from(input.attributes)) {
2957 + if (!['id', 'type', 'value', 'style'].includes(name)) {
2958 + input.removeAttribute(name);
2843 2959 }
2844 2960 }
2845 2961 };
2846 2962
@@ -2938,12 +3054,14 @@
2938 3054 * @returns {Input}
2939 3055 */
2940 3056 renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType['datetime-local'] = renderInputType.time = renderInputType.week = renderInputType.month = /** @type {(input: Input | HTMLElement, params: SweetAlertOptions) => Input} */
2941 3057 (input, params) => {
3058 + // oxfmt-ignore
2942 3059 const inputElement = /** @type {HTMLInputElement} */input;
2943 3060 checkAndSetInputValue(inputElement, params.inputValue);
2944 3061 setInputLabel(inputElement, inputElement, params);
2945 3062 setInputPlaceholder(inputElement, params);
3063 + // oxfmt-ignore
2946 3064 inputElement.type = /** @type {string} */params.input;
2947 3065 return inputElement;
2948 3066 };
2949 3067
@@ -3207,11 +3325,11 @@
3207 3325 }
3208 3326 const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');
3209 3327 /** @type {NodeListOf<HTMLElement>} */
3210 3328 const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');
3211 - for (let i = 0; i < successIconParts.length; i++) {
3212 - successIconParts[i].style.backgroundColor = popupBackgroundColor;
3213 - }
3329 + successIconParts.forEach(part => {
3330 + part.style.backgroundColor = popupBackgroundColor;
3331 + });
3214 3332 };
3215 3333
3216 3334 /**
3217 3335 *
@@ -3391,20 +3509,12 @@
3391 3509 * @param {MouseEvent | TouchEvent} event
3392 3510 * @returns {{ clientX: number, clientY: number }}
3393 3511 */
3394 3512 const getClientXY = event => {
3395 - let clientX = 0,
3396 - clientY = 0;
3397 - if (event.type.startsWith('mouse')) {
3398 - clientX = /** @type {MouseEvent} */event.clientX;
3399 - clientY = /** @type {MouseEvent} */event.clientY;
3400 - } else if (event.type.startsWith('touch')) {
3401 - clientX = /** @type {TouchEvent} */event.touches[0].clientX;
3402 - clientY = /** @type {TouchEvent} */event.touches[0].clientY;
3403 - }
3513 + const source = event.type.startsWith('touch') ? /** @type {TouchEvent} */event.touches[0] : (/** @type {MouseEvent} */event);
3404 3514 return {
3405 - clientX,
3406 - clientY
3515 + clientX: source.clientX,
3516 + clientY: source.clientY
3407 3517 };
3408 3518 };
3409 3519
3410 3520 /**
@@ -3632,9 +3742,10 @@
3632 3742 * @param {GlobalState} globalState
3633 3743 */
3634 3744 const removeKeydownHandler = globalState => {
3635 3745 if (globalState.keydownTarget && globalState.keydownHandlerAdded && globalState.keydownHandler) {
3636 - const handler = /** @type {EventListenerOrEventListenerObject} */ /** @type {unknown} */globalState.keydownHandler;
3746 + const handler = /** @type {EventListenerOrEventListenerObject} */
3747 + /** @type {unknown} */globalState.keydownHandler;
3637 3748 globalState.keydownTarget.removeEventListener('keydown', handler, {
3638 3749 capture: globalState.keydownListenerCapture
3639 3750 });
3640 3751 globalState.keydownHandlerAdded = false;
@@ -3667,8 +3778,9 @@
3667 3778
3668 3779 /**
3669 3780 * @param {number} index
3670 3781 * @param {number} increment
3782 + * @returns {boolean} shouldPreventDefault
3671 3783 */
3672 3784 const setFocus = (index, increment) => {
3673 3785 var _dom$getPopup;
3674 3786 const focusableElements = getFocusableElements();
@@ -3689,12 +3801,19 @@
3689 3801 } else if (index === -1) {
3690 3802 index = focusableElements.length - 1;
3691 3803 }
3692 3804 focusableElements[index].focus();
3693 - return;
3805 +
3806 + // don't prevent default for iframes (Firefox fix)
3807 + // https://github.com/sweetalert2/sweetalert2/issues/2931
3808 + if (isFirefox() && focusableElements[index] instanceof HTMLIFrameElement) {
3809 + return false;
3810 + }
3811 + return true;
3694 3812 }
3695 3813 // no visible focusable elements, focus the popup
3696 3814 (_dom$getPopup = getPopup()) === null || _dom$getPopup === void 0 || _dom$getPopup.focus();
3815 + return true;
3697 3816 };
3698 3817 const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];
3699 3818 const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];
3700 3819
@@ -3768,27 +3887,27 @@
3768 3887 */
3769 3888 const handleTab = event => {
3770 3889 const targetElement = event.target;
3771 3890 const focusableElements = getFocusableElements();
3772 - let btnIndex = -1;
3773 - for (let i = 0; i < focusableElements.length; i++) {
3774 - if (targetElement === focusableElements[i]) {
3775 - btnIndex = i;
3776 - break;
3777 - }
3778 - }
3891 + const btnIndex = focusableElements.findIndex(el => el === targetElement);
3779 3892
3893 + // don't prevent default for iframes (Firefox fix)
3894 + // https://github.com/sweetalert2/sweetalert2/issues/2931
3895 + let shouldPreventDefault = true;
3896 +
3780 3897 // Cycle to the next button
3781 3898 if (!event.shiftKey) {
3782 - setFocus(btnIndex, 1);
3899 + shouldPreventDefault = setFocus(btnIndex, 1);
3783 3900 }
3784 3901
3785 3902 // Cycle to the prev button
3786 3903 else {
3787 - setFocus(btnIndex, -1);
3904 + shouldPreventDefault = setFocus(btnIndex, -1);
3788 3905 }
3789 3906 event.stopPropagation();
3790 - event.preventDefault();
3907 + if (shouldPreventDefault) {
3908 + event.preventDefault();
3909 + }
3791 3910 };
3792 3911
3793 3912 /**
3794 3913 * @param {string} key
@@ -3884,8 +4003,11 @@
3884 4003
3885 4004 // @ts-ignore
3886 4005 const isSafariOrIOS = typeof window !== 'undefined' && Boolean(window.GestureEvent); // true for Safari desktop + all iOS browsers https://stackoverflow.com/a/70585394
3887 4006
4007 + // @ts-ignore
4008 + const isIOS = isSafariOrIOS && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
4009 +
3888 4010 /**
3889 4011 * Fix iOS scrolling
3890 4012 * http://stackoverflow.com/q/39626302
3891 4013 */
@@ -4467,30 +4589,10 @@
4467 4589 * @typedef {string[]} InputOptionFlattened
4468 4590 * @returns {InputOptionFlattened[]}
4469 4591 */
4470 4592 const formatInputOptions = inputOptions => {
4471 - /** @type {InputOptionFlattened[]} */
4472 - const result = [];
4473 - if (inputOptions instanceof Map) {
4474 - inputOptions.forEach((value, key) => {
4475 - let valueFormatted = value;
4476 - if (typeof valueFormatted === 'object') {
4477 - // case of <optgroup>
4478 - valueFormatted = formatInputOptions(valueFormatted);
4479 - }
4480 - result.push([key, valueFormatted]);
4481 - });
4482 - } else {
4483 - Object.keys(inputOptions).forEach(key => {
4484 - let valueFormatted = inputOptions[key];
4485 - if (typeof valueFormatted === 'object') {
4486 - // case of <optgroup>
4487 - valueFormatted = formatInputOptions(valueFormatted);
4488 - }
4489 - result.push([key, valueFormatted]);
4490 - });
4491 - }
4492 - return result;
4593 + const entries = inputOptions instanceof Map ? Array.from(inputOptions) : Object.entries(inputOptions);
4594 + return entries.map(([key, value]) => [key, typeof value === 'object' ? formatInputOptions(value) : value]); // case of <optgroup>
4493 4595 };
4494 4596
4495 4597 /**
4496 4598 * @param {string} optionValue
@@ -4496,11 +4598,9 @@
4496 4598 * @param {string} optionValue
4497 4599 * @param {SweetAlertInputValue} inputValue
4498 4600 * @returns {boolean}
4499 4601 */
4500 - const isSelected = (optionValue, inputValue) => {
4501 - return Boolean(inputValue) && inputValue !== null && inputValue !== undefined && inputValue.toString() === optionValue.toString();
4502 - };
4602 + const isSelected = (optionValue, inputValue) => Boolean(inputValue) && inputValue != null && inputValue.toString() === optionValue.toString();
4503 4603
4504 4604 /**
4505 4605 * @param {SweetAlert} instance
4506 4606 */
@@ -4681,11 +4781,9 @@
4681 4781 }
4682 4782 removeClass([domCache.popup, domCache.actions], swalClasses.loading);
4683 4783 domCache.popup.removeAttribute('aria-busy');
4684 4784 domCache.popup.removeAttribute('data-loading');
4685 - domCache.confirmButton.disabled = false;
4686 - domCache.denyButton.disabled = false;
4687 - domCache.cancelButton.disabled = false;
4785 + this.enableButtons();
4688 4786 }
4689 4787
4690 4788 /**
4691 4789 * @param {DomCache} domCache
@@ -4738,11 +4836,11 @@
4738 4836 }
4739 4837 if (input.type === 'radio') {
4740 4838 /** @type {NodeListOf<HTMLInputElement>} */
4741 4839 const radios = popup.querySelectorAll(`[name="${swalClasses.radio}"]`);
4742 - for (let i = 0; i < radios.length; i++) {
4743 - radios[i].disabled = disabled;
4744 - }
4840 + radios.forEach(radio => {
4841 + radio.disabled = disabled;
4842 + });
4745 4843 } else {
4746 4844 input.disabled = disabled;
4747 4845 }
4748 4846 }
@@ -4752,8 +4850,13 @@
4752 4850 * @this {SweetAlert}
4753 4851 */
4754 4852 function enableButtons() {
4755 4853 setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);
4854 + const focusedElement = privateProps.focusedElement.get(this);
4855 + if (focusedElement instanceof HTMLElement && document.activeElement === document.body) {
4856 + focusedElement.focus();
4857 + }
4858 + privateProps.focusedElement.delete(this);
4756 4859 }
4757 4860
4758 4861 /**
4759 4862 * Disable all the buttons
@@ -4759,8 +4862,9 @@
4759 4862 * Disable all the buttons
4760 4863 * @this {SweetAlert}
4761 4864 */
4762 4865 function disableButtons() {
4866 + privateProps.focusedElement.set(this, document.activeElement);
4763 4867 setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);
4764 4868 }
4765 4869
4766 4870 /**
@@ -5267,25 +5371,25 @@
5267 5371 };
5268 5372 };
5269 5373
5270 5374 /**
5271 - * @param {any} elem
5375 + * @param {unknown} elem
5272 5376 * @returns {boolean}
5273 5377 */
5274 - const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;
5378 + const isJqueryElement = elem => typeof elem === 'object' && elem !== null && 'jquery' in elem;
5275 5379
5276 5380 /**
5277 - * @param {any} elem
5381 + * @param {unknown} elem
5278 5382 * @returns {boolean}
5279 5383 */
5280 5384 const isElement = elem => elem instanceof Element || isJqueryElement(elem);
5281 5385
5282 5386 /**
5283 - * @param {any[]} args
5387 + * @param {ReadonlyArray<unknown>} args
5284 5388 * @returns {SweetAlertOptions}
5285 5389 */
5286 5390 const argsToParams = args => {
5287 - /** @type {Record<string, any>} */
5391 + /** @type {Record<string, unknown>} */
5288 5392 const params = {};
5289 5393 if (typeof args[0] === 'object' && !isElement(args[0])) {
5290 5394 Object.assign(params, args[0]);
5291 5395 } else {
@@ -5297,9 +5401,9 @@
5297 5401 error(`Unexpected type of ${name}! Expected "string" or "Element", got ${typeof arg}`);
5298 5402 }
5299 5403 });
5300 5404 }
5301 - return params;
5405 + return /** @type {SweetAlertOptions} */params;
5302 5406 };
5303 5407
5304 5408 /**
5305 5409 * Main method to create a new SweetAlert2 popup
@@ -5790,19 +5894,15 @@
5790 5894 return;
5791 5895 }
5792 5896 result[`${type}ButtonText`] = button.innerHTML;
5793 5897 result[`show${capitalizeFirstLetter(type)}Button`] = true;
5794 - if (button.hasAttribute('color')) {
5795 - const color = button.getAttribute('color');
5796 - if (color !== null) {
5797 - result[`${type}ButtonColor`] = color;
5798 - }
5898 + const color = button.getAttribute('color');
5899 + if (color !== null) {
5900 + result[`${type}ButtonColor`] = color;
5799 5901 }
5800 - if (button.hasAttribute('aria-label')) {
5801 - const ariaLabel = button.getAttribute('aria-label');
5802 - if (ariaLabel !== null) {
5803 - result[`${type}ButtonAriaLabel`] = ariaLabel;
5804 - }
5902 + const ariaLabel = button.getAttribute('aria-label');
5903 + if (ariaLabel !== null) {
5904 + result[`${type}ButtonAriaLabel`] = ariaLabel;
5805 5905 }
5806 5906 });
5807 5907 return result;
5808 5908 };
@@ -5816,20 +5916,17 @@
5816 5916 /** @type {HTMLElement | null} */
5817 5917 const image = templateContent.querySelector('swal-image');
5818 5918 if (image) {
5819 5919 showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);
5820 - if (image.hasAttribute('src')) {
5821 - result.imageUrl = image.getAttribute('src') || undefined;
5822 - }
5823 - if (image.hasAttribute('width')) {
5824 - result.imageWidth = image.getAttribute('width') || undefined;
5825 - }
5826 - if (image.hasAttribute('height')) {
5827 - result.imageHeight = image.getAttribute('height') || undefined;
5828 - }
5829 - if (image.hasAttribute('alt')) {
5830 - result.imageAlt = image.getAttribute('alt') || undefined;
5831 - }
5920 + // getAttribute returns null if attribute is absent; `|| undefined` converts empty string to undefined
5921 + const src = image.getAttribute('src');
5922 + if (src !== null) result.imageUrl = src || undefined;
5923 + const width = image.getAttribute('width');
5924 + if (width !== null) result.imageWidth = width || undefined;
5925 + const height = image.getAttribute('height');
5926 + if (height !== null) result.imageHeight = height || undefined;
5927 + const alt = image.getAttribute('alt');
5928 + if (alt !== null) result.imageAlt = alt || undefined;
5832 5929 }
5833 5930 return result;
5834 5931 };
5835 5932
@@ -5964,12 +6061,17 @@
5964 6061 setTimeout(() => {
5965 6062 setScrollingVisibility(container, popup);
5966 6063 }, SHOW_CLASS_TIMEOUT);
5967 6064 if (isModal()) {
5968 - // Using ternary instead of ?? operator for Webpack 4 compatibility
5969 6065 fixScrollContainer(container, params.scrollbarPadding !== undefined ? params.scrollbarPadding : false, initialBodyOverflow);
5970 6066 setAriaHidden();
5971 6067 }
6068 +
6069 + // https://github.com/sweetalert2/sweetalert2/issues/2923
6070 + if (isIOS && params.backdrop === false && popup.scrollHeight > container.clientHeight) {
6071 + // remove pointer-events: none from container, it breaks scrolling tall popups in iOS
6072 + container.style.pointerEvents = 'auto';
6073 + }
5972 6074 if (!isToast() && !globalState.previousActiveElement) {
5973 6075 globalState.previousActiveElement = document.activeElement;
5974 6076 }
5975 6077 if (typeof params.didOpen === 'function') {
@@ -6141,9 +6243,10 @@
6141 6243 constructor(...args) {
6142 6244 /**
6143 6245 * @type {Promise<SweetAlertResult>}
6144 6246 */
6145 - _classPrivateFieldInitSpec(this, _promise, /** @type {Promise<SweetAlertResult>} */Promise.resolve({
6247 + _classPrivateFieldInitSpec(this, _promise, /** @type {Promise<SweetAlertResult>} */
6248 + Promise.resolve({
6146 6249 isConfirmed: false,
6147 6250 isDenied: false,
6148 6251 isDismissed: true
6149 6252 }));
@@ -6207,8 +6310,9 @@
6207 6310 // `catch` cannot be the name of a module export, so we define our thenable methods here instead
6208 6311 /**
6209 6312 * @param {any} onFulfilled
6210 6313 */
6314 + // oxlint-disable-next-line unicorn/no-thenable
6211 6315 then(onFulfilled) {
6212 6316 return _classPrivateFieldGet2(_promise, this).then(onFulfilled);
6213 6317 }
6214 6318
@@ -6352,10 +6456,10 @@
6352 6456 return;
6353 6457 }
6354 6458 // TODO: this is dumb, remove `allowEnterKey` param in the next major version
6355 6459 if (!callIfFunction(innerParams.allowEnterKey)) {
6356 - warnAboutDeprecation('allowEnterKey');
6357 - blurActiveElement();
6460 + warnAboutDeprecation('allowEnterKey', 'preConfirm: () => false');
6461 + domCache.popup.focus();
6358 6462 return;
6359 6463 }
6360 6464 if (focusAutofocus(domCache)) {
6361 6465 return;
@@ -6400,13 +6504,8 @@
6400 6504 return true;
6401 6505 }
6402 6506 return false;
6403 6507 };
6404 - const blurActiveElement = () => {
6405 - if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === 'function') {
6406 - document.activeElement.blur();
6407 - }
6408 - };
6409 6508
6410 6509 // Assign instance methods from src/instanceMethods/*.js to prototype
6411 6510 SweetAlert.prototype.disableButtons = disableButtons;
6412 6511 SweetAlert.prototype.enableButtons = enableButtons;
@@ -6444,9 +6543,9 @@
6444 6543 return undefined;
6445 6544 };
6446 6545 });
6447 6546 SweetAlert.DismissReason = DismissReason;
6448 - SweetAlert.version = '11.26.17';
6547 + SweetAlert.version = '11.26.25';
6449 6548
6450 6549 const Swal = SweetAlert;
6451 6550 // @ts-ignore
6452 6551 Swal.default = Swal;
@@ -6454,9 +6553,9 @@
6454 6553 return Swal;
6455 6554
6456 6555 }));
6457 6556 if (typeof this !== 'undefined' && this.Sweetalert2){this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}
6458 -"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,":root{--swal2-outline: 0 0 0 3px rgba(100, 150, 200, 0.5);--swal2-container-padding: 0.625em;--swal2-backdrop: rgba(0, 0, 0, 0.4);--swal2-backdrop-transition: background-color 0.15s;--swal2-width: 32em;--swal2-padding: 0 0 1.25em;--swal2-border: none;--swal2-border-radius: 0.3125rem;--swal2-background: white;--swal2-color: #545454;--swal2-show-animation: swal2-show 0.3s;--swal2-hide-animation: swal2-hide 0.15s forwards;--swal2-icon-zoom: 1;--swal2-icon-animations: true;--swal2-title-padding: 0.8em 1em 0;--swal2-html-container-padding: 1em 1.6em 0.3em;--swal2-input-border: 1px solid #d9d9d9;--swal2-input-border-radius: 0.1875em;--swal2-input-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;--swal2-input-background: transparent;--swal2-input-transition: border-color 0.2s, box-shadow 0.2s;--swal2-input-hover-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;--swal2-input-focus-border: 1px solid #b4dbed;--swal2-input-focus-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5);--swal2-progress-step-background: #add8e6;--swal2-validation-message-background: #f0f0f0;--swal2-validation-message-color: #666;--swal2-footer-border-color: #eee;--swal2-footer-background: transparent;--swal2-footer-color: inherit;--swal2-timer-progress-bar-background: rgba(0, 0, 0, 0.3);--swal2-close-button-position: initial;--swal2-close-button-inset: auto;--swal2-close-button-font-size: 2.5em;--swal2-close-button-color: #ccc;--swal2-close-button-transition: color 0.2s, box-shadow 0.2s;--swal2-close-button-outline: initial;--swal2-close-button-box-shadow: inset 0 0 0 3px transparent;--swal2-close-button-focus-box-shadow: inset var(--swal2-outline);--swal2-close-button-hover-transform: none;--swal2-actions-justify-content: center;--swal2-actions-width: auto;--swal2-actions-margin: 1.25em auto 0;--swal2-actions-padding: 0;--swal2-actions-border-radius: 0;--swal2-actions-background: transparent;--swal2-action-button-transition: background-color 0.2s, box-shadow 0.2s;--swal2-action-button-hover: black 10%;--swal2-action-button-active: black 10%;--swal2-confirm-button-box-shadow: none;--swal2-confirm-button-border-radius: 0.25em;--swal2-confirm-button-background-color: #7066e0;--swal2-confirm-button-color: #fff;--swal2-deny-button-box-shadow: none;--swal2-deny-button-border-radius: 0.25em;--swal2-deny-button-background-color: #dc3741;--swal2-deny-button-color: #fff;--swal2-cancel-button-box-shadow: none;--swal2-cancel-button-border-radius: 0.25em;--swal2-cancel-button-background-color: #6e7881;--swal2-cancel-button-color: #fff;--swal2-toast-show-animation: swal2-toast-show 0.5s;--swal2-toast-hide-animation: swal2-toast-hide 0.1s forwards;--swal2-toast-border: none;--swal2-toast-box-shadow: 0 0 1px hsl(0deg 0% 0% / 0.075), 0 1px 2px hsl(0deg 0% 0% / 0.075), 1px 2px 4px hsl(0deg 0% 0% / 0.075), 1px 3px 8px hsl(0deg 0% 0% / 0.075), 2px 4px 16px hsl(0deg 0% 0% / 0.075)}[data-swal2-theme=dark]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white);--swal2-timer-progress-bar-background: rgba(255, 255, 255, 0.7)}@media(prefers-color-scheme: dark){[data-swal2-theme=auto]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white);--swal2-timer-progress-bar-background: rgba(255, 255, 255, 0.7)}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static !important}}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:var(--swal2-container-padding);overflow-x:hidden;transition:var(--swal2-backdrop-transition);-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container)[popover]{width:auto;border:0}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);font-family:inherit;font-size:1rem;container-name:swal2-popup}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable{cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging{cursor:grabbing}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:var(--swal2-title-padding);color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;overflow-wrap:break-word;cursor:initial}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:var(--swal2-actions-justify-content);width:var(--swal2-actions-width);margin:var(--swal2-actions-margin);padding:var(--swal2-actions-padding);border-radius:var(--swal2-actions-border-radius);background:var(--swal2-actions-background)}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:var(--swal2-action-button-transition);border:none;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border-radius:var(--swal2-confirm-button-border-radius);background:initial;background-color:var(--swal2-confirm-button-background-color);box-shadow:var(--swal2-confirm-button-box-shadow);color:var(--swal2-confirm-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):hover{background-color:color-mix(in srgb, var(--swal2-confirm-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):active{background-color:color-mix(in srgb, var(--swal2-confirm-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border-radius:var(--swal2-deny-button-border-radius);background:initial;background-color:var(--swal2-deny-button-background-color);box-shadow:var(--swal2-deny-button-box-shadow);color:var(--swal2-deny-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):hover{background-color:color-mix(in srgb, var(--swal2-deny-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):active{background-color:color-mix(in srgb, var(--swal2-deny-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border-radius:var(--swal2-cancel-button-border-radius);background:initial;background-color:var(--swal2-cancel-button-background-color);box-shadow:var(--swal2-cancel-button-box-shadow);color:var(--swal2-cancel-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):hover{background-color:color-mix(in srgb, var(--swal2-cancel-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):active{background-color:color-mix(in srgb, var(--swal2-cancel-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{outline:none;box-shadow:var(--swal2-action-button-focus-box-shadow)}div:where(.swal2-container) button:where(.swal2-styled)[disabled]:not(.swal2-loading){opacity:.4}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid var(--swal2-footer-border-color);background:var(--swal2-footer-background);color:var(--swal2-footer-color);font-size:1em;text-align:center;cursor:initial}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius)}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:var(--swal2-timer-progress-bar-background)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em;cursor:initial}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:var(--swal2-close-button-transition);border:none;border-radius:var(--swal2-border-radius);outline:var(--swal2-close-button-outline);background:rgba(0,0,0,0);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:var(--swal2-close-button-hover-transform);background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus-visible{outline:none;box-shadow:var(--swal2-close-button-focus-box-shadow)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;justify-content:center;margin:0;padding:var(--swal2-html-container-padding);overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;overflow-wrap:break-word;word-break:break-word;cursor:initial}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:var(--swal2-input-transition);border:var(--swal2-input-border);border-radius:var(--swal2-input-border-radius);background:var(--swal2-input-background);box-shadow:var(--swal2-input-box-shadow);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):hover,div:where(.swal2-container) input:where(.swal2-file):hover,div:where(.swal2-container) textarea:where(.swal2-textarea):hover{box-shadow:var(--swal2-input-hover-box-shadow)}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:var(--swal2-input-focus-border);outline:none;box-shadow:var(--swal2-input-focus-box-shadow)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:var(--swal2-background)}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:var(--swal2-input-background);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:var(--swal2-input-background);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:var(--swal2-background);color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;zoom:var(--swal2-icon-zoom);border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}@container swal2-popup style(--swal2-icon-animations:true){div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}}div:where(.swal2-icon).swal2-warning{border-color:#f8bb86;color:#f8bb86}@container swal2-popup style(--swal2-icon-animations:true){div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}}div:where(.swal2-icon).swal2-info{border-color:#3fc3ee;color:#3fc3ee}@container swal2-popup style(--swal2-icon-animations:true){div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}}div:where(.swal2-icon).swal2-question{border-color:#87adbd;color:#87adbd}@container swal2-popup style(--swal2-icon-animations:true){div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}@container swal2-popup style(--swal2-icon-animations:true){div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;border:var(--swal2-toast-border);background:var(--swal2-background);box-shadow:var(--swal2-toast-box-shadow);pointer-events:all}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}@container swal2-popup style(--swal2-icon-animations:true){.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}}.swal2-toast.swal2-show{animation:var(--swal2-toast-show-animation)}.swal2-toast.swal2-hide{animation:var(--swal2-toast-hide-animation)}@keyframes swal2-show{0%{transform:translate3d(0, -50px, 0) scale(0.9);opacity:0}100%{transform:translate3d(0, 0, 0) scale(1);opacity:1}}@keyframes swal2-hide{0%{transform:translate3d(0, 0, 0) scale(1);opacity:1}100%{transform:translate3d(0, -50px, 0) scale(0.9);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}");
6557 +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,":root{--swal2-outline: 0 0 0 3px rgba(100, 150, 200, 0.5);--swal2-container-padding: 0.625em;--swal2-backdrop: rgba(0, 0, 0, 0.4);--swal2-backdrop-transition: background-color 0.15s;--swal2-width: 32em;--swal2-padding: 0 0 1.25em;--swal2-border: none;--swal2-border-radius: 0.3125rem;--swal2-background: white;--swal2-color: #545454;--swal2-show-animation: swal2-show 0.3s;--swal2-hide-animation: swal2-hide 0.15s forwards;--swal2-icon-zoom: 1;--swal2-title-padding: 0.8em 1em 0;--swal2-html-container-padding: 1em 1.6em 0.3em;--swal2-input-border: 1px solid #d9d9d9;--swal2-input-border-radius: 0.1875em;--swal2-input-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;--swal2-input-background: transparent;--swal2-input-transition: border-color 0.2s, box-shadow 0.2s;--swal2-input-hover-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent;--swal2-input-focus-border: 1px solid #b4dbed;--swal2-input-focus-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5);--swal2-progress-step-background: #add8e6;--swal2-validation-message-background: #f0f0f0;--swal2-validation-message-color: #666;--swal2-footer-border-color: #eee;--swal2-footer-background: transparent;--swal2-footer-color: inherit;--swal2-timer-progress-bar-background: rgba(0, 0, 0, 0.3);--swal2-close-button-position: initial;--swal2-close-button-inset: auto;--swal2-close-button-font-size: 2.5em;--swal2-close-button-color: #ccc;--swal2-close-button-transition: color 0.2s, box-shadow 0.2s;--swal2-close-button-outline: initial;--swal2-close-button-box-shadow: inset 0 0 0 3px transparent;--swal2-close-button-focus-box-shadow: inset var(--swal2-outline);--swal2-close-button-hover-transform: none;--swal2-actions-justify-content: center;--swal2-actions-width: auto;--swal2-actions-margin: 1.25em auto 0;--swal2-actions-padding: 0;--swal2-actions-border-radius: 0;--swal2-actions-background: transparent;--swal2-action-button-transition: background-color 0.2s, box-shadow 0.2s;--swal2-action-button-hover: black 10%;--swal2-action-button-active: black 10%;--swal2-confirm-button-box-shadow: none;--swal2-confirm-button-border-radius: 0.25em;--swal2-confirm-button-background-color: #7066e0;--swal2-confirm-button-color: #fff;--swal2-deny-button-box-shadow: none;--swal2-deny-button-border-radius: 0.25em;--swal2-deny-button-background-color: #dc3741;--swal2-deny-button-color: #fff;--swal2-cancel-button-box-shadow: none;--swal2-cancel-button-border-radius: 0.25em;--swal2-cancel-button-background-color: #6e7881;--swal2-cancel-button-color: #fff;--swal2-toast-show-animation: swal2-toast-show 0.5s;--swal2-toast-hide-animation: swal2-toast-hide 0.1s forwards;--swal2-toast-border: none;--swal2-toast-box-shadow: 0 0 1px hsl(0deg 0% 0% / 0.075), 0 1px 2px hsl(0deg 0% 0% / 0.075), 1px 2px 4px hsl(0deg 0% 0% / 0.075), 1px 3px 8px hsl(0deg 0% 0% / 0.075), 2px 4px 16px hsl(0deg 0% 0% / 0.075)}[data-swal2-theme=dark]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white);--swal2-timer-progress-bar-background: rgba(255, 255, 255, 0.7)}@media(prefers-color-scheme: dark){[data-swal2-theme=auto]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white);--swal2-timer-progress-bar-background: rgba(255, 255, 255, 0.7)}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:auto}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static !important}}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:var(--swal2-container-padding);overflow-x:hidden;transition:var(--swal2-backdrop-transition);-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container)[popover]{width:auto;border:0}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable{cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging{cursor:grabbing}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:var(--swal2-title-padding);color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;overflow-wrap:break-word;cursor:initial}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:var(--swal2-actions-justify-content);width:var(--swal2-actions-width);margin:var(--swal2-actions-margin);padding:var(--swal2-actions-padding);border-radius:var(--swal2-actions-border-radius);background:var(--swal2-actions-background)}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:var(--swal2-action-button-transition);border:none;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border-radius:var(--swal2-confirm-button-border-radius);background:initial;background-color:var(--swal2-confirm-button-background-color);box-shadow:var(--swal2-confirm-button-box-shadow);color:var(--swal2-confirm-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):hover{background-color:color-mix(in srgb, var(--swal2-confirm-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):active{background-color:color-mix(in srgb, var(--swal2-confirm-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border-radius:var(--swal2-deny-button-border-radius);background:initial;background-color:var(--swal2-deny-button-background-color);box-shadow:var(--swal2-deny-button-box-shadow);color:var(--swal2-deny-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):hover{background-color:color-mix(in srgb, var(--swal2-deny-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):active{background-color:color-mix(in srgb, var(--swal2-deny-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border-radius:var(--swal2-cancel-button-border-radius);background:initial;background-color:var(--swal2-cancel-button-background-color);box-shadow:var(--swal2-cancel-button-box-shadow);color:var(--swal2-cancel-button-color);font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):hover{background-color:color-mix(in srgb, var(--swal2-cancel-button-background-color), var(--swal2-action-button-hover))}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):active{background-color:color-mix(in srgb, var(--swal2-cancel-button-background-color), var(--swal2-action-button-active))}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{outline:none;box-shadow:var(--swal2-action-button-focus-box-shadow)}div:where(.swal2-container) button:where(.swal2-styled)[disabled]:not(.swal2-loading){opacity:.4}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid var(--swal2-footer-border-color);background:var(--swal2-footer-background);color:var(--swal2-footer-color);font-size:1em;text-align:center;cursor:initial}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius)}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:var(--swal2-timer-progress-bar-background)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em;cursor:initial}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:var(--swal2-close-button-transition);border:none;border-radius:var(--swal2-border-radius);outline:var(--swal2-close-button-outline);background:rgba(0,0,0,0);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:var(--swal2-close-button-hover-transform);background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus-visible{outline:none;box-shadow:var(--swal2-close-button-focus-box-shadow)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;justify-content:center;margin:0;padding:var(--swal2-html-container-padding);overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;overflow-wrap:break-word;word-break:break-word;cursor:initial}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:var(--swal2-input-transition);border:var(--swal2-input-border);border-radius:var(--swal2-input-border-radius);background:var(--swal2-input-background);box-shadow:var(--swal2-input-box-shadow);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):hover,div:where(.swal2-container) input:where(.swal2-file):hover,div:where(.swal2-container) textarea:where(.swal2-textarea):hover{box-shadow:var(--swal2-input-hover-box-shadow)}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:var(--swal2-input-focus-border);outline:none;box-shadow:var(--swal2-input-focus-box-shadow)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:var(--swal2-background)}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:var(--swal2-input-background);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:var(--swal2-input-background);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:var(--swal2-background);color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;zoom:var(--swal2-icon-zoom);border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#f8bb86;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#3fc3ee;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#87adbd;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;border:var(--swal2-toast-border);background:var(--swal2-background);box-shadow:var(--swal2-toast-box-shadow);pointer-events:auto}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-toast.swal2-show{animation:var(--swal2-toast-show-animation)}.swal2-toast.swal2-hide{animation:var(--swal2-toast-hide-animation)}@keyframes swal2-show{0%{transform:translate3d(0, -50px, 0) scale(0.9);opacity:0}100%{transform:translate3d(0, 0, 0) scale(1);opacity:1}}@keyframes swal2-hide{0%{transform:translate3d(0, 0, 0) scale(1);opacity:1}100%{transform:translate3d(0, -50px, 0) scale(0.9);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}");
6459 6558
6460 6559 /***/ },
6461 6560
6462 6561 /***/ "./node_modules/toastify-js/src/toastify.js"
@@ -6916,19 +7015,19 @@
6916 7015
6917 7016 /******/ });
6918 7017 /************************************************************************/
6919 7018 /******/ // The module cache
6920 -/******/ var __webpack_module_cache__ = {};
7019 +/******/ const __webpack_module_cache__ = {};
6921 7020 /******/
6922 7021 /******/ // The require function
6923 7022 /******/ function __webpack_require__(moduleId) {
6924 7023 /******/ // Check if module is in cache
6925 -/******/ var cachedModule = __webpack_module_cache__[moduleId];
7024 +/******/ const cachedModule = __webpack_module_cache__[moduleId];
6926 7025 /******/ if (cachedModule !== undefined) {
6927 7026 /******/ return cachedModule.exports;
6928 7027 /******/ }
6929 7028 /******/ // Create a new module (and put it into the cache)
6930 -/******/ var module = __webpack_module_cache__[moduleId] = {
7029 +/******/ const module = __webpack_module_cache__[moduleId] = {
6931 7030 /******/ id: moduleId,
6932 7031 /******/ // no module.loaded needed
6933 7032 /******/ exports: {}
6934 7033 /******/ };
@@ -6935,9 +7034,9 @@
6935 7034 /******/
6936 7035 /******/ // Execute the module function
6937 7036 /******/ if (!(moduleId in __webpack_modules__)) {
6938 7037 /******/ delete __webpack_module_cache__[moduleId];
6939 -/******/ var e = new Error("Cannot find module '" + moduleId + "'");
7038 +/******/ const e = new Error("Cannot find module '" + moduleId + "'");
6940 7039 /******/ e.code = 'MODULE_NOT_FOUND';
6941 7040 /******/ throw e;
6942 7041 /******/ }
6943 7042 /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
@@ -6950,9 +7049,9 @@
6950 7049 /******/ /* webpack/runtime/compat get default export */
6951 7050 /******/ (() => {
6952 7051 /******/ // getDefaultExport function for compatibility with non-harmony modules
6953 7052 /******/ __webpack_require__.n = (module) => {
6954 -/******/ var getter = module && module.__esModule ?
7053 +/******/ const getter = module && module.__esModule ?
6955 7054 /******/ () => (module['default']) :
6956 7055 /******/ () => (module);
6957 7056 /******/ __webpack_require__.d(getter, { a: getter });
6958 7057 /******/ return getter;
@@ -6960,14 +7059,29 @@
6960 7059 /******/ })();
6961 7060 /******/
6962 7061 /******/ /* webpack/runtime/define property getters */
6963 7062 /******/ (() => {
6964 -/******/ // define getter functions for harmony exports
7063 +/******/ // define getter/value functions for harmony exports
6965 7064 /******/ __webpack_require__.d = (exports, definition) => {
6966 -/******/ for(var key in definition) {
6967 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
6968 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
7065 +/******/ if(Array.isArray(definition)) {
7066 +/******/ var i = 0;
7067 +/******/ while(i < definition.length) {
7068 +/******/ var key = definition[i++];
7069 +/******/ var binding = definition[i++];
7070 +/******/ if(!__webpack_require__.o(exports, key)) {
7071 +/******/ if(binding === 0) {
7072 +/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
7073 +/******/ } else {
7074 +/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
7075 +/******/ }
7076 +/******/ } else if(binding === 0) { i++; }
6969 7077 /******/ }
7078 +/******/ } else {
7079 +/******/ for(var key in definition) {
7080 +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
7081 +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
7082 +/******/ }
7083 +/******/ }
6970 7084 /******/ }
6971 7085 /******/ };
6972 7086 /******/ })();
6973 7087 /******/
@@ -6972,9 +7086,9 @@
6972 7086 /******/ })();
6973 7087 /******/
6974 7088 /******/ /* webpack/runtime/hasOwnProperty shorthand */
6975 7089 /******/ (() => {
6976 -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
7090 +/******/ __webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop))
6977 7091 /******/ })();
6978 7092 /******/
6979 7093 /******/ /* webpack/runtime/make namespace object */
6980 7094 /******/ (() => {
@@ -6979,9 +7093,9 @@
6979 7093 /******/ /* webpack/runtime/make namespace object */
6980 7094 /******/ (() => {
6981 7095 /******/ // define __esModule on exports
6982 7096 /******/ __webpack_require__.r = (exports) => {
6983 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
7097 +/******/ if(Symbol.toStringTag) {
6984 7098 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
6985 7099 /******/ }
6986 7100 /******/ Object.defineProperty(exports, '__esModule', { value: true });
6987 7101 /******/ };
@@ -6992,9 +7106,9 @@
6992 7106 /******/ __webpack_require__.nc = undefined;
6993 7107 /******/ })();
6994 7108 /******/
6995 7109 /************************************************************************/
6996 -var __webpack_exports__ = {};
7110 +let __webpack_exports__ = {};
6997 7111 // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
6998 7112 (() => {
6999 7113 "use strict";
7000 7114 /*!**********************************************!*\
@@ -7002,13 +7116,13 @@
7002 7116 \**********************************************/
7003 7117 __webpack_require__.r(__webpack_exports__);
7004 7118 /* harmony import */ var _courses_generate_with_ai_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./courses/generate-with-ai.js */ "./assets/src/js/admin/courses/generate-with-ai.js");
7005 7119 /* harmony import */ var _courses_view_students_modal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./courses/view-students-modal.js */ "./assets/src/js/admin/courses/view-students-modal.js");
7006 -/**
7007 - * Admin Courses JS
7008 - *
7009 - * @since 4.3.0
7010 - * @version 1.0.1
7120 +/**
7121 + * Admin Courses JS
7122 + *
7123 + * @since 4.3.0
7124 + * @version 1.0.1
7011 7125 */
7012 7126
7013 7127
7014 7128