{"version":3,"sources":["webpack:///./node_modules/sweetalert2/dist/sweetalert2.js"],"names":["global","factory","module","exports","this","consolePrefix","uniqueArray","arr","result","i","length","indexOf","push","capitalizeFirstLetter","str","charAt","toUpperCase","slice","warn","message","console","concat","join","error","previousWarnOnceMessages","warnOnce","includes","warnAboutDeprecation","deprecatedParam","useInstead","callIfFunction","arg","hasToPromiseFn","toPromise","asPromise","Promise","resolve","isPromise","getRandomElement","Math","floor","random","defaultParams","title","titleText","text","html","footer","icon","undefined","iconColor","iconHtml","template","toast","showClass","popup","backdrop","hideClass","customClass","target","color","heightAuto","allowOutsideClick","allowEscapeKey","allowEnterKey","stopKeydownPropagation","keydownListenerCapture","showConfirmButton","showDenyButton","showCancelButton","preConfirm","preDeny","confirmButtonText","confirmButtonAriaLabel","confirmButtonColor","denyButtonText","denyButtonAriaLabel","denyButtonColor","cancelButtonText","cancelButtonAriaLabel","cancelButtonColor","buttonsStyling","reverseButtons","focusConfirm","focusDeny","focusCancel","returnFocus","showCloseButton","closeButtonHtml","closeButtonAriaLabel","loaderHtml","showLoaderOnConfirm","showLoaderOnDeny","imageUrl","imageWidth","imageHeight","imageAlt","timer","timerProgressBar","width","padding","background","input","inputPlaceholder","inputLabel","inputValue","inputOptions","inputAutoTrim","inputAttributes","inputValidator","returnInputValueOnDeny","validationMessage","grow","position","progressSteps","currentProgressStep","progressStepsDistance","willOpen","didOpen","didRender","willClose","didClose","didDestroy","scrollbarPadding","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","Object","prototype","hasOwnProperty","call","isUpdatableParameter","isDeprecatedParameter","checkIfParamIsValid","param","checkIfToastParamIsValid","checkIfParamIsDeprecated","showWarningsForParams","params","swalPrefix","prefix","items","swalClasses","iconTypes","getContainer","document","body","querySelector","container","elementBySelector","selectorString","elementByClass","className","getPopup","getIcon","getTitle","getHtmlContainer","getImage","image","getProgressSteps","getValidationMessage","getConfirmButton","actions","confirm","getDenyButton","deny","getInputLabel","getLoader","loader","getCancelButton","cancel","getActions","getFooter","getTimerProgressBar","getCloseButton","close","focusable","getFocusableElements","focusableElementsWithTabindex","Array","from","querySelectorAll","sort","a","b","tabindexA","parseInt","getAttribute","tabindexB","otherFocusableElements","filter","el","isVisible","isModal","hasClass","shown","isToast","isLoading","hasAttribute","states","previousBodyPadding","setInnerHtml","elem","textContent","parser","DOMParser","parsed","parseFromString","childNodes","forEach","child","appendChild","classList","split","contains","removeCustomClasses","values","remove","applyCustomClass","addClass","getInput","inputClass","checkbox","radio","range","focusInput","focus","type","val","value","toggleClass","condition","Boolean","isArray","add","removeClass","getDirectChildByClass","children","HTMLElement","applyNumericalStyle","property","style","removeProperty","show","display","arguments","hide","setStyle","parent","selector","toggle","offsetWidth","offsetHeight","getClientRects","allButtonsAreHidden","isScrollable","scrollHeight","clientHeight","hasCssAnimation","window","getComputedStyle","animDuration","parseFloat","getPropertyValue","transDuration","animateTimerProgressBar","reset","transition","setTimeout","stopTimerProgressBar","timerProgressBarWidth","timerProgressBarFullWidth","timerProgressBarPercent","isNodeEnv","RESTORE_FOCUS_TIMEOUT","globalState","focusPreviousActiveElement","previousActiveElement","restoreActiveElement","x","scrollX","y","scrollY","restoreFocusTimeout","scrollTo","sweetHTML","file","select","label","textarea","replace","resetOldContainer","oldContainer","documentElement","resetValidationMessage","currentInstance","addInputChangeListeners","rangeOutput","oninput","onchange","getTarget","setupAccessibility","setAttribute","setupRTL","targetElement","direction","rtl","init","oldContainerExisted","createElement","parseHtmlToContainer","handleObject","jquery","handleJqueryElem","toString","cloneNode","animationEndEvent","testEl","transEndEventNames","WebkitAnimation","animation","measureScrollbar","scrollDiv","scrollbarWidth","getBoundingClientRect","clientWidth","removeChild","renderActions","instance","renderButtons","confirmButton","denyButton","cancelButton","renderButton","handleButtonsStyling","insertBefore","styled","backgroundColor","button","buttonType","renderContainer","handleBackdropParam","handlePositionParam","handleGrowParam","center","growClass","privateProps","awaitingPromise","WeakMap","promise","innerParams","domCache","inputClasses","renderInput","get","rerender","inputContainer","setAttributes","showInput","setCustomClass","renderInputType","getInputContainer","removeAttributes","attributes","attrName","name","removeAttribute","attr","setInputPlaceholder","placeholder","setInputLabel","prependTo","id","labelClass","innerText","insertAdjacentElement","inputType","checkAndSetInputValue","email","password","number","tel","url","rangeInput","disabled","selected","checkboxContainer","checked","getMargin","marginLeft","marginRight","initialPopupWidth","textareaResizeHandler","textareaWidth","MutationObserver","observe","attributeFilter","renderContent","htmlContainer","renderFooter","renderCloseButton","closeButton","renderIcon","setContent","applyStyles","keys","iconType","setColor","adjustSuccessIconBackgroundColor","popupBackgroundColor","successIconParts","successIconHtml","errorIconHtml","newContent","oldContent","innerHTML","iconContent","defaultIconHtml","question","warning","info","trim","borderColor","sel","content","renderImage","renderProgressSteps","progressStepsContainer","step","index","stepEl","createStepElement","lineEl","createLineElement","renderTitle","renderPopup","addClasses","modal","render","DismissReason","freeze","esc","setAriaHidden","bodyChildren","unsetAriaHidden","swalStringParams","getTemplateParams","templateContent","showWarningsForElements","assign","getSwalParams","getSwalButtons","getSwalImage","getSwalIcon","getSwalInput","getSwalStringParams","swalParams","showWarningsForAttributes","JSON","parse","swalButtons","option","optionValue","optionName","paramNames","tag","allowedElements","tagName","toLowerCase","allowedAttributes","attribute","defaultInputValidators","string","test","setDefaultInputValidators","key","validateCustomTargetElement","setParameters","Timer","callback","delay","remaining","running","start","started","Date","clearTimeout","getTime","n","stop","fixScrollbar","innerHeight","paddingRight","undoScrollbar","iOSfix","iOS","navigator","userAgent","MSStream","platform","maxTouchPoints","iosfix","offset","scrollTop","top","lockBodyScroll","addBottomPaddingForTallPopups","ua","match","webkit","iOSSafari","bottomPanelHeight","paddingBottom","preventTouchMove","ontouchstart","e","shouldPreventTouchMove","ontouchmove","preventDefault","stopPropagation","event","isStylus","isZoom","touches","touchType","undoIOSfix","SHOW_CLASS_TIMEOUT","openPopup","bodyStyles","initialBodyOverflow","overflowY","addClasses$1","setScrollingVisibility","fixScrollContainer","activeElement","swalOpenAnimationFinished","removeEventListener","addEventListener","setProperty","showLoading","buttonToReplace","Swal","replaceButton","parentNode","loading","handleInputOptionsAndValue","handleInputOptions","handleInputValue","getInputValue","getCheckboxValue","getRadioValue","getFileValue","files","processInputOptions","populateInputOptions","formatInputOptions","then","hideLoading","catch","err","renderOption","optionLabel","isSelected","inputOption","optgroup","o","radioValue","radioLabel","radioInput","radioLabelElement","radios","Map","valueFormatted","showRelatedButton","getElementsByClassName","getInput$1","privateMethods","swalPromiseResolve","swalPromiseReject","isVisible$1","clickConfirm","click","clickDeny","clickCancel","removeKeydownHandler","keydownTarget","keydownHandlerAdded","keydownHandler","capture","addKeydownHandler","dismissWith","setFocus","increment","focusableElements","arrowKeysNextButton","arrowKeysPreviousButton","isComposing","keyCode","handleEnter","handleTab","handleArrows","handleEsc","outerHTML","btnIndex","shiftKey","sibling","buttonToFocus","HTMLButtonElement","removePopupAndResetState","triggerDidCloseAndDispose","isSafari","removeBodyClasses","resolveValue","prepareResolveValue","triggerClosePopup","isAwaitingPromise","isDismissed","handleAwaitingPromise","handlePopupAnimation","rejectPromise","delete","_destroy","isConfirmed","isDenied","animationIsSupported","animatePopup","swalCloseEventFinishedCallback","bind","setButtonsDisabled","buttons","setInputDisabled","radiosContainer","enableButtons","disableButtons","enableInput","disableInput","showValidationMessage","inputerror","resetValidationMessage$1","getProgressSteps$1","update","validUpdatableParams","filterValidParams","updatedParams","set","defineProperties","writable","enumerable","disposeSwal","disposeWeakMaps","unsetWeakMaps","obj","instanceMethods","disableLoading","closePopup","closeModal","closeToast","handleConfirmButtonClick","handleConfirmOrDenyWithInput","handleDenyButtonClick","handleCancelButtonClick","handleInputValidator","checkValidity","validationPromise","preDenyPromise","preDenyValue","error$$1","rejectWith","succeedWith","preConfirmPromise","preConfirmValue","handlePopupClick","handleToastClick","handleModalMousedown","handleContainerMousedown","handleModalClick","onclick","isAnyButtonShown","ignoreOutsideClick","onmousedown","onmouseup","isJqueryElement","isElement","Element","argsToParams","args","fire","_len","_key","mixin","mixinParams","MixinSwal","priorityMixinParams","super","_main","getTimerLeft","timeout","stopTimer","resumeTimer","toggleTimer","increaseTimer","increase","isTimerRunning","isRunning","bodyClickListenerAdded","clickHandlers","bindClickHandler","bodyClickListener","staticMethods","enableLoading","SweetAlert","outerParams","constructor","configurable","userParams","prepareParams","populateDomCache","swalPromise","onFulfilled","onFinally","finally","reject","dismiss","setupTimer","initFocus","templateParams","globalState$$1","focusButton","blurActiveElement","blur","language","location","host","noWar","video","version","default","Sweetalert2","swal","sweetAlert"],"mappings":"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","file":"js/chunk-2d0c5394.a031985a.js","sourcesContent":["/*!\n* sweetalert2 v11.4.26\n* Released under the MIT License.\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Sweetalert2 = factory());\n}(this, function () { 'use strict';\n\n const consolePrefix = 'SweetAlert2:';\n /**\n * Filter the unique values into a new array\n *\n * @param {Array} arr\n * @returns {Array}\n */\n\n const uniqueArray = arr => {\n const result = [];\n\n for (let i = 0; i < arr.length; i++) {\n if (result.indexOf(arr[i]) === -1) {\n result.push(arr[i]);\n }\n }\n\n return result;\n };\n /**\n * Capitalize the first letter of a string\n *\n * @param {string} str\n * @returns {string}\n */\n\n const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);\n /**\n * Standardize console warnings\n *\n * @param {string | Array} message\n */\n\n const warn = message => {\n console.warn(\"\".concat(consolePrefix, \" \").concat(typeof message === 'object' ? message.join(' ') : message));\n };\n /**\n * Standardize console errors\n *\n * @param {string} message\n */\n\n const error = message => {\n console.error(\"\".concat(consolePrefix, \" \").concat(message));\n };\n /**\n * Private global state for `warnOnce`\n *\n * @type {Array}\n * @private\n */\n\n const previousWarnOnceMessages = [];\n /**\n * Show a console warning, but only if it hasn't already been shown\n *\n * @param {string} message\n */\n\n const warnOnce = message => {\n if (!previousWarnOnceMessages.includes(message)) {\n previousWarnOnceMessages.push(message);\n warn(message);\n }\n };\n /**\n * Show a one-time console warning about deprecated params/methods\n *\n * @param {string} deprecatedParam\n * @param {string} useInstead\n */\n\n const warnAboutDeprecation = (deprecatedParam, useInstead) => {\n warnOnce(\"\\\"\".concat(deprecatedParam, \"\\\" is deprecated and will be removed in the next major release. Please use \\\"\").concat(useInstead, \"\\\" instead.\"));\n };\n /**\n * If `arg` is a function, call it (with no arguments or context) and return the result.\n * Otherwise, just pass the value through\n *\n * @param {Function | any} arg\n * @returns {any}\n */\n\n const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;\n /**\n * @param {any} arg\n * @returns {boolean}\n */\n\n const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';\n /**\n * @param {any} arg\n * @returns {Promise}\n */\n\n const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);\n /**\n * @param {any} arg\n * @returns {boolean}\n */\n\n const isPromise = arg => arg && Promise.resolve(arg) === arg;\n /**\n * @param {Array} arr\n * @returns {any}\n */\n\n const getRandomElement = arr => arr[Math.floor(Math.random() * arr.length)];\n\n const defaultParams = {\n title: '',\n titleText: '',\n text: '',\n html: '',\n footer: '',\n icon: undefined,\n iconColor: undefined,\n iconHtml: undefined,\n template: undefined,\n toast: false,\n showClass: {\n popup: 'swal2-show',\n backdrop: 'swal2-backdrop-show',\n icon: 'swal2-icon-show'\n },\n hideClass: {\n popup: 'swal2-hide',\n backdrop: 'swal2-backdrop-hide',\n icon: 'swal2-icon-hide'\n },\n customClass: {},\n target: 'body',\n color: undefined,\n backdrop: true,\n heightAuto: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n stopKeydownPropagation: true,\n keydownListenerCapture: false,\n showConfirmButton: true,\n showDenyButton: false,\n showCancelButton: false,\n preConfirm: undefined,\n preDeny: undefined,\n confirmButtonText: 'OK',\n confirmButtonAriaLabel: '',\n confirmButtonColor: undefined,\n denyButtonText: 'No',\n denyButtonAriaLabel: '',\n denyButtonColor: undefined,\n cancelButtonText: 'Cancel',\n cancelButtonAriaLabel: '',\n cancelButtonColor: undefined,\n buttonsStyling: true,\n reverseButtons: false,\n focusConfirm: true,\n focusDeny: false,\n focusCancel: false,\n returnFocus: true,\n showCloseButton: false,\n closeButtonHtml: '×',\n closeButtonAriaLabel: 'Close this dialog',\n loaderHtml: '',\n showLoaderOnConfirm: false,\n showLoaderOnDeny: false,\n imageUrl: undefined,\n imageWidth: undefined,\n imageHeight: undefined,\n imageAlt: '',\n timer: undefined,\n timerProgressBar: false,\n width: undefined,\n padding: undefined,\n background: undefined,\n input: undefined,\n inputPlaceholder: '',\n inputLabel: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputAttributes: {},\n inputValidator: undefined,\n returnInputValueOnDeny: false,\n validationMessage: undefined,\n grow: false,\n position: 'center',\n progressSteps: [],\n currentProgressStep: undefined,\n progressStepsDistance: undefined,\n willOpen: undefined,\n didOpen: undefined,\n didRender: undefined,\n willClose: undefined,\n didClose: undefined,\n didDestroy: undefined,\n scrollbarPadding: true\n };\n const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];\n const deprecatedParams = {};\n const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];\n /**\n * Is valid parameter\n *\n * @param {string} paramName\n * @returns {boolean}\n */\n\n const isValidParameter = paramName => {\n return Object.prototype.hasOwnProperty.call(defaultParams, paramName);\n };\n /**\n * Is valid parameter for Swal.update() method\n *\n * @param {string} paramName\n * @returns {boolean}\n */\n\n const isUpdatableParameter = paramName => {\n return updatableParams.indexOf(paramName) !== -1;\n };\n /**\n * Is deprecated parameter\n *\n * @param {string} paramName\n * @returns {string | undefined}\n */\n\n const isDeprecatedParameter = paramName => {\n return deprecatedParams[paramName];\n };\n /**\n * @param {string} param\n */\n\n const checkIfParamIsValid = param => {\n if (!isValidParameter(param)) {\n warn(\"Unknown parameter \\\"\".concat(param, \"\\\"\"));\n }\n };\n /**\n * @param {string} param\n */\n\n\n const checkIfToastParamIsValid = param => {\n if (toastIncompatibleParams.includes(param)) {\n warn(\"The parameter \\\"\".concat(param, \"\\\" is incompatible with toasts\"));\n }\n };\n /**\n * @param {string} param\n */\n\n\n const checkIfParamIsDeprecated = param => {\n if (isDeprecatedParameter(param)) {\n warnAboutDeprecation(param, isDeprecatedParameter(param));\n }\n };\n /**\n * Show relevant warnings for given params\n *\n * @param {SweetAlertOptions} params\n */\n\n\n const showWarningsForParams = params => {\n if (!params.backdrop && params.allowOutsideClick) {\n warn('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`');\n }\n\n for (const param in params) {\n checkIfParamIsValid(param);\n\n if (params.toast) {\n checkIfToastParamIsValid(param);\n }\n\n checkIfParamIsDeprecated(param);\n }\n };\n\n const swalPrefix = 'swal2-';\n /**\n * @param {string[]} items\n * @returns {object}\n */\n\n const prefix = items => {\n const result = {};\n\n for (const i in items) {\n result[items[i]] = swalPrefix + items[i];\n }\n\n return result;\n };\n const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error', 'no-war']);\n const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);\n\n /**\n * Gets the popup container which contains the backdrop and the popup itself.\n *\n * @returns {HTMLElement | null}\n */\n\n const getContainer = () => document.body.querySelector(\".\".concat(swalClasses.container));\n /**\n * @param {string} selectorString\n * @returns {HTMLElement | null}\n */\n\n const elementBySelector = selectorString => {\n const container = getContainer();\n return container ? container.querySelector(selectorString) : null;\n };\n /**\n * @param {string} className\n * @returns {HTMLElement | null}\n */\n\n const elementByClass = className => {\n return elementBySelector(\".\".concat(className));\n };\n /**\n * @returns {HTMLElement | null}\n */\n\n\n const getPopup = () => elementByClass(swalClasses.popup);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getIcon = () => elementByClass(swalClasses.icon);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getTitle = () => elementByClass(swalClasses.title);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getHtmlContainer = () => elementByClass(swalClasses['html-container']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getImage = () => elementByClass(swalClasses.image);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getValidationMessage = () => elementByClass(swalClasses['validation-message']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getConfirmButton = () => elementBySelector(\".\".concat(swalClasses.actions, \" .\").concat(swalClasses.confirm));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getDenyButton = () => elementBySelector(\".\".concat(swalClasses.actions, \" .\").concat(swalClasses.deny));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getInputLabel = () => elementByClass(swalClasses['input-label']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getLoader = () => elementBySelector(\".\".concat(swalClasses.loader));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getCancelButton = () => elementBySelector(\".\".concat(swalClasses.actions, \" .\").concat(swalClasses.cancel));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getActions = () => elementByClass(swalClasses.actions);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getFooter = () => elementByClass(swalClasses.footer);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js\n\n const focusable = \"\\n a[href],\\n area[href],\\n input:not([disabled]),\\n select:not([disabled]),\\n textarea:not([disabled]),\\n button:not([disabled]),\\n iframe,\\n object,\\n embed,\\n [tabindex=\\\"0\\\"],\\n [contenteditable],\\n audio[controls],\\n video[controls],\\n summary\\n\";\n /**\n * @returns {HTMLElement[]}\n */\n\n const getFocusableElements = () => {\n const focusableElementsWithTabindex = Array.from(getPopup().querySelectorAll('[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])')) // sort according to tabindex\n .sort((a, b) => {\n const tabindexA = parseInt(a.getAttribute('tabindex'));\n const tabindexB = parseInt(b.getAttribute('tabindex'));\n\n if (tabindexA > tabindexB) {\n return 1;\n } else if (tabindexA < tabindexB) {\n return -1;\n }\n\n return 0;\n });\n const otherFocusableElements = Array.from(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');\n return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));\n };\n /**\n * @returns {boolean}\n */\n\n const isModal = () => {\n return hasClass(document.body, swalClasses.shown) && !hasClass(document.body, swalClasses['toast-shown']) && !hasClass(document.body, swalClasses['no-backdrop']);\n };\n /**\n * @returns {boolean}\n */\n\n const isToast = () => {\n return getPopup() && hasClass(getPopup(), swalClasses.toast);\n };\n /**\n * @returns {boolean}\n */\n\n const isLoading = () => {\n return getPopup().hasAttribute('data-loading');\n };\n\n const states = {\n previousBodyPadding: null\n };\n /**\n * Securely set innerHTML of an element\n * https://github.com/sweetalert2/sweetalert2/issues/1926\n *\n * @param {HTMLElement} elem\n * @param {string} html\n */\n\n const setInnerHtml = (elem, html) => {\n elem.textContent = '';\n\n if (html) {\n const parser = new DOMParser();\n const parsed = parser.parseFromString(html, \"text/html\");\n Array.from(parsed.querySelector('head').childNodes).forEach(child => {\n elem.appendChild(child);\n });\n Array.from(parsed.querySelector('body').childNodes).forEach(child => {\n elem.appendChild(child);\n });\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {string} className\n * @returns {boolean}\n */\n\n const hasClass = (elem, className) => {\n if (!className) {\n return false;\n }\n\n const classList = className.split(/\\s+/);\n\n for (let i = 0; i < classList.length; i++) {\n if (!elem.classList.contains(classList[i])) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * @param {HTMLElement} elem\n * @param {SweetAlertOptions} params\n */\n\n const removeCustomClasses = (elem, params) => {\n Array.from(elem.classList).forEach(className => {\n if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {\n elem.classList.remove(className);\n }\n });\n };\n /**\n * @param {HTMLElement} elem\n * @param {SweetAlertOptions} params\n * @param {string} className\n */\n\n\n const applyCustomClass = (elem, params, className) => {\n removeCustomClasses(elem, params);\n\n if (params.customClass && params.customClass[className]) {\n if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {\n return warn(\"Invalid type of customClass.\".concat(className, \"! Expected string or iterable object, got \\\"\").concat(typeof params.customClass[className], \"\\\"\"));\n }\n\n addClass(elem, params.customClass[className]);\n }\n };\n /**\n * @param {HTMLElement} popup\n * @param {import('./renderers/renderInput').InputClass} inputClass\n * @returns {HTMLInputElement | null}\n */\n\n const getInput = (popup, inputClass) => {\n if (!inputClass) {\n return null;\n }\n\n switch (inputClass) {\n case 'select':\n case 'textarea':\n case 'file':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses[inputClass]));\n\n case 'checkbox':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.checkbox, \" input\"));\n\n case 'radio':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.radio, \" input:checked\")) || popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.radio, \" input:first-child\"));\n\n case 'range':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.range, \" input\"));\n\n default:\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.input));\n }\n };\n /**\n * @param {HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement} input\n */\n\n const focusInput = input => {\n input.focus(); // place cursor at end of text in text input\n\n if (input.type !== 'file') {\n // http://stackoverflow.com/a/2345915\n const val = input.value;\n input.value = '';\n input.value = val;\n }\n };\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n * @param {boolean} condition\n */\n\n const toggleClass = (target, classList, condition) => {\n if (!target || !classList) {\n return;\n }\n\n if (typeof classList === 'string') {\n classList = classList.split(/\\s+/).filter(Boolean);\n }\n\n classList.forEach(className => {\n if (Array.isArray(target)) {\n target.forEach(elem => {\n condition ? elem.classList.add(className) : elem.classList.remove(className);\n });\n } else {\n condition ? target.classList.add(className) : target.classList.remove(className);\n }\n });\n };\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n */\n\n const addClass = (target, classList) => {\n toggleClass(target, classList, true);\n };\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n */\n\n const removeClass = (target, classList) => {\n toggleClass(target, classList, false);\n };\n /**\n * Get direct child of an element by class name\n *\n * @param {HTMLElement} elem\n * @param {string} className\n * @returns {HTMLElement | null}\n */\n\n const getDirectChildByClass = (elem, className) => {\n const children = Array.from(elem.children);\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n\n if (child instanceof HTMLElement && hasClass(child, className)) {\n return child;\n }\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {string} property\n * @param {*} value\n */\n\n const applyNumericalStyle = (elem, property, value) => {\n if (value === \"\".concat(parseInt(value))) {\n value = parseInt(value);\n }\n\n if (value || parseInt(value) === 0) {\n elem.style[property] = typeof value === 'number' ? \"\".concat(value, \"px\") : value;\n } else {\n elem.style.removeProperty(property);\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {string} display\n */\n\n const show = function (elem) {\n let display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex';\n elem.style.display = display;\n };\n /**\n * @param {HTMLElement} elem\n */\n\n const hide = elem => {\n elem.style.display = 'none';\n };\n /**\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {string} property\n * @param {string} value\n */\n\n const setStyle = (parent, selector, property, value) => {\n /** @type {HTMLElement} */\n const el = parent.querySelector(selector);\n\n if (el) {\n el.style[property] = value;\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {any} condition\n * @param {string} display\n */\n\n const toggle = function (elem, condition) {\n let display = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'flex';\n condition ? show(elem, display) : hide(elem);\n };\n /**\n * borrowed from jquery $(elem).is(':visible') implementation\n *\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n\n const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));\n /**\n * @returns {boolean}\n */\n\n const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());\n /**\n * @returns {boolean}\n */\n\n const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight);\n /**\n * borrowed from https://stackoverflow.com/a/46352119\n *\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n\n const hasCssAnimation = elem => {\n const style = window.getComputedStyle(elem);\n const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');\n const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');\n return animDuration > 0 || transDuration > 0;\n };\n /**\n * @param {number} timer\n * @param {boolean} reset\n */\n\n const animateTimerProgressBar = function (timer) {\n let reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const timerProgressBar = getTimerProgressBar();\n\n if (isVisible(timerProgressBar)) {\n if (reset) {\n timerProgressBar.style.transition = 'none';\n timerProgressBar.style.width = '100%';\n }\n\n setTimeout(() => {\n timerProgressBar.style.transition = \"width \".concat(timer / 1000, \"s linear\");\n timerProgressBar.style.width = '0%';\n }, 10);\n }\n };\n const stopTimerProgressBar = () => {\n const timerProgressBar = getTimerProgressBar();\n const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);\n timerProgressBar.style.removeProperty('transition');\n timerProgressBar.style.width = '100%';\n const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);\n const timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100;\n timerProgressBar.style.removeProperty('transition');\n timerProgressBar.style.width = \"\".concat(timerProgressBarPercent, \"%\");\n };\n\n /**\n * Detect Node env\n *\n * @returns {boolean}\n */\n const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';\n\n const RESTORE_FOCUS_TIMEOUT = 100;\n\n /** @type {GlobalState} */\n\n const globalState = {};\n\n const focusPreviousActiveElement = () => {\n if (globalState.previousActiveElement instanceof HTMLElement) {\n globalState.previousActiveElement.focus();\n globalState.previousActiveElement = null;\n } else if (document.body) {\n document.body.focus();\n }\n };\n /**\n * Restore previous active (focused) element\n *\n * @param {boolean} returnFocus\n * @returns {Promise}\n */\n\n\n const restoreActiveElement = returnFocus => {\n return new Promise(resolve => {\n if (!returnFocus) {\n return resolve();\n }\n\n const x = window.scrollX;\n const y = window.scrollY;\n globalState.restoreFocusTimeout = setTimeout(() => {\n focusPreviousActiveElement();\n resolve();\n }, RESTORE_FOCUS_TIMEOUT); // issues/900\n\n window.scrollTo(x, y);\n });\n };\n\n const sweetHTML = \"\\n
\\n \\n \\n
\\n \\n

\\n
\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\").replace(/(^|\\n)\\s*/g, '');\n /**\n * @returns {boolean}\n */\n\n const resetOldContainer = () => {\n const oldContainer = getContainer();\n\n if (!oldContainer) {\n return false;\n }\n\n oldContainer.remove();\n removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);\n return true;\n };\n\n const resetValidationMessage = () => {\n globalState.currentInstance.resetValidationMessage();\n };\n\n const addInputChangeListeners = () => {\n const popup = getPopup();\n const input = getDirectChildByClass(popup, swalClasses.input);\n const file = getDirectChildByClass(popup, swalClasses.file);\n /** @type {HTMLInputElement} */\n\n const range = popup.querySelector(\".\".concat(swalClasses.range, \" input\"));\n /** @type {HTMLOutputElement} */\n\n const rangeOutput = popup.querySelector(\".\".concat(swalClasses.range, \" output\"));\n const select = getDirectChildByClass(popup, swalClasses.select);\n /** @type {HTMLInputElement} */\n\n const checkbox = popup.querySelector(\".\".concat(swalClasses.checkbox, \" input\"));\n const textarea = getDirectChildByClass(popup, swalClasses.textarea);\n input.oninput = resetValidationMessage;\n file.onchange = resetValidationMessage;\n select.onchange = resetValidationMessage;\n checkbox.onchange = resetValidationMessage;\n textarea.oninput = resetValidationMessage;\n\n range.oninput = () => {\n resetValidationMessage();\n rangeOutput.value = range.value;\n };\n\n range.onchange = () => {\n resetValidationMessage();\n rangeOutput.value = range.value;\n };\n };\n /**\n * @param {string | HTMLElement} target\n * @returns {HTMLElement}\n */\n\n\n const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;\n /**\n * @param {SweetAlertOptions} params\n */\n\n\n const setupAccessibility = params => {\n const popup = getPopup();\n popup.setAttribute('role', params.toast ? 'alert' : 'dialog');\n popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');\n\n if (!params.toast) {\n popup.setAttribute('aria-modal', 'true');\n }\n };\n /**\n * @param {HTMLElement} targetElement\n */\n\n\n const setupRTL = targetElement => {\n if (window.getComputedStyle(targetElement).direction === 'rtl') {\n addClass(getContainer(), swalClasses.rtl);\n }\n };\n /**\n * Add modal + backdrop + no-war message for Russians to DOM\n *\n * @param {SweetAlertOptions} params\n */\n\n\n const init = params => {\n // Clean up the old popup container if it exists\n const oldContainerExisted = resetOldContainer();\n /* istanbul ignore if */\n\n if (isNodeEnv()) {\n error('SweetAlert2 requires document to initialize');\n return;\n }\n\n const container = document.createElement('div');\n container.className = swalClasses.container;\n\n if (oldContainerExisted) {\n addClass(container, swalClasses['no-transition']);\n }\n\n setInnerHtml(container, sweetHTML);\n const targetElement = getTarget(params.target);\n targetElement.appendChild(container);\n setupAccessibility(params);\n setupRTL(targetElement);\n addInputChangeListeners();\n };\n\n /**\n * @param {HTMLElement | object | string} param\n * @param {HTMLElement} target\n */\n\n const parseHtmlToContainer = (param, target) => {\n // DOM element\n if (param instanceof HTMLElement) {\n target.appendChild(param);\n } // Object\n else if (typeof param === 'object') {\n handleObject(param, target);\n } // Plain string\n else if (param) {\n setInnerHtml(target, param);\n }\n };\n /**\n * @param {object} param\n * @param {HTMLElement} target\n */\n\n const handleObject = (param, target) => {\n // JQuery element(s)\n if (param.jquery) {\n handleJqueryElem(target, param);\n } // For other objects use their string representation\n else {\n setInnerHtml(target, param.toString());\n }\n };\n /**\n * @param {HTMLElement} target\n * @param {HTMLElement} elem\n */\n\n\n const handleJqueryElem = (target, elem) => {\n target.textContent = '';\n\n if (0 in elem) {\n for (let i = 0; (i in elem); i++) {\n target.appendChild(elem[i].cloneNode(true));\n }\n } else {\n target.appendChild(elem.cloneNode(true));\n }\n };\n\n /**\n * @returns {'webkitAnimationEnd' | 'animationend' | false}\n */\n\n const animationEndEvent = (() => {\n // Prevent run in Node env\n\n /* istanbul ignore if */\n if (isNodeEnv()) {\n return false;\n }\n\n const testEl = document.createElement('div');\n const transEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n // Chrome, Safari and Opera\n animation: 'animationend' // Standard syntax\n\n };\n\n for (const i in transEndEventNames) {\n if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {\n return transEndEventNames[i];\n }\n }\n\n return false;\n })();\n\n /**\n * Measure scrollbar width for padding body during modal show/hide\n * https://github.com/twbs/bootstrap/blob/master/js/src/modal.js\n *\n * @returns {number}\n */\n\n const measureScrollbar = () => {\n const scrollDiv = document.createElement('div');\n scrollDiv.className = swalClasses['scrollbar-measure'];\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderActions = (instance, params) => {\n const actions = getActions();\n const loader = getLoader(); // Actions (buttons) wrapper\n\n if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {\n hide(actions);\n } else {\n show(actions);\n } // Custom class\n\n\n applyCustomClass(actions, params, 'actions'); // Render all the buttons\n\n renderButtons(actions, loader, params); // Loader\n\n setInnerHtml(loader, params.loaderHtml);\n applyCustomClass(loader, params, 'loader');\n };\n /**\n * @param {HTMLElement} actions\n * @param {HTMLElement} loader\n * @param {SweetAlertOptions} params\n */\n\n function renderButtons(actions, loader, params) {\n const confirmButton = getConfirmButton();\n const denyButton = getDenyButton();\n const cancelButton = getCancelButton(); // Render buttons\n\n renderButton(confirmButton, 'confirm', params);\n renderButton(denyButton, 'deny', params);\n renderButton(cancelButton, 'cancel', params);\n handleButtonsStyling(confirmButton, denyButton, cancelButton, params);\n\n if (params.reverseButtons) {\n if (params.toast) {\n actions.insertBefore(cancelButton, confirmButton);\n actions.insertBefore(denyButton, confirmButton);\n } else {\n actions.insertBefore(cancelButton, loader);\n actions.insertBefore(denyButton, loader);\n actions.insertBefore(confirmButton, loader);\n }\n }\n }\n /**\n * @param {HTMLElement} confirmButton\n * @param {HTMLElement} denyButton\n * @param {HTMLElement} cancelButton\n * @param {SweetAlertOptions} params\n */\n\n\n function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {\n if (!params.buttonsStyling) {\n return removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);\n }\n\n addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors\n\n if (params.confirmButtonColor) {\n confirmButton.style.backgroundColor = params.confirmButtonColor;\n addClass(confirmButton, swalClasses['default-outline']);\n }\n\n if (params.denyButtonColor) {\n denyButton.style.backgroundColor = params.denyButtonColor;\n addClass(denyButton, swalClasses['default-outline']);\n }\n\n if (params.cancelButtonColor) {\n cancelButton.style.backgroundColor = params.cancelButtonColor;\n addClass(cancelButton, swalClasses['default-outline']);\n }\n }\n /**\n * @param {HTMLElement} button\n * @param {'confirm' | 'deny' | 'cancel'} buttonType\n * @param {SweetAlertOptions} params\n */\n\n\n function renderButton(button, buttonType, params) {\n toggle(button, params[\"show\".concat(capitalizeFirstLetter(buttonType), \"Button\")], 'inline-block');\n setInnerHtml(button, params[\"\".concat(buttonType, \"ButtonText\")]); // Set caption text\n\n button.setAttribute('aria-label', params[\"\".concat(buttonType, \"ButtonAriaLabel\")]); // ARIA label\n // Add buttons custom classes\n\n button.className = swalClasses[buttonType];\n applyCustomClass(button, params, \"\".concat(buttonType, \"Button\"));\n addClass(button, params[\"\".concat(buttonType, \"ButtonClass\")]);\n }\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderContainer = (instance, params) => {\n const container = getContainer();\n\n if (!container) {\n return;\n }\n\n handleBackdropParam(container, params.backdrop);\n handlePositionParam(container, params.position);\n handleGrowParam(container, params.grow); // Custom class\n\n applyCustomClass(container, params, 'container');\n };\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['backdrop']} backdrop\n */\n\n function handleBackdropParam(container, backdrop) {\n if (typeof backdrop === 'string') {\n container.style.background = backdrop;\n } else if (!backdrop) {\n addClass([document.documentElement, document.body], swalClasses['no-backdrop']);\n }\n }\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['position']} position\n */\n\n\n function handlePositionParam(container, position) {\n if (position in swalClasses) {\n addClass(container, swalClasses[position]);\n } else {\n warn('The \"position\" parameter is not valid, defaulting to \"center\"');\n addClass(container, swalClasses.center);\n }\n }\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['grow']} grow\n */\n\n\n function handleGrowParam(container, grow) {\n if (grow && typeof grow === 'string') {\n const growClass = \"grow-\".concat(grow);\n\n if (growClass in swalClasses) {\n addClass(container, swalClasses[growClass]);\n }\n }\n }\n\n /**\n * This module contains `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateProps = {\n awaitingPromise: new WeakMap(),\n promise: new WeakMap(),\n innerParams: new WeakMap(),\n domCache: new WeakMap()\n };\n\n /// \n /** @type {InputClass[]} */\n\n const inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderInput = (instance, params) => {\n const popup = getPopup();\n const innerParams = privateProps.innerParams.get(instance);\n const rerender = !innerParams || params.input !== innerParams.input;\n inputClasses.forEach(inputClass => {\n const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); // set attributes\n\n setAttributes(inputClass, params.inputAttributes); // set class\n\n inputContainer.className = swalClasses[inputClass];\n\n if (rerender) {\n hide(inputContainer);\n }\n });\n\n if (params.input) {\n if (rerender) {\n showInput(params);\n } // set custom class\n\n\n setCustomClass(params);\n }\n };\n /**\n * @param {SweetAlertOptions} params\n */\n\n const showInput = params => {\n if (!renderInputType[params.input]) {\n return error(\"Unexpected type of input! Expected \\\"text\\\", \\\"email\\\", \\\"password\\\", \\\"number\\\", \\\"tel\\\", \\\"select\\\", \\\"radio\\\", \\\"checkbox\\\", \\\"textarea\\\", \\\"file\\\" or \\\"url\\\", got \\\"\".concat(params.input, \"\\\"\"));\n }\n\n const inputContainer = getInputContainer(params.input);\n const input = renderInputType[params.input](inputContainer, params);\n show(inputContainer); // input autofocus\n\n setTimeout(() => {\n focusInput(input);\n });\n };\n /**\n * @param {HTMLInputElement} input\n */\n\n\n const removeAttributes = input => {\n for (let i = 0; i < input.attributes.length; i++) {\n const attrName = input.attributes[i].name;\n\n if (!['type', 'value', 'style'].includes(attrName)) {\n input.removeAttribute(attrName);\n }\n }\n };\n /**\n * @param {InputClass} inputClass\n * @param {SweetAlertOptions['inputAttributes']} inputAttributes\n */\n\n\n const setAttributes = (inputClass, inputAttributes) => {\n const input = getInput(getPopup(), inputClass);\n\n if (!input) {\n return;\n }\n\n removeAttributes(input);\n\n for (const attr in inputAttributes) {\n input.setAttribute(attr, inputAttributes[attr]);\n }\n };\n /**\n * @param {SweetAlertOptions} params\n */\n\n\n const setCustomClass = params => {\n const inputContainer = getInputContainer(params.input);\n\n if (typeof params.customClass === 'object') {\n addClass(inputContainer, params.customClass.input);\n }\n };\n /**\n * @param {HTMLInputElement | HTMLTextAreaElement} input\n * @param {SweetAlertOptions} params\n */\n\n\n const setInputPlaceholder = (input, params) => {\n if (!input.placeholder || params.inputPlaceholder) {\n input.placeholder = params.inputPlaceholder;\n }\n };\n /**\n * @param {Input} input\n * @param {Input} prependTo\n * @param {SweetAlertOptions} params\n */\n\n\n const setInputLabel = (input, prependTo, params) => {\n if (params.inputLabel) {\n input.id = swalClasses.input;\n const label = document.createElement('label');\n const labelClass = swalClasses['input-label'];\n label.setAttribute('for', input.id);\n label.className = labelClass;\n\n if (typeof params.customClass === 'object') {\n addClass(label, params.customClass.inputLabel);\n }\n\n label.innerText = params.inputLabel;\n prependTo.insertAdjacentElement('beforebegin', label);\n }\n };\n /**\n * @param {SweetAlertOptions['input']} inputType\n * @returns {HTMLElement}\n */\n\n\n const getInputContainer = inputType => {\n return getDirectChildByClass(getPopup(), swalClasses[inputType] || swalClasses.input);\n };\n /**\n * @param {HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement} input\n * @param {SweetAlertOptions['inputValue']} inputValue\n */\n\n\n const checkAndSetInputValue = (input, inputValue) => {\n if (['string', 'number'].includes(typeof inputValue)) {\n input.value = \"\".concat(inputValue);\n } else if (!isPromise(inputValue)) {\n warn(\"Unexpected type of inputValue! Expected \\\"string\\\", \\\"number\\\" or \\\"Promise\\\", got \\\"\".concat(typeof inputValue, \"\\\"\"));\n }\n };\n /** @type Record Input> */\n\n\n const renderInputType = {};\n /**\n * @param {HTMLInputElement} input\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {\n checkAndSetInputValue(input, params.inputValue);\n setInputLabel(input, input, params);\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n /**\n * @param {HTMLInputElement} input\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.file = (input, params) => {\n setInputLabel(input, input, params);\n setInputPlaceholder(input, params);\n return input;\n };\n /**\n * @param {HTMLInputElement} range\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.range = (range, params) => {\n const rangeInput = range.querySelector('input');\n const rangeOutput = range.querySelector('output');\n checkAndSetInputValue(rangeInput, params.inputValue);\n rangeInput.type = params.input;\n checkAndSetInputValue(rangeOutput, params.inputValue);\n setInputLabel(rangeInput, range, params);\n return range;\n };\n /**\n * @param {HTMLSelectElement} select\n * @param {SweetAlertOptions} params\n * @returns {HTMLSelectElement}\n */\n\n\n renderInputType.select = (select, params) => {\n select.textContent = '';\n\n if (params.inputPlaceholder) {\n const placeholder = document.createElement('option');\n setInnerHtml(placeholder, params.inputPlaceholder);\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n\n setInputLabel(select, select, params);\n return select;\n };\n /**\n * @param {HTMLInputElement} radio\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.radio = radio => {\n radio.textContent = '';\n return radio;\n };\n /**\n * @param {HTMLLabelElement} checkboxContainer\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.checkbox = (checkboxContainer, params) => {\n const checkbox = getInput(getPopup(), 'checkbox');\n checkbox.value = '1';\n checkbox.id = swalClasses.checkbox;\n checkbox.checked = Boolean(params.inputValue);\n const label = checkboxContainer.querySelector('span');\n setInnerHtml(label, params.inputPlaceholder);\n return checkbox;\n };\n /**\n * @param {HTMLTextAreaElement} textarea\n * @param {SweetAlertOptions} params\n * @returns {HTMLTextAreaElement}\n */\n\n\n renderInputType.textarea = (textarea, params) => {\n checkAndSetInputValue(textarea, params.inputValue);\n setInputPlaceholder(textarea, params);\n setInputLabel(textarea, textarea, params);\n /**\n * @param {HTMLElement} el\n * @returns {number}\n */\n\n const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); // https://github.com/sweetalert2/sweetalert2/issues/2291\n\n\n setTimeout(() => {\n // https://github.com/sweetalert2/sweetalert2/issues/1699\n if ('MutationObserver' in window) {\n const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);\n\n const textareaResizeHandler = () => {\n const textareaWidth = textarea.offsetWidth + getMargin(textarea);\n\n if (textareaWidth > initialPopupWidth) {\n getPopup().style.width = \"\".concat(textareaWidth, \"px\");\n } else {\n getPopup().style.width = null;\n }\n };\n\n new MutationObserver(textareaResizeHandler).observe(textarea, {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n });\n return textarea;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderContent = (instance, params) => {\n const htmlContainer = getHtmlContainer();\n applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML\n\n if (params.html) {\n parseHtmlToContainer(params.html, htmlContainer);\n show(htmlContainer, 'block');\n } // Content as plain text\n else if (params.text) {\n htmlContainer.textContent = params.text;\n show(htmlContainer, 'block');\n } // No content\n else {\n hide(htmlContainer);\n }\n\n renderInput(instance, params);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderFooter = (instance, params) => {\n const footer = getFooter();\n toggle(footer, params.footer);\n\n if (params.footer) {\n parseHtmlToContainer(params.footer, footer);\n } // Custom class\n\n\n applyCustomClass(footer, params, 'footer');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderCloseButton = (instance, params) => {\n const closeButton = getCloseButton();\n setInnerHtml(closeButton, params.closeButtonHtml); // Custom class\n\n applyCustomClass(closeButton, params, 'closeButton');\n toggle(closeButton, params.showCloseButton);\n closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderIcon = (instance, params) => {\n const innerParams = privateProps.innerParams.get(instance);\n const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon\n\n if (innerParams && params.icon === innerParams.icon) {\n // Custom or default content\n setContent(icon, params);\n applyStyles(icon, params);\n return;\n }\n\n if (!params.icon && !params.iconHtml) {\n hide(icon);\n return;\n }\n\n if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {\n error(\"Unknown icon! Expected \\\"success\\\", \\\"error\\\", \\\"warning\\\", \\\"info\\\" or \\\"question\\\", got \\\"\".concat(params.icon, \"\\\"\"));\n hide(icon);\n return;\n }\n\n show(icon); // Custom or default content\n\n setContent(icon, params);\n applyStyles(icon, params); // Animate icon\n\n addClass(icon, params.showClass.icon);\n };\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n\n const applyStyles = (icon, params) => {\n for (const iconType in iconTypes) {\n if (params.icon !== iconType) {\n removeClass(icon, iconTypes[iconType]);\n }\n }\n\n addClass(icon, iconTypes[params.icon]); // Icon color\n\n setColor(icon, params); // Success icon background color\n\n adjustSuccessIconBackgroundColor(); // Custom class\n\n applyCustomClass(icon, params, 'icon');\n }; // Adjust success icon background color to match the popup background color\n\n\n const adjustSuccessIconBackgroundColor = () => {\n const popup = getPopup();\n const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');\n /** @type {NodeListOf} */\n\n const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');\n\n for (let i = 0; i < successIconParts.length; i++) {\n successIconParts[i].style.backgroundColor = popupBackgroundColor;\n }\n };\n\n const successIconHtml = \"\\n
\\n \\n
\\n
\\n\";\n const errorIconHtml = \"\\n \\n \\n \\n \\n\";\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n\n const setContent = (icon, params) => {\n let oldContent = icon.innerHTML;\n let newContent;\n\n if (params.iconHtml) {\n newContent = iconContent(params.iconHtml);\n } else if (params.icon === 'success') {\n newContent = successIconHtml;\n oldContent = oldContent.replace(/ style=\".*?\"/g, ''); // undo adjustSuccessIconBackgroundColor()\n } else if (params.icon === 'error') {\n newContent = errorIconHtml;\n } else {\n const defaultIconHtml = {\n question: '?',\n warning: '!',\n info: 'i'\n };\n newContent = iconContent(defaultIconHtml[params.icon]);\n }\n\n if (oldContent.trim() !== newContent.trim()) {\n setInnerHtml(icon, newContent);\n }\n };\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n\n\n const setColor = (icon, params) => {\n if (!params.iconColor) {\n return;\n }\n\n icon.style.color = params.iconColor;\n icon.style.borderColor = params.iconColor;\n\n for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {\n setStyle(icon, sel, 'backgroundColor', params.iconColor);\n }\n\n setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);\n };\n /**\n * @param {string} content\n * @returns {string}\n */\n\n\n const iconContent = content => \"
\").concat(content, \"
\");\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderImage = (instance, params) => {\n const image = getImage();\n\n if (!params.imageUrl) {\n return hide(image);\n }\n\n show(image, ''); // Src, alt\n\n image.setAttribute('src', params.imageUrl);\n image.setAttribute('alt', params.imageAlt); // Width, height\n\n applyNumericalStyle(image, 'width', params.imageWidth);\n applyNumericalStyle(image, 'height', params.imageHeight); // Class\n\n image.className = swalClasses.image;\n applyCustomClass(image, params, 'image');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderProgressSteps = (instance, params) => {\n const progressStepsContainer = getProgressSteps();\n\n if (!params.progressSteps || params.progressSteps.length === 0) {\n return hide(progressStepsContainer);\n }\n\n show(progressStepsContainer);\n progressStepsContainer.textContent = '';\n\n if (params.currentProgressStep >= params.progressSteps.length) {\n warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n\n params.progressSteps.forEach((step, index) => {\n const stepEl = createStepElement(step);\n progressStepsContainer.appendChild(stepEl);\n\n if (index === params.currentProgressStep) {\n addClass(stepEl, swalClasses['active-progress-step']);\n }\n\n if (index !== params.progressSteps.length - 1) {\n const lineEl = createLineElement(params);\n progressStepsContainer.appendChild(lineEl);\n }\n });\n };\n /**\n * @param {string} step\n * @returns {HTMLLIElement}\n */\n\n const createStepElement = step => {\n const stepEl = document.createElement('li');\n addClass(stepEl, swalClasses['progress-step']);\n setInnerHtml(stepEl, step);\n return stepEl;\n };\n /**\n * @param {SweetAlertOptions} params\n * @returns {HTMLLIElement}\n */\n\n\n const createLineElement = params => {\n const lineEl = document.createElement('li');\n addClass(lineEl, swalClasses['progress-step-line']);\n\n if (params.progressStepsDistance) {\n applyNumericalStyle(lineEl, 'width', params.progressStepsDistance);\n }\n\n return lineEl;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderTitle = (instance, params) => {\n const title = getTitle();\n toggle(title, params.title || params.titleText, 'block');\n\n if (params.title) {\n parseHtmlToContainer(params.title, title);\n }\n\n if (params.titleText) {\n title.innerText = params.titleText;\n } // Custom class\n\n\n applyCustomClass(title, params, 'title');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderPopup = (instance, params) => {\n const container = getContainer();\n const popup = getPopup(); // Width\n // https://github.com/sweetalert2/sweetalert2/issues/2170\n\n if (params.toast) {\n applyNumericalStyle(container, 'width', params.width);\n popup.style.width = '100%';\n popup.insertBefore(getLoader(), getIcon());\n } else {\n applyNumericalStyle(popup, 'width', params.width);\n } // Padding\n\n\n applyNumericalStyle(popup, 'padding', params.padding); // Color\n\n if (params.color) {\n popup.style.color = params.color;\n } // Background\n\n\n if (params.background) {\n popup.style.background = params.background;\n }\n\n hide(getValidationMessage()); // Classes\n\n addClasses(popup, params);\n };\n /**\n * @param {HTMLElement} popup\n * @param {SweetAlertOptions} params\n */\n\n const addClasses = (popup, params) => {\n // Default Class + showClass when updating Swal.update({})\n popup.className = \"\".concat(swalClasses.popup, \" \").concat(isVisible(popup) ? params.showClass.popup : '');\n\n if (params.toast) {\n addClass([document.documentElement, document.body], swalClasses['toast-shown']);\n addClass(popup, swalClasses.toast);\n } else {\n addClass(popup, swalClasses.modal);\n } // Custom class\n\n\n applyCustomClass(popup, params, 'popup');\n\n if (typeof params.customClass === 'string') {\n addClass(popup, params.customClass);\n } // Icon class (#1842)\n\n\n if (params.icon) {\n addClass(popup, swalClasses[\"icon-\".concat(params.icon)]);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const render = (instance, params) => {\n renderPopup(instance, params);\n renderContainer(instance, params);\n renderProgressSteps(instance, params);\n renderIcon(instance, params);\n renderImage(instance, params);\n renderTitle(instance, params);\n renderCloseButton(instance, params);\n renderContent(instance, params);\n renderActions(instance, params);\n renderFooter(instance, params);\n\n if (typeof params.didRender === 'function') {\n params.didRender(getPopup());\n }\n };\n\n const DismissReason = Object.freeze({\n cancel: 'cancel',\n backdrop: 'backdrop',\n close: 'close',\n esc: 'esc',\n timer: 'timer'\n });\n\n // Adding aria-hidden=\"true\" to elements outside of the active modal dialog ensures that\n // elements not within the active modal dialog will not be surfaced if a user opens a screen\n // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.\n\n const setAriaHidden = () => {\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach(el => {\n if (el === getContainer() || el.contains(getContainer())) {\n return;\n }\n\n if (el.hasAttribute('aria-hidden')) {\n el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));\n }\n\n el.setAttribute('aria-hidden', 'true');\n });\n };\n const unsetAriaHidden = () => {\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach(el => {\n if (el.hasAttribute('data-previous-aria-hidden')) {\n el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));\n el.removeAttribute('data-previous-aria-hidden');\n } else {\n el.removeAttribute('aria-hidden');\n }\n });\n };\n\n const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];\n const getTemplateParams = params => {\n const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;\n\n if (!template) {\n return {};\n }\n /** @type {DocumentFragment} */\n\n\n const templateContent = template.content;\n showWarningsForElements(templateContent);\n const result = Object.assign(getSwalParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n */\n\n const getSwalParams = templateContent => {\n const result = {};\n /** @type {HTMLElement[]} */\n\n const swalParams = Array.from(templateContent.querySelectorAll('swal-param'));\n swalParams.forEach(param => {\n showWarningsForAttributes(param, ['name', 'value']);\n const paramName = param.getAttribute('name');\n const value = param.getAttribute('value');\n\n if (typeof defaultParams[paramName] === 'boolean' && value === 'false') {\n result[paramName] = false;\n }\n\n if (typeof defaultParams[paramName] === 'object') {\n result[paramName] = JSON.parse(value);\n }\n });\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n */\n\n\n const getSwalButtons = templateContent => {\n const result = {};\n /** @type {HTMLElement[]} */\n\n const swalButtons = Array.from(templateContent.querySelectorAll('swal-button'));\n swalButtons.forEach(button => {\n showWarningsForAttributes(button, ['type', 'color', 'aria-label']);\n const type = button.getAttribute('type');\n result[\"\".concat(type, \"ButtonText\")] = button.innerHTML;\n result[\"show\".concat(capitalizeFirstLetter(type), \"Button\")] = true;\n\n if (button.hasAttribute('color')) {\n result[\"\".concat(type, \"ButtonColor\")] = button.getAttribute('color');\n }\n\n if (button.hasAttribute('aria-label')) {\n result[\"\".concat(type, \"ButtonAriaLabel\")] = button.getAttribute('aria-label');\n }\n });\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n */\n\n\n const getSwalImage = templateContent => {\n const result = {};\n /** @type {HTMLElement} */\n\n const image = templateContent.querySelector('swal-image');\n\n if (image) {\n showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);\n\n if (image.hasAttribute('src')) {\n result.imageUrl = image.getAttribute('src');\n }\n\n if (image.hasAttribute('width')) {\n result.imageWidth = image.getAttribute('width');\n }\n\n if (image.hasAttribute('height')) {\n result.imageHeight = image.getAttribute('height');\n }\n\n if (image.hasAttribute('alt')) {\n result.imageAlt = image.getAttribute('alt');\n }\n }\n\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n */\n\n\n const getSwalIcon = templateContent => {\n const result = {};\n /** @type {HTMLElement} */\n\n const icon = templateContent.querySelector('swal-icon');\n\n if (icon) {\n showWarningsForAttributes(icon, ['type', 'color']);\n\n if (icon.hasAttribute('type')) {\n result.icon = icon.getAttribute('type');\n }\n\n if (icon.hasAttribute('color')) {\n result.iconColor = icon.getAttribute('color');\n }\n\n result.iconHtml = icon.innerHTML;\n }\n\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n */\n\n\n const getSwalInput = templateContent => {\n const result = {};\n /** @type {HTMLElement} */\n\n const input = templateContent.querySelector('swal-input');\n\n if (input) {\n showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);\n result.input = input.getAttribute('type') || 'text';\n\n if (input.hasAttribute('label')) {\n result.inputLabel = input.getAttribute('label');\n }\n\n if (input.hasAttribute('placeholder')) {\n result.inputPlaceholder = input.getAttribute('placeholder');\n }\n\n if (input.hasAttribute('value')) {\n result.inputValue = input.getAttribute('value');\n }\n }\n /** @type {HTMLElement[]} */\n\n\n const inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option'));\n\n if (inputOptions.length) {\n result.inputOptions = {};\n inputOptions.forEach(option => {\n showWarningsForAttributes(option, ['value']);\n const optionValue = option.getAttribute('value');\n const optionName = option.innerHTML;\n result.inputOptions[optionValue] = optionName;\n });\n }\n\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n * @param {string[]} paramNames\n */\n\n\n const getSwalStringParams = (templateContent, paramNames) => {\n const result = {};\n\n for (const i in paramNames) {\n const paramName = paramNames[i];\n /** @type {HTMLElement} */\n\n const tag = templateContent.querySelector(paramName);\n\n if (tag) {\n showWarningsForAttributes(tag, []);\n result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();\n }\n }\n\n return result;\n };\n /**\n * @param {DocumentFragment} templateContent\n */\n\n\n const showWarningsForElements = templateContent => {\n const allowedElements = swalStringParams.concat(['swal-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);\n Array.from(templateContent.children).forEach(el => {\n const tagName = el.tagName.toLowerCase();\n\n if (allowedElements.indexOf(tagName) === -1) {\n warn(\"Unrecognized element <\".concat(tagName, \">\"));\n }\n });\n };\n /**\n * @param {HTMLElement} el\n * @param {string[]} allowedAttributes\n */\n\n\n const showWarningsForAttributes = (el, allowedAttributes) => {\n Array.from(el.attributes).forEach(attribute => {\n if (allowedAttributes.indexOf(attribute.name) === -1) {\n warn([\"Unrecognized attribute \\\"\".concat(attribute.name, \"\\\" on <\").concat(el.tagName.toLowerCase(), \">.\"), \"\".concat(allowedAttributes.length ? \"Allowed attributes are: \".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]);\n }\n });\n };\n\n var defaultInputValidators = {\n /**\n * @param {string} string\n * @param {string} validationMessage\n * @returns {Promise}\n */\n email: (string, validationMessage) => {\n return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');\n },\n\n /**\n * @param {string} string\n * @param {string} validationMessage\n * @returns {Promise}\n */\n url: (string, validationMessage) => {\n // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013\n return /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-z]{2,63}\\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');\n }\n };\n\n /**\n * @param {SweetAlertOptions} params\n */\n\n function setDefaultInputValidators(params) {\n // Use default `inputValidator` for supported input types if not provided\n if (!params.inputValidator) {\n Object.keys(defaultInputValidators).forEach(key => {\n if (params.input === key) {\n params.inputValidator = defaultInputValidators[key];\n }\n });\n }\n }\n /**\n * @param {SweetAlertOptions} params\n */\n\n\n function validateCustomTargetElement(params) {\n // Determine if the custom target element is valid\n if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {\n warn('Target parameter is not valid, defaulting to \"body\"');\n params.target = 'body';\n }\n }\n /**\n * Set type, text and actions on popup\n *\n * @param {SweetAlertOptions} params\n */\n\n\n function setParameters(params) {\n setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm\n\n if (params.showLoaderOnConfirm && !params.preConfirm) {\n warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\\n' + 'https://sweetalert2.github.io/#ajax-request');\n }\n\n validateCustomTargetElement(params); // Replace newlines with
in title\n\n if (typeof params.title === 'string') {\n params.title = params.title.split('\\n').join('
');\n }\n\n init(params);\n }\n\n class Timer {\n constructor(callback, delay) {\n this.callback = callback;\n this.remaining = delay;\n this.running = false;\n this.start();\n }\n\n start() {\n if (!this.running) {\n this.running = true;\n this.started = new Date();\n this.id = setTimeout(this.callback, this.remaining);\n }\n\n return this.remaining;\n }\n\n stop() {\n if (this.running) {\n this.running = false;\n clearTimeout(this.id);\n this.remaining -= new Date().getTime() - this.started.getTime();\n }\n\n return this.remaining;\n }\n\n increase(n) {\n const running = this.running;\n\n if (running) {\n this.stop();\n }\n\n this.remaining += n;\n\n if (running) {\n this.start();\n }\n\n return this.remaining;\n }\n\n getTimerLeft() {\n if (this.running) {\n this.stop();\n this.start();\n }\n\n return this.remaining;\n }\n\n isRunning() {\n return this.running;\n }\n\n }\n\n const fixScrollbar = () => {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n } // if the body has overflow\n\n\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding + measureScrollbar(), \"px\");\n }\n };\n const undoScrollbar = () => {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding, \"px\");\n states.previousBodyPadding = null;\n }\n };\n\n /* istanbul ignore file */\n\n const iOSfix = () => {\n const iOS = // @ts-ignore\n /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n const offset = document.body.scrollTop;\n document.body.style.top = \"\".concat(offset * -1, \"px\");\n addClass(document.body, swalClasses.iosfix);\n lockBodyScroll();\n addBottomPaddingForTallPopups();\n }\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1948\n */\n\n const addBottomPaddingForTallPopups = () => {\n const ua = navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n const iOSSafari = iOS && webkit && !ua.match(/CriOS/i);\n\n if (iOSSafari) {\n const bottomPanelHeight = 44;\n\n if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {\n getContainer().style.paddingBottom = \"\".concat(bottomPanelHeight, \"px\");\n }\n }\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1246\n */\n\n\n const lockBodyScroll = () => {\n const container = getContainer();\n let preventTouchMove;\n\n container.ontouchstart = e => {\n preventTouchMove = shouldPreventTouchMove(e);\n };\n\n container.ontouchmove = e => {\n if (preventTouchMove) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n };\n\n const shouldPreventTouchMove = event => {\n const target = event.target;\n const container = getContainer();\n\n if (isStylus(event) || isZoom(event)) {\n return false;\n }\n\n if (target === container) {\n return true;\n }\n\n if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603\n target.tagName !== 'TEXTAREA' && // #2266\n !(isScrollable(getHtmlContainer()) && // #1944\n getHtmlContainer().contains(target))) {\n return true;\n }\n\n return false;\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1786\n *\n * @param {*} event\n * @returns {boolean}\n */\n\n\n const isStylus = event => {\n return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1891\n *\n * @param {TouchEvent} event\n * @returns {boolean}\n */\n\n\n const isZoom = event => {\n return event.touches && event.touches.length > 1;\n };\n\n const undoIOSfix = () => {\n if (hasClass(document.body, swalClasses.iosfix)) {\n const offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n }\n };\n\n const SHOW_CLASS_TIMEOUT = 10;\n /**\n * Open popup, add necessary classes and styles, fix scrollbar\n *\n * @param params\n */\n\n const openPopup = params => {\n const container = getContainer();\n const popup = getPopup();\n\n if (typeof params.willOpen === 'function') {\n params.willOpen(popup);\n }\n\n const bodyStyles = window.getComputedStyle(document.body);\n const initialBodyOverflow = bodyStyles.overflowY;\n addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto'\n\n setTimeout(() => {\n setScrollingVisibility(container, popup);\n }, SHOW_CLASS_TIMEOUT);\n\n if (isModal()) {\n fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);\n setAriaHidden();\n }\n\n if (!isToast() && !globalState.previousActiveElement) {\n globalState.previousActiveElement = document.activeElement;\n }\n\n if (typeof params.didOpen === 'function') {\n setTimeout(() => params.didOpen(popup));\n }\n\n removeClass(container, swalClasses['no-transition']);\n };\n\n const swalOpenAnimationFinished = event => {\n const popup = getPopup();\n\n if (event.target !== popup) {\n return;\n }\n\n const container = getContainer();\n popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);\n container.style.overflowY = 'auto';\n };\n\n const setScrollingVisibility = (container, popup) => {\n if (animationEndEvent && hasCssAnimation(popup)) {\n container.style.overflowY = 'hidden';\n popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);\n } else {\n container.style.overflowY = 'auto';\n }\n };\n\n const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {\n iOSfix();\n\n if (scrollbarPadding && initialBodyOverflow !== 'hidden') {\n fixScrollbar();\n } // sweetalert2/issues/1247\n\n\n setTimeout(() => {\n container.scrollTop = 0;\n });\n };\n\n const addClasses$1 = (container, popup, params) => {\n addClass(container, params.showClass.backdrop); // this workaround with opacity is needed for https://github.com/sweetalert2/sweetalert2/issues/2059\n\n popup.style.setProperty('opacity', '0', 'important');\n show(popup, 'grid');\n setTimeout(() => {\n // Animate popup right after showing it\n addClass(popup, params.showClass.popup); // and remove the opacity workaround\n\n popup.style.removeProperty('opacity');\n }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062\n\n addClass([document.documentElement, document.body], swalClasses.shown);\n\n if (params.heightAuto && params.backdrop && !params.toast) {\n addClass([document.documentElement, document.body], swalClasses['height-auto']);\n }\n };\n\n /**\n * Shows loader (spinner), this is useful with AJAX requests.\n * By default the loader be shown instead of the \"Confirm\" button.\n */\n\n const showLoading = buttonToReplace => {\n let popup = getPopup();\n\n if (!popup) {\n new Swal(); // eslint-disable-line no-new\n }\n\n popup = getPopup();\n const loader = getLoader();\n\n if (isToast()) {\n hide(getIcon());\n } else {\n replaceButton(popup, buttonToReplace);\n }\n\n show(loader);\n popup.setAttribute('data-loading', 'true');\n popup.setAttribute('aria-busy', 'true');\n popup.focus();\n };\n\n const replaceButton = (popup, buttonToReplace) => {\n const actions = getActions();\n const loader = getLoader();\n\n if (!buttonToReplace && isVisible(getConfirmButton())) {\n buttonToReplace = getConfirmButton();\n }\n\n show(actions);\n\n if (buttonToReplace) {\n hide(buttonToReplace);\n loader.setAttribute('data-button-to-replace', buttonToReplace.className);\n }\n\n loader.parentNode.insertBefore(loader, buttonToReplace);\n addClass([popup, actions], swalClasses.loading);\n };\n\n const handleInputOptionsAndValue = (instance, params) => {\n if (params.input === 'select' || params.input === 'radio') {\n handleInputOptions(instance, params);\n } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {\n showLoading(getConfirmButton());\n handleInputValue(instance, params);\n }\n };\n const getInputValue = (instance, innerParams) => {\n const input = instance.getInput();\n\n if (!input) {\n return null;\n }\n\n switch (innerParams.input) {\n case 'checkbox':\n return getCheckboxValue(input);\n\n case 'radio':\n return getRadioValue(input);\n\n case 'file':\n return getFileValue(input);\n\n default:\n return innerParams.inputAutoTrim ? input.value.trim() : input.value;\n }\n };\n\n const getCheckboxValue = input => input.checked ? 1 : 0;\n\n const getRadioValue = input => input.checked ? input.value : null;\n\n const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;\n\n const handleInputOptions = (instance, params) => {\n const popup = getPopup();\n\n const processInputOptions = inputOptions => populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);\n\n if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {\n showLoading(getConfirmButton());\n asPromise(params.inputOptions).then(inputOptions => {\n instance.hideLoading();\n processInputOptions(inputOptions);\n });\n } else if (typeof params.inputOptions === 'object') {\n processInputOptions(params.inputOptions);\n } else {\n error(\"Unexpected type of inputOptions! Expected object, Map or Promise, got \".concat(typeof params.inputOptions));\n }\n };\n\n const handleInputValue = (instance, params) => {\n const input = instance.getInput();\n hide(input);\n asPromise(params.inputValue).then(inputValue => {\n input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : \"\".concat(inputValue);\n show(input);\n input.focus();\n instance.hideLoading();\n }).catch(err => {\n error(\"Error in inputValue promise: \".concat(err));\n input.value = '';\n show(input);\n input.focus();\n instance.hideLoading();\n });\n };\n\n const populateInputOptions = {\n select: (popup, inputOptions, params) => {\n const select = getDirectChildByClass(popup, swalClasses.select);\n\n const renderOption = (parent, optionLabel, optionValue) => {\n const option = document.createElement('option');\n option.value = optionValue;\n setInnerHtml(option, optionLabel);\n option.selected = isSelected(optionValue, params.inputValue);\n parent.appendChild(option);\n };\n\n inputOptions.forEach(inputOption => {\n const optionValue = inputOption[0];\n const optionLabel = inputOption[1]; // spec:\n // https://www.w3.org/TR/html401/interact/forms.html#h-17.6\n // \"...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)...\"\n // check whether this is a \n\n if (Array.isArray(optionLabel)) {\n // if it is an array, then it is an \n const optgroup = document.createElement('optgroup');\n optgroup.label = optionValue;\n optgroup.disabled = false; // not configurable for now\n\n select.appendChild(optgroup);\n optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));\n } else {\n // case of \n valueFormatted = formatInputOptions(valueFormatted);\n }\n\n result.push([key, valueFormatted]);\n });\n } else {\n Object.keys(inputOptions).forEach(key => {\n let valueFormatted = inputOptions[key];\n\n if (typeof valueFormatted === 'object') {\n // case of \n valueFormatted = formatInputOptions(valueFormatted);\n }\n\n result.push([key, valueFormatted]);\n });\n }\n\n return result;\n };\n\n const isSelected = (optionValue, inputValue) => {\n return inputValue && inputValue.toString() === optionValue.toString();\n };\n\n /**\n * Hides loader and shows back the button which was hidden by .showLoading()\n */\n\n function hideLoading() {\n // do nothing if popup is closed\n const innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n return;\n }\n\n const domCache = privateProps.domCache.get(this);\n hide(domCache.loader);\n\n if (isToast()) {\n if (innerParams.icon) {\n show(getIcon());\n }\n } else {\n showRelatedButton(domCache);\n }\n\n removeClass([domCache.popup, domCache.actions], swalClasses.loading);\n domCache.popup.removeAttribute('aria-busy');\n domCache.popup.removeAttribute('data-loading');\n domCache.confirmButton.disabled = false;\n domCache.denyButton.disabled = false;\n domCache.cancelButton.disabled = false;\n }\n\n const showRelatedButton = domCache => {\n const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));\n\n if (buttonToReplace.length) {\n show(buttonToReplace[0], 'inline-block');\n } else if (allButtonsAreHidden()) {\n hide(domCache.actions);\n }\n };\n\n /**\n * Gets the input DOM node, this method works with input parameter.\n * @returns {HTMLElement | null}\n */\n\n function getInput$1(instance) {\n const innerParams = privateProps.innerParams.get(instance || this);\n const domCache = privateProps.domCache.get(instance || this);\n\n if (!domCache) {\n return null;\n }\n\n return getInput(domCache.popup, innerParams.input);\n }\n\n /**\n * This module contains `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateMethods = {\n swalPromiseResolve: new WeakMap(),\n swalPromiseReject: new WeakMap()\n };\n\n /*\n * Global function to determine if SweetAlert2 popup is shown\n */\n\n const isVisible$1 = () => {\n return isVisible(getPopup());\n };\n /*\n * Global function to click 'Confirm' button\n */\n\n const clickConfirm = () => getConfirmButton() && getConfirmButton().click();\n /*\n * Global function to click 'Deny' button\n */\n\n const clickDeny = () => getDenyButton() && getDenyButton().click();\n /*\n * Global function to click 'Cancel' button\n */\n\n const clickCancel = () => getCancelButton() && getCancelButton().click();\n\n /**\n * @param {GlobalState} globalState\n */\n\n const removeKeydownHandler = globalState => {\n if (globalState.keydownTarget && globalState.keydownHandlerAdded) {\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {GlobalState} globalState\n * @param {SweetAlertOptions} innerParams\n * @param {*} dismissWith\n */\n\n const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {\n removeKeydownHandler(globalState);\n\n if (!innerParams.toast) {\n globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);\n\n globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();\n globalState.keydownListenerCapture = innerParams.keydownListenerCapture;\n globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = true;\n }\n };\n /**\n * @param {SweetAlertOptions} innerParams\n * @param {number} index\n * @param {number} increment\n */\n\n const setFocus = (innerParams, index, increment) => {\n const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match\n\n if (focusableElements.length) {\n index = index + increment; // rollover to first item\n\n if (index === focusableElements.length) {\n index = 0; // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n\n return focusableElements[index].focus();\n } // no visible focusable elements, focus the popup\n\n\n getPopup().focus();\n };\n const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];\n const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];\n /**\n * @param {SweetAlert2} instance\n * @param {KeyboardEvent} e\n * @param {function} dismissWith\n */\n\n const keydownHandler = (instance, e, dismissWith) => {\n const innerParams = privateProps.innerParams.get(instance);\n\n if (!innerParams) {\n return; // This instance has already been destroyed\n } // Ignore keydown during IME composition\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event#ignoring_keydown_during_ime_composition\n // https://github.com/sweetalert2/sweetalert2/issues/720\n // https://github.com/sweetalert2/sweetalert2/issues/2406\n\n\n if (e.isComposing || e.keyCode === 229) {\n return;\n }\n\n if (innerParams.stopKeydownPropagation) {\n e.stopPropagation();\n } // ENTER\n\n\n if (e.key === 'Enter') {\n handleEnter(instance, e, innerParams);\n } // TAB\n else if (e.key === 'Tab') {\n handleTab(e, innerParams);\n } // ARROWS - switch focus between buttons\n else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {\n handleArrows(e.key);\n } // ESC\n else if (e.key === 'Escape') {\n handleEsc(e, innerParams, dismissWith);\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n */\n\n\n const handleEnter = (instance, e, innerParams) => {\n // https://github.com/sweetalert2/sweetalert2/issues/2386\n if (!callIfFunction(innerParams.allowEnterKey)) {\n return;\n }\n\n if (e.target && instance.getInput() && e.target instanceof HTMLElement && e.target.outerHTML === instance.getInput().outerHTML) {\n if (['textarea', 'file'].includes(innerParams.input)) {\n return; // do not submit\n }\n\n clickConfirm();\n e.preventDefault();\n }\n };\n /**\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n */\n\n\n const handleTab = (e, innerParams) => {\n const targetElement = e.target;\n const focusableElements = getFocusableElements();\n let btnIndex = -1;\n\n for (let i = 0; i < focusableElements.length; i++) {\n if (targetElement === focusableElements[i]) {\n btnIndex = i;\n break;\n }\n } // Cycle to the next button\n\n\n if (!e.shiftKey) {\n setFocus(innerParams, btnIndex, 1);\n } // Cycle to the prev button\n else {\n setFocus(innerParams, btnIndex, -1);\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n /**\n * @param {string} key\n */\n\n\n const handleArrows = key => {\n const confirmButton = getConfirmButton();\n const denyButton = getDenyButton();\n const cancelButton = getCancelButton();\n\n if (document.activeElement instanceof HTMLElement && ![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {\n return;\n }\n\n const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';\n let buttonToFocus = document.activeElement;\n\n for (let i = 0; i < getActions().children.length; i++) {\n buttonToFocus = buttonToFocus[sibling];\n\n if (!buttonToFocus) {\n return;\n }\n\n if (buttonToFocus instanceof HTMLButtonElement && isVisible(buttonToFocus)) {\n break;\n }\n }\n\n if (buttonToFocus instanceof HTMLButtonElement) {\n buttonToFocus.focus();\n }\n };\n /**\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n * @param {function} dismissWith\n */\n\n\n const handleEsc = (e, innerParams, dismissWith) => {\n if (callIfFunction(innerParams.allowEscapeKey)) {\n e.preventDefault();\n dismissWith(DismissReason.esc);\n }\n };\n\n /*\n * Instance method to close sweetAlert\n */\n\n function removePopupAndResetState(instance, container, returnFocus, didClose) {\n if (isToast()) {\n triggerDidCloseAndDispose(instance, didClose);\n } else {\n restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));\n removeKeydownHandler(globalState);\n }\n\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088\n // for some reason removing the container in Safari will scroll the document to bottom\n\n if (isSafari) {\n container.setAttribute('style', 'display:none !important');\n container.removeAttribute('class');\n container.innerHTML = '';\n } else {\n container.remove();\n }\n\n if (isModal()) {\n undoScrollbar();\n undoIOSfix();\n unsetAriaHidden();\n }\n\n removeBodyClasses();\n }\n\n function removeBodyClasses() {\n removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);\n }\n\n function close(resolveValue) {\n resolveValue = prepareResolveValue(resolveValue);\n const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);\n const didClose = triggerClosePopup(this);\n\n if (this.isAwaitingPromise()) {\n // A swal awaiting for a promise (after a click on Confirm or Deny) cannot be dismissed anymore #2335\n if (!resolveValue.isDismissed) {\n handleAwaitingPromise(this);\n swalPromiseResolve(resolveValue);\n }\n } else if (didClose) {\n // Resolve Swal promise\n swalPromiseResolve(resolveValue);\n }\n }\n function isAwaitingPromise() {\n return !!privateProps.awaitingPromise.get(this);\n }\n\n const triggerClosePopup = instance => {\n const popup = getPopup();\n\n if (!popup) {\n return false;\n }\n\n const innerParams = privateProps.innerParams.get(instance);\n\n if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {\n return false;\n }\n\n removeClass(popup, innerParams.showClass.popup);\n addClass(popup, innerParams.hideClass.popup);\n const backdrop = getContainer();\n removeClass(backdrop, innerParams.showClass.backdrop);\n addClass(backdrop, innerParams.hideClass.backdrop);\n handlePopupAnimation(instance, popup, innerParams);\n return true;\n };\n\n function rejectPromise(error) {\n const rejectPromise = privateMethods.swalPromiseReject.get(this);\n handleAwaitingPromise(this);\n\n if (rejectPromise) {\n // Reject Swal promise\n rejectPromise(error);\n }\n }\n const handleAwaitingPromise = instance => {\n if (instance.isAwaitingPromise()) {\n privateProps.awaitingPromise.delete(instance); // The instance might have been previously partly destroyed, we must resume the destroy process in this case #2335\n\n if (!privateProps.innerParams.get(instance)) {\n instance._destroy();\n }\n }\n };\n\n const prepareResolveValue = resolveValue => {\n // When user calls Swal.close()\n if (typeof resolveValue === 'undefined') {\n return {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true\n };\n }\n\n return Object.assign({\n isConfirmed: false,\n isDenied: false,\n isDismissed: false\n }, resolveValue);\n };\n\n const handlePopupAnimation = (instance, popup, innerParams) => {\n const container = getContainer(); // If animation is supported, animate\n\n const animationIsSupported = animationEndEvent && hasCssAnimation(popup);\n\n if (typeof innerParams.willClose === 'function') {\n innerParams.willClose(popup);\n }\n\n if (animationIsSupported) {\n animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);\n } else {\n // Otherwise, remove immediately\n removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);\n }\n };\n\n const animatePopup = (instance, popup, container, returnFocus, didClose) => {\n globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);\n popup.addEventListener(animationEndEvent, function (e) {\n if (e.target === popup) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n });\n };\n\n const triggerDidCloseAndDispose = (instance, didClose) => {\n setTimeout(() => {\n if (typeof didClose === 'function') {\n didClose.bind(instance.params)();\n }\n\n instance._destroy();\n });\n };\n\n function setButtonsDisabled(instance, buttons, disabled) {\n const domCache = privateProps.domCache.get(instance);\n buttons.forEach(button => {\n domCache[button].disabled = disabled;\n });\n }\n\n function setInputDisabled(input, disabled) {\n if (!input) {\n return false;\n }\n\n if (input.type === 'radio') {\n const radiosContainer = input.parentNode.parentNode;\n const radios = radiosContainer.querySelectorAll('input');\n\n for (let i = 0; i < radios.length; i++) {\n radios[i].disabled = disabled;\n }\n } else {\n input.disabled = disabled;\n }\n }\n\n function enableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);\n }\n function disableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);\n }\n function enableInput() {\n return setInputDisabled(this.getInput(), false);\n }\n function disableInput() {\n return setInputDisabled(this.getInput(), true);\n }\n\n function showValidationMessage(error) {\n const domCache = privateProps.domCache.get(this);\n const params = privateProps.innerParams.get(this);\n setInnerHtml(domCache.validationMessage, error);\n domCache.validationMessage.className = swalClasses['validation-message'];\n\n if (params.customClass && params.customClass.validationMessage) {\n addClass(domCache.validationMessage, params.customClass.validationMessage);\n }\n\n show(domCache.validationMessage);\n const input = this.getInput();\n\n if (input) {\n input.setAttribute('aria-invalid', true);\n input.setAttribute('aria-describedby', swalClasses['validation-message']);\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n }\n } // Hide block with validation message\n\n function resetValidationMessage$1() {\n const domCache = privateProps.domCache.get(this);\n\n if (domCache.validationMessage) {\n hide(domCache.validationMessage);\n }\n\n const input = this.getInput();\n\n if (input) {\n input.removeAttribute('aria-invalid');\n input.removeAttribute('aria-describedby');\n removeClass(input, swalClasses.inputerror);\n }\n }\n\n function getProgressSteps$1() {\n const domCache = privateProps.domCache.get(this);\n return domCache.progressSteps;\n }\n\n /**\n * Updates popup parameters.\n */\n\n function update(params) {\n const popup = getPopup();\n const innerParams = privateProps.innerParams.get(this);\n\n if (!popup || hasClass(popup, innerParams.hideClass.popup)) {\n return warn(\"You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.\");\n }\n\n const validUpdatableParams = filterValidParams(params);\n const updatedParams = Object.assign({}, innerParams, validUpdatableParams);\n render(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n Object.defineProperties(this, {\n params: {\n value: Object.assign({}, this.params, params),\n writable: false,\n enumerable: true\n }\n });\n }\n\n const filterValidParams = params => {\n const validUpdatableParams = {};\n Object.keys(params).forEach(param => {\n if (isUpdatableParameter(param)) {\n validUpdatableParams[param] = params[param];\n } else {\n warn(\"Invalid parameter to update: \".concat(param));\n }\n });\n return validUpdatableParams;\n };\n\n function _destroy() {\n const domCache = privateProps.domCache.get(this);\n const innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n disposeWeakMaps(this); // The WeakMaps might have been partly destroyed, we must recall it to dispose any remaining WeakMaps #2335\n\n return; // This instance has already been destroyed\n } // Check if there is another Swal closing\n\n\n if (domCache.popup && globalState.swalCloseEventFinishedCallback) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n\n if (typeof innerParams.didDestroy === 'function') {\n innerParams.didDestroy();\n }\n\n disposeSwal(this);\n }\n /**\n * @param {SweetAlert2} instance\n */\n\n const disposeSwal = instance => {\n disposeWeakMaps(instance); // Unset this.params so GC will dispose it (#1569)\n // @ts-ignore\n\n delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)\n\n delete globalState.keydownHandler;\n delete globalState.keydownTarget; // Unset currentInstance\n\n delete globalState.currentInstance;\n };\n /**\n * @param {SweetAlert2} instance\n */\n\n\n const disposeWeakMaps = instance => {\n // If the current instance is awaiting a promise result, we keep the privateMethods to call them once the promise result is retrieved #2335\n // @ts-ignore\n if (instance.isAwaitingPromise()) {\n unsetWeakMaps(privateProps, instance);\n privateProps.awaitingPromise.set(instance, true);\n } else {\n unsetWeakMaps(privateMethods, instance);\n unsetWeakMaps(privateProps, instance);\n }\n };\n /**\n * @param {object} obj\n * @param {SweetAlert2} instance\n */\n\n\n const unsetWeakMaps = (obj, instance) => {\n for (const i in obj) {\n obj[i].delete(instance);\n }\n };\n\n\n\n var instanceMethods = /*#__PURE__*/Object.freeze({\n hideLoading: hideLoading,\n disableLoading: hideLoading,\n getInput: getInput$1,\n close: close,\n isAwaitingPromise: isAwaitingPromise,\n rejectPromise: rejectPromise,\n handleAwaitingPromise: handleAwaitingPromise,\n closePopup: close,\n closeModal: close,\n closeToast: close,\n enableButtons: enableButtons,\n disableButtons: disableButtons,\n enableInput: enableInput,\n disableInput: disableInput,\n showValidationMessage: showValidationMessage,\n resetValidationMessage: resetValidationMessage$1,\n getProgressSteps: getProgressSteps$1,\n update: update,\n _destroy: _destroy\n });\n\n /**\n * @param {SweetAlert2} instance\n */\n\n const handleConfirmButtonClick = instance => {\n const innerParams = privateProps.innerParams.get(instance);\n instance.disableButtons();\n\n if (innerParams.input) {\n handleConfirmOrDenyWithInput(instance, 'confirm');\n } else {\n confirm(instance, true);\n }\n };\n /**\n * @param {SweetAlert2} instance\n */\n\n const handleDenyButtonClick = instance => {\n const innerParams = privateProps.innerParams.get(instance);\n instance.disableButtons();\n\n if (innerParams.returnInputValueOnDeny) {\n handleConfirmOrDenyWithInput(instance, 'deny');\n } else {\n deny(instance, false);\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {Function} dismissWith\n */\n\n const handleCancelButtonClick = (instance, dismissWith) => {\n instance.disableButtons();\n dismissWith(DismissReason.cancel);\n };\n /**\n * @param {SweetAlert2} instance\n * @param {'confirm' | 'deny'} type\n */\n\n const handleConfirmOrDenyWithInput = (instance, type) => {\n const innerParams = privateProps.innerParams.get(instance);\n\n if (!innerParams.input) {\n error(\"The \\\"input\\\" parameter is needed to be set when using returnInputValueOn\".concat(capitalizeFirstLetter(type)));\n return;\n }\n\n const inputValue = getInputValue(instance, innerParams);\n\n if (innerParams.inputValidator) {\n handleInputValidator(instance, inputValue, type);\n } else if (!instance.getInput().checkValidity()) {\n instance.enableButtons();\n instance.showValidationMessage(innerParams.validationMessage);\n } else if (type === 'deny') {\n deny(instance, inputValue);\n } else {\n confirm(instance, inputValue);\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {string} inputValue\n * @param {'confirm' | 'deny'} type\n */\n\n\n const handleInputValidator = (instance, inputValue, type) => {\n const innerParams = privateProps.innerParams.get(instance);\n instance.disableInput();\n const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));\n validationPromise.then(validationMessage => {\n instance.enableButtons();\n instance.enableInput();\n\n if (validationMessage) {\n instance.showValidationMessage(validationMessage);\n } else if (type === 'deny') {\n deny(instance, inputValue);\n } else {\n confirm(instance, inputValue);\n }\n });\n };\n /**\n * @param {SweetAlert2} instance\n * @param {any} value\n */\n\n\n const deny = (instance, value) => {\n const innerParams = privateProps.innerParams.get(instance || undefined);\n\n if (innerParams.showLoaderOnDeny) {\n showLoading(getDenyButton());\n }\n\n if (innerParams.preDeny) {\n privateProps.awaitingPromise.set(instance || undefined, true); // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preDeny's promise is received\n\n const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));\n preDenyPromise.then(preDenyValue => {\n if (preDenyValue === false) {\n instance.hideLoading();\n handleAwaitingPromise(instance);\n } else {\n instance.close({\n isDenied: true,\n value: typeof preDenyValue === 'undefined' ? value : preDenyValue\n });\n }\n }).catch(error$$1 => rejectWith(instance || undefined, error$$1));\n } else {\n instance.close({\n isDenied: true,\n value\n });\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {any} value\n */\n\n\n const succeedWith = (instance, value) => {\n instance.close({\n isConfirmed: true,\n value\n });\n };\n /**\n *\n * @param {SweetAlert2} instance\n * @param {string} error\n */\n\n\n const rejectWith = (instance, error$$1) => {\n // @ts-ignore\n instance.rejectPromise(error$$1);\n };\n /**\n *\n * @param {SweetAlert2} instance\n * @param {any} value\n */\n\n\n const confirm = (instance, value) => {\n const innerParams = privateProps.innerParams.get(instance || undefined);\n\n if (innerParams.showLoaderOnConfirm) {\n showLoading();\n }\n\n if (innerParams.preConfirm) {\n instance.resetValidationMessage();\n privateProps.awaitingPromise.set(instance || undefined, true); // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preConfirm's promise is received\n\n const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));\n preConfirmPromise.then(preConfirmValue => {\n if (isVisible(getValidationMessage()) || preConfirmValue === false) {\n instance.hideLoading();\n handleAwaitingPromise(instance);\n } else {\n succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);\n }\n }).catch(error$$1 => rejectWith(instance || undefined, error$$1));\n } else {\n succeedWith(instance, value);\n }\n };\n\n const handlePopupClick = (instance, domCache, dismissWith) => {\n const innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams.toast) {\n handleToastClick(instance, domCache, dismissWith);\n } else {\n // Ignore click events that had mousedown on the popup but mouseup on the container\n // This can happen when the user drags a slider\n handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup\n\n handleContainerMousedown(domCache);\n handleModalClick(instance, domCache, dismissWith);\n }\n };\n\n const handleToastClick = (instance, domCache, dismissWith) => {\n // Closing toast by internal click\n domCache.popup.onclick = () => {\n const innerParams = privateProps.innerParams.get(instance);\n\n if (innerParams && (isAnyButtonShown(innerParams) || innerParams.timer || innerParams.input)) {\n return;\n }\n\n dismissWith(DismissReason.close);\n };\n };\n /**\n * @param {*} innerParams\n * @returns {boolean}\n */\n\n\n const isAnyButtonShown = innerParams => {\n return innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton;\n };\n\n let ignoreOutsideClick = false;\n\n const handleModalMousedown = domCache => {\n domCache.popup.onmousedown = () => {\n domCache.container.onmouseup = function (e) {\n domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't\n // have any other direct children aside of the popup\n\n if (e.target === domCache.container) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n\n const handleContainerMousedown = domCache => {\n domCache.container.onmousedown = () => {\n domCache.popup.onmouseup = function (e) {\n domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup\n\n if (e.target === domCache.popup || domCache.popup.contains(e.target)) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n\n const handleModalClick = (instance, domCache, dismissWith) => {\n domCache.container.onclick = e => {\n const innerParams = privateProps.innerParams.get(instance);\n\n if (ignoreOutsideClick) {\n ignoreOutsideClick = false;\n return;\n }\n\n if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {\n dismissWith(DismissReason.backdrop);\n }\n };\n };\n\n const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;\n\n const isElement = elem => elem instanceof Element || isJqueryElement(elem);\n\n const argsToParams = args => {\n const params = {};\n\n if (typeof args[0] === 'object' && !isElement(args[0])) {\n Object.assign(params, args[0]);\n } else {\n ['title', 'html', 'icon'].forEach((name, index) => {\n const arg = args[index];\n\n if (typeof arg === 'string' || isElement(arg)) {\n params[name] = arg;\n } else if (arg !== undefined) {\n error(\"Unexpected type of \".concat(name, \"! Expected \\\"string\\\" or \\\"Element\\\", got \").concat(typeof arg));\n }\n });\n }\n\n return params;\n };\n\n function fire() {\n const Swal = this; // eslint-disable-line @typescript-eslint/no-this-alias\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new Swal(...args);\n }\n\n /**\n * Returns an extended version of `Swal` containing `params` as defaults.\n * Useful for reusing Swal configuration.\n *\n * For example:\n *\n * Before:\n * const textPromptOptions = { input: 'text', showCancelButton: true }\n * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })\n * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })\n *\n * After:\n * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })\n * const {value: firstName} = await TextPrompt('What is your first name?')\n * const {value: lastName} = await TextPrompt('What is your last name?')\n *\n * @param mixinParams\n */\n function mixin(mixinParams) {\n class MixinSwal extends this {\n _main(params, priorityMixinParams) {\n return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));\n }\n\n }\n\n return MixinSwal;\n }\n\n /**\n * If `timer` parameter is set, returns number of milliseconds of timer remained.\n * Otherwise, returns undefined.\n */\n\n const getTimerLeft = () => {\n return globalState.timeout && globalState.timeout.getTimerLeft();\n };\n /**\n * Stop timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n const stopTimer = () => {\n if (globalState.timeout) {\n stopTimerProgressBar();\n return globalState.timeout.stop();\n }\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n const resumeTimer = () => {\n if (globalState.timeout) {\n const remaining = globalState.timeout.start();\n animateTimerProgressBar(remaining);\n return remaining;\n }\n };\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n const toggleTimer = () => {\n const timer = globalState.timeout;\n return timer && (timer.running ? stopTimer() : resumeTimer());\n };\n /**\n * Increase timer. Returns number of milliseconds of an updated timer.\n * If `timer` parameter isn't set, returns undefined.\n */\n\n const increaseTimer = n => {\n if (globalState.timeout) {\n const remaining = globalState.timeout.increase(n);\n animateTimerProgressBar(remaining, true);\n return remaining;\n }\n };\n /**\n * Check if timer is running. Returns true if timer is running\n * or false if timer is paused or stopped.\n * If `timer` parameter isn't set, returns undefined\n */\n\n const isTimerRunning = () => {\n return globalState.timeout && globalState.timeout.isRunning();\n };\n\n let bodyClickListenerAdded = false;\n const clickHandlers = {};\n function bindClickHandler() {\n let attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template';\n clickHandlers[attr] = this;\n\n if (!bodyClickListenerAdded) {\n document.body.addEventListener('click', bodyClickListener);\n bodyClickListenerAdded = true;\n }\n }\n\n const bodyClickListener = event => {\n for (let el = event.target; el && el !== document; el = el.parentNode) {\n for (const attr in clickHandlers) {\n const template = el.getAttribute(attr);\n\n if (template) {\n clickHandlers[attr].fire({\n template\n });\n return;\n }\n }\n }\n };\n\n\n\n var staticMethods = /*#__PURE__*/Object.freeze({\n isValidParameter: isValidParameter,\n isUpdatableParameter: isUpdatableParameter,\n isDeprecatedParameter: isDeprecatedParameter,\n argsToParams: argsToParams,\n isVisible: isVisible$1,\n clickConfirm: clickConfirm,\n clickDeny: clickDeny,\n clickCancel: clickCancel,\n getContainer: getContainer,\n getPopup: getPopup,\n getTitle: getTitle,\n getHtmlContainer: getHtmlContainer,\n getImage: getImage,\n getIcon: getIcon,\n getInputLabel: getInputLabel,\n getCloseButton: getCloseButton,\n getActions: getActions,\n getConfirmButton: getConfirmButton,\n getDenyButton: getDenyButton,\n getCancelButton: getCancelButton,\n getLoader: getLoader,\n getFooter: getFooter,\n getTimerProgressBar: getTimerProgressBar,\n getFocusableElements: getFocusableElements,\n getValidationMessage: getValidationMessage,\n isLoading: isLoading,\n fire: fire,\n mixin: mixin,\n showLoading: showLoading,\n enableLoading: showLoading,\n getTimerLeft: getTimerLeft,\n stopTimer: stopTimer,\n resumeTimer: resumeTimer,\n toggleTimer: toggleTimer,\n increaseTimer: increaseTimer,\n isTimerRunning: isTimerRunning,\n bindClickHandler: bindClickHandler\n });\n\n let currentInstance;\n\n class SweetAlert {\n constructor() {\n // Prevent run in Node env\n if (typeof window === 'undefined') {\n return;\n }\n\n currentInstance = this; // @ts-ignore\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n const outerParams = Object.freeze(this.constructor.argsToParams(args));\n Object.defineProperties(this, {\n params: {\n value: outerParams,\n writable: false,\n enumerable: true,\n configurable: true\n }\n }); // @ts-ignore\n\n const promise = currentInstance._main(currentInstance.params);\n\n privateProps.promise.set(this, promise);\n }\n\n _main(userParams) {\n let mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n showWarningsForParams(Object.assign({}, mixinParams, userParams));\n\n if (globalState.currentInstance) {\n // @ts-ignore\n globalState.currentInstance._destroy();\n\n if (isModal()) {\n unsetAriaHidden();\n }\n }\n\n globalState.currentInstance = currentInstance;\n const innerParams = prepareParams(userParams, mixinParams);\n setParameters(innerParams);\n Object.freeze(innerParams); // clear the previous timer\n\n if (globalState.timeout) {\n globalState.timeout.stop();\n delete globalState.timeout;\n } // clear the restore focus timeout\n\n\n clearTimeout(globalState.restoreFocusTimeout);\n const domCache = populateDomCache(currentInstance);\n render(currentInstance, innerParams);\n privateProps.innerParams.set(currentInstance, innerParams);\n return swalPromise(currentInstance, domCache, innerParams);\n } // `catch` cannot be the name of a module export, so we define our thenable methods here instead\n\n\n then(onFulfilled) {\n const promise = privateProps.promise.get(this);\n return promise.then(onFulfilled);\n }\n\n finally(onFinally) {\n const promise = privateProps.promise.get(this);\n return promise.finally(onFinally);\n }\n\n }\n\n const swalPromise = (instance, domCache, innerParams) => {\n return new Promise((resolve, reject) => {\n // functions to handle all closings/dismissals\n const dismissWith = dismiss => {\n instance.closePopup({\n isDismissed: true,\n dismiss\n });\n };\n\n privateMethods.swalPromiseResolve.set(instance, resolve);\n privateMethods.swalPromiseReject.set(instance, reject);\n\n domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance);\n\n domCache.denyButton.onclick = () => handleDenyButtonClick(instance);\n\n domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith);\n\n domCache.closeButton.onclick = () => dismissWith(DismissReason.close);\n\n handlePopupClick(instance, domCache, dismissWith);\n addKeydownHandler(instance, globalState, innerParams, dismissWith);\n handleInputOptionsAndValue(instance, innerParams);\n openPopup(innerParams);\n setupTimer(globalState, innerParams, dismissWith);\n initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946)\n\n setTimeout(() => {\n domCache.container.scrollTop = 0;\n });\n });\n };\n\n const prepareParams = (userParams, mixinParams) => {\n const templateParams = getTemplateParams(userParams);\n const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131\n\n params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);\n params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);\n return params;\n };\n /**\n * @param {SweetAlert2} instance\n * @returns {DomCache}\n */\n\n\n const populateDomCache = instance => {\n const domCache = {\n popup: getPopup(),\n container: getContainer(),\n actions: getActions(),\n confirmButton: getConfirmButton(),\n denyButton: getDenyButton(),\n cancelButton: getCancelButton(),\n loader: getLoader(),\n closeButton: getCloseButton(),\n validationMessage: getValidationMessage(),\n progressSteps: getProgressSteps()\n };\n privateProps.domCache.set(instance, domCache);\n return domCache;\n };\n /**\n * @param {GlobalState} globalState\n * @param {SweetAlertOptions} innerParams\n * @param {function} dismissWith\n */\n\n\n const setupTimer = (globalState$$1, innerParams, dismissWith) => {\n const timerProgressBar = getTimerProgressBar();\n hide(timerProgressBar);\n\n if (innerParams.timer) {\n globalState$$1.timeout = new Timer(() => {\n dismissWith('timer');\n delete globalState$$1.timeout;\n }, innerParams.timer);\n\n if (innerParams.timerProgressBar) {\n show(timerProgressBar);\n applyCustomClass(timerProgressBar, innerParams, 'timerProgressBar');\n setTimeout(() => {\n if (globalState$$1.timeout && globalState$$1.timeout.running) {\n // timer can be already stopped or unset at this point\n animateTimerProgressBar(innerParams.timer);\n }\n });\n }\n }\n };\n /**\n * @param {DomCache} domCache\n * @param {SweetAlertOptions} innerParams\n */\n\n\n const initFocus = (domCache, innerParams) => {\n if (innerParams.toast) {\n return;\n }\n\n if (!callIfFunction(innerParams.allowEnterKey)) {\n return blurActiveElement();\n }\n\n if (!focusButton(domCache, innerParams)) {\n setFocus(innerParams, -1, 1);\n }\n };\n /**\n * @param {DomCache} domCache\n * @param {SweetAlertOptions} innerParams\n * @returns {boolean}\n */\n\n\n const focusButton = (domCache, innerParams) => {\n if (innerParams.focusDeny && isVisible(domCache.denyButton)) {\n domCache.denyButton.focus();\n return true;\n }\n\n if (innerParams.focusCancel && isVisible(domCache.cancelButton)) {\n domCache.cancelButton.focus();\n return true;\n }\n\n if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) {\n domCache.confirmButton.focus();\n return true;\n }\n\n return false;\n };\n\n const blurActiveElement = () => {\n if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === 'function') {\n document.activeElement.blur();\n }\n }; // This anti-war message will only be shown to Russian users visiting Russian sites\n\n\n if (typeof window !== 'undefined' && /^ru\\b/.test(navigator.language) && location.host.match(/\\.(ru|su|xn--p1ai)$/)) {\n if (Math.random() < 0.1) {\n const noWar = document.createElement('div');\n noWar.className = 'leave-russia-now-and-apply-your-skills-to-the-world';\n const video = getRandomElement([{\n text: \"\\u0412 \\u043D\\u0438\\u0436\\u0435\\u043F\\u0440\\u0438\\u0432\\u0435\\u0434\\u0451\\u043D\\u043D\\u043E\\u043C \\u0432\\u0438\\u0434\\u0435\\u043E \\u043E\\u0431\\u044A\\u044F\\u0441\\u043D\\u044F\\u0435\\u0442\\u0441\\u044F \\u043A\\u0430\\u043A \\u043A\\u0430\\u0436\\u0434\\u044B\\u0439 \\u0438\\u0437 \\u043D\\u0430\\u0441 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043F\\u043E\\u043C\\u043E\\u0447\\u044C \\u0432 \\u0442\\u043E\\u043C,\\n \\u0447\\u0442\\u043E\\u0431\\u044B \\u044D\\u0442\\u0430 \\u0431\\u0435\\u0441\\u0441\\u043C\\u044B\\u0441\\u043B\\u0435\\u043D\\u043D\\u0430\\u044F \\u0438 \\u0431\\u0435\\u0441\\u0447\\u0435\\u043B\\u043E\\u0432\\u0435\\u0447\\u043D\\u0430\\u044F \\u0432\\u043E\\u0439\\u043D\\u0430 \\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u0438\\u043B\\u0430\\u0441\\u044C:\",\n id: '4CfDhaRkw7I'\n }, {\n text: 'Эмпатия - главное человеческое чувство. Способность сопереживать. Способность поставить себя на место другого.',\n id: 's-GLAIY4DXA'\n }]);\n setInnerHtml(noWar, \"\\n
\\n \\u0415\\u0441\\u043B\\u0438 \\u043C\\u044B \\u043D\\u0435 \\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u0438\\u043C \\u0432\\u043E\\u0439\\u043D\\u0443, \\u043E\\u043D\\u0430 \\u043F\\u0440\\u0438\\u0434\\u0435\\u0442 \\u0432 \\u0434\\u043E\\u043C \\u043A\\u0430\\u0436\\u0434\\u043E\\u0433\\u043E \\u0438\\u0437 \\u043D\\u0430\\u0441 \\u0438 \\u0435\\u0451 \\u043F\\u043E\\u0441\\u043B\\u0435\\u0434\\u0441\\u0442\\u0432\\u0438\\u044F \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0443\\u0436\\u0430\\u0441\\u0430\\u044E\\u0449\\u0438\\u043C\\u0438.\\n
\\n
\\n \\u041F\\u0443\\u0442\\u0438\\u043D\\u0441\\u043A\\u0438\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043C \\u0437\\u0430 20 \\u0441 \\u043B\\u0438\\u0448\\u043D\\u0438\\u043C \\u043B\\u0435\\u0442 \\u0441\\u0432\\u043E\\u0435\\u0433\\u043E \\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u043E\\u0432\\u0430\\u043D\\u0438\\u044F \\u0432\\u0434\\u043E\\u043B\\u0431\\u0438\\u043B \\u043D\\u0430\\u043C, \\u0447\\u0442\\u043E \\u043C\\u044B \\u0431\\u0435\\u0441\\u0441\\u0438\\u043B\\u044C\\u043D\\u044B \\u0438 \\u043E\\u0434\\u0438\\u043D \\u0447\\u0435\\u043B\\u043E\\u0432\\u0435\\u043A \\u043D\\u0435 \\u043C\\u043E\\u0436\\u0435\\u0442 \\u043D\\u0438\\u0447\\u0435\\u0433\\u043E \\u0441\\u0434\\u0435\\u043B\\u0430\\u0442\\u044C. \\u042D\\u0442\\u043E \\u043D\\u0435 \\u0442\\u0430\\u043A!\\n
\\n
\\n \".concat(video.text, \"\\n
\\n \\n
\\n \\u041D\\u0435\\u0442 \\u0432\\u043E\\u0439\\u043D\\u0435!\\n
\\n \"));\n const closeButton = document.createElement('button');\n closeButton.innerHTML = '×';\n\n closeButton.onclick = () => noWar.remove();\n\n noWar.appendChild(closeButton);\n window.addEventListener('load', () => {\n setTimeout(() => {\n document.body.appendChild(noWar);\n }, 1000);\n });\n }\n } // Assign instance methods from src/instanceMethods/*.js to prototype\n\n\n Object.assign(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor\n\n Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility\n\n Object.keys(instanceMethods).forEach(key => {\n SweetAlert[key] = function () {\n if (currentInstance) {\n return currentInstance[key](...arguments);\n }\n };\n });\n SweetAlert.DismissReason = DismissReason;\n SweetAlert.version = '11.4.26';\n\n const Swal = SweetAlert; // @ts-ignore\n\n Swal.default = Swal;\n\n return Swal;\n\n}));\nif (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}\n"],"sourceRoot":""}