1/*! 2 * sweetalert2 v7.11.0 3 * Released under the MIT License. 4 */ 5(function (global, factory) { 6 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 7 typeof define === 'function' && define.amd ? define(factory) : 8 (global.Sweetalert2 = factory()); 9}(this, (function () { 'use strict'; 10 11var styles = "body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-actions {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: stretch;\n align-self: stretch;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n height: 2.2em; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-loading {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-input {\n height: 2em;\n margin: .3125em auto;\n font-size: 1em; }\n body.swal2-toast-shown.swal2-has-input > .swal2-container > .swal2-toast .swal2-validationerror {\n font-size: 1em; }\n\nbody.swal2-toast-shown > .swal2-container {\n position: fixed;\n background-color: transparent; }\n body.swal2-toast-shown > .swal2-container.swal2-shown {\n background-color: transparent; }\n body.swal2-toast-shown > .swal2-container.swal2-top {\n top: 0;\n right: auto;\n bottom: auto;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-top-end, body.swal2-toast-shown > .swal2-container.swal2-top-right {\n top: 0;\n right: 0;\n bottom: auto;\n left: auto; }\n body.swal2-toast-shown > .swal2-container.swal2-top-start, body.swal2-toast-shown > .swal2-container.swal2-top-left {\n top: 0;\n right: auto;\n bottom: auto;\n left: 0; }\n body.swal2-toast-shown > .swal2-container.swal2-center-start, body.swal2-toast-shown > .swal2-container.swal2-center-left {\n top: 50%;\n right: auto;\n bottom: auto;\n left: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-center {\n top: 50%;\n right: auto;\n bottom: auto;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%); }\n body.swal2-toast-shown > .swal2-container.swal2-center-end, body.swal2-toast-shown > .swal2-container.swal2-center-right {\n top: 50%;\n right: 0;\n bottom: auto;\n left: auto;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-bottom-start, body.swal2-toast-shown > .swal2-container.swal2-bottom-left {\n top: auto;\n right: auto;\n bottom: 0;\n left: 0; }\n body.swal2-toast-shown > .swal2-container.swal2-bottom {\n top: auto;\n right: auto;\n bottom: 0;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-toast-shown > .swal2-container.swal2-bottom-end, body.swal2-toast-shown > .swal2-container.swal2-bottom-right {\n top: auto;\n right: 0;\n bottom: 0;\n left: auto; }\n\n.swal2-popup.swal2-toast {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: auto;\n padding: 0.625em;\n -webkit-box-shadow: 0 0 10px #d9d9d9;\n box-shadow: 0 0 10px #d9d9d9;\n overflow-y: hidden; }\n .swal2-popup.swal2-toast .swal2-header {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .swal2-popup.swal2-toast .swal2-title {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n margin: 0 .6em;\n font-size: 1em; }\n .swal2-popup.swal2-toast .swal2-close {\n position: initial; }\n .swal2-popup.swal2-toast .swal2-content {\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n font-size: 1em; }\n .swal2-popup.swal2-toast .swal2-icon {\n width: 32px;\n min-width: 32px;\n height: 32px;\n margin: 0; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring {\n width: 32px;\n height: 32px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-info, .swal2-popup.swal2-toast .swal2-icon.swal2-warning, .swal2-popup.swal2-toast .swal2-icon.swal2-question {\n font-size: 26px;\n line-height: 32px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-error [class^='swal2-x-mark-line'] {\n top: 14px;\n width: 22px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='left'] {\n left: 5px; }\n .swal2-popup.swal2-toast .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='right'] {\n right: 5px; }\n .swal2-popup.swal2-toast .swal2-actions {\n height: auto;\n margin: 0 .3125em; }\n .swal2-popup.swal2-toast .swal2-styled {\n margin: 0 .3125em;\n padding: .3125em .625em;\n font-size: 1em; }\n .swal2-popup.swal2-toast .swal2-styled:focus {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(50, 100, 150, 0.4);\n box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(50, 100, 150, 0.4); }\n .swal2-popup.swal2-toast .swal2-success {\n border-color: #a5dc86; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-circular-line'] {\n position: absolute;\n width: 32px;\n height: 45px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n border-radius: 50%; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-circular-line'][class$='left'] {\n top: -4px;\n left: -15px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform-origin: 32px 32px;\n transform-origin: 32px 32px;\n border-radius: 64px 0 0 64px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-circular-line'][class$='right'] {\n top: -4px;\n left: 15px;\n -webkit-transform-origin: 0 32px;\n transform-origin: 0 32px;\n border-radius: 0 64px 64px 0; }\n .swal2-popup.swal2-toast .swal2-success .swal2-success-ring {\n width: 32px;\n height: 32px; }\n .swal2-popup.swal2-toast .swal2-success .swal2-success-fix {\n top: 0;\n left: 7px;\n width: 7px;\n height: 43px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-line'] {\n height: 5px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-line'][class$='tip'] {\n top: 18px;\n left: 3px;\n width: 12px; }\n .swal2-popup.swal2-toast .swal2-success [class^='swal2-success-line'][class$='long'] {\n top: 15px;\n right: 3px;\n width: 22px; }\n .swal2-popup.swal2-toast.swal2-show {\n -webkit-animation: showSweetToast .5s;\n animation: showSweetToast .5s; }\n .swal2-popup.swal2-toast.swal2-hide {\n -webkit-animation: hideSweetToast .2s forwards;\n animation: hideSweetToast .2s forwards; }\n .swal2-popup.swal2-toast .swal2-animate-success-line-tip {\n -webkit-animation: animate-toast-success-tip .75s;\n animation: animate-toast-success-tip .75s; }\n .swal2-popup.swal2-toast .swal2-animate-success-line-long {\n -webkit-animation: animate-toast-success-long .75s;\n animation: animate-toast-success-long .75s; }\n\n@-webkit-keyframes showSweetToast {\n 0% {\n -webkit-transform: translateY(-10px) rotateZ(2deg);\n transform: translateY(-10px) rotateZ(2deg);\n opacity: 0; }\n 33% {\n -webkit-transform: translateY(0) rotateZ(-2deg);\n transform: translateY(0) rotateZ(-2deg);\n opacity: .5; }\n 66% {\n -webkit-transform: translateY(5px) rotateZ(2deg);\n transform: translateY(5px) rotateZ(2deg);\n opacity: .7; }\n 100% {\n -webkit-transform: translateY(0) rotateZ(0);\n transform: translateY(0) rotateZ(0);\n opacity: 1; } }\n\n@keyframes showSweetToast {\n 0% {\n -webkit-transform: translateY(-10px) rotateZ(2deg);\n transform: translateY(-10px) rotateZ(2deg);\n opacity: 0; }\n 33% {\n -webkit-transform: translateY(0) rotateZ(-2deg);\n transform: translateY(0) rotateZ(-2deg);\n opacity: .5; }\n 66% {\n -webkit-transform: translateY(5px) rotateZ(2deg);\n transform: translateY(5px) rotateZ(2deg);\n opacity: .7; }\n 100% {\n -webkit-transform: translateY(0) rotateZ(0);\n transform: translateY(0) rotateZ(0);\n opacity: 1; } }\n\n@-webkit-keyframes hideSweetToast {\n 0% {\n opacity: 1; }\n 33% {\n opacity: .5; }\n 100% {\n -webkit-transform: rotateZ(1deg);\n transform: rotateZ(1deg);\n opacity: 0; } }\n\n@keyframes hideSweetToast {\n 0% {\n opacity: 1; }\n 33% {\n opacity: .5; }\n 100% {\n -webkit-transform: rotateZ(1deg);\n transform: rotateZ(1deg);\n opacity: 0; } }\n\n@-webkit-keyframes animate-toast-success-tip {\n 0% {\n top: 9px;\n left: 1px;\n width: 0; }\n 54% {\n top: 2px;\n left: 2px;\n width: 0; }\n 70% {\n top: 10px;\n left: -4px;\n width: 26px; }
11\n 84% {\n top: 17px;\n left: 12px;\n width: 8px; }\n 100% {\n top: 18px;\n left: 3px;\n width: 12px; } }\n\n@keyframes animate-toast-success-tip {\n 0% {\n top: 9px;\n left: 1px;\n width: 0; }\n 54% {\n top: 2px;\n left: 2px;\n width: 0; }\n 70% {\n top: 10px;\n left: -4px;\n width: 26px; }\n 84% {\n top: 17px;\n left: 12px;\n width: 8px; }\n 100% {\n top: 18px;\n left: 3px;\n width: 12px; } }\n\n@-webkit-keyframes animate-toast-success-long {\n 0% {\n top: 26px;\n right: 22px;\n width: 0; }\n 65% {\n top: 20px;\n right: 15px;\n width: 0; }\n 84% {\n top: 15px;\n right: 0;\n width: 18px; }\n 100% {\n top: 15px;\n right: 3px;\n width: 22px; } }\n\n@keyframes animate-toast-success-long {\n 0% {\n top: 26px;\n right: 22px;\n width: 0; }\n 65% {\n top: 20px;\n right: 15px;\n width: 0; }\n 84% {\n top: 15px;\n right: 0;\n width: 18px; }\n 100% {\n top: 15px;\n right: 3px;\n width: 22px; } }\n\nhtml.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown),\nbody.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) {\n height: auto;\n overflow-y: hidden; }\n\nbody.swal2-iosfix {\n position: fixed;\n right: 0;\n left: 0; }\n\nbody.swal2-no-backdrop .swal2-shown {\n top: auto;\n right: auto;\n bottom: auto;\n left: auto;\n background-color: transparent; }\n body.swal2-no-backdrop .swal2-shown > .swal2-modal {\n -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); }\n body.swal2-no-backdrop .swal2-shown.swal2-top {\n top: 0;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-top-start, body.swal2-no-backdrop .swal2-shown.swal2-top-left {\n top: 0;\n left: 0; }\n body.swal2-no-backdrop .swal2-shown.swal2-top-end, body.swal2-no-backdrop .swal2-shown.swal2-top-right {\n top: 0;\n right: 0; }\n body.swal2-no-backdrop .swal2-shown.swal2-center {\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-center-start, body.swal2-no-backdrop .swal2-shown.swal2-center-left {\n top: 50%;\n left: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-center-end, body.swal2-no-backdrop .swal2-shown.swal2-center-right {\n top: 50%;\n right: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-bottom {\n bottom: 0;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%); }\n body.swal2-no-backdrop .swal2-shown.swal2-bottom-start, body.swal2-no-backdrop .swal2-shown.swal2-bottom-left {\n bottom: 0;\n left: 0; }\n body.swal2-no-backdrop .swal2-shown.swal2-bottom-end, body.swal2-no-backdrop .swal2-shown.swal2-bottom-right {\n right: 0;\n bottom: 0; }\n\n.swal2-container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: 10px;\n background-color: transparent;\n z-index: 1060;\n overflow-x: hidden; }\n .swal2-container.swal2-top {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start; }\n .swal2-container.swal2-top-start, .swal2-container.swal2-top-left {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .swal2-container.swal2-top-end, .swal2-container.swal2-top-right {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n .swal2-container.swal2-center {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .swal2-container.swal2-center-start, .swal2-container.swal2-center-left {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .swal2-container.swal2-center-end, .swal2-container.swal2-center-right {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n .swal2-container.swal2-bottom {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end; }\n .swal2-container.swal2-bottom-start, .swal2-container.swal2-bottom-left {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .swal2-container.swal2-bottom-end, .swal2-container.swal2-bottom-right {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end; }\n .swal2-container.swal2-grow-fullscreen > .swal2-modal {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: stretch;\n align-self: stretch;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-container.swal2-grow-row > .swal2-modal {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-line-pack: center;\n align-content: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-container.swal2-grow-column {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column; }\n .swal2-container.swal2-grow-column.swal2-top, .swal2-container.swal2-grow-column.swal2-center, .swal2-container.swal2-grow-column.swal2-bottom {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .swal2-container.swal2-grow-column.swal2-top-start, .swal2-container.swal2-grow-column.swal2-center-start, .swal2-container.swal2-grow-column.swal2-bottom-start, .swal2-container.swal2-grow-column.swal2-top-left, .swal2-container.swal2-grow-column.swal2-center-left, .swal2-container.swal2-grow-column.swal2-bottom-left {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start; }\n .swal2-container.swal2-grow-column.swal2-top-end, .swal2-container.swal2-grow-column.swal2-center-end, .swal2-container.swal2-grow-column.swal2-bottom-end, .swal2-container.swal2-grow-column.swal2-top-right, .swal2-container.swal2-grow-column.swal2-center-right, .swal2-container.swal2-grow-column.swal2-bottom-right {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end; }\n .swal2-container.swal2-grow-column > .swal2-modal {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n -ms-flex-line-pack: center;\n align-content: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not
11(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right) > .swal2-modal {\n margin: auto; }\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .swal2-container .swal2-modal {\n margin: 0 !important; } }\n .swal2-container.swal2-fade {\n -webkit-transition: background-color .1s;\n transition: background-color .1s; }\n .swal2-container.swal2-shown {\n background-color: rgba(0, 0, 0, 0.4); }\n\n.swal2-popup {\n display: none;\n position: relative;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 32em;\n max-width: 100%;\n padding: 1.25em;\n border-radius: .3125em;\n background-color: #fff;\n font-family: inherit;\n font-size: 1rem;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n overflow-x: hidden;\n overflow-y: auto; }\n .swal2-popup:focus {\n outline: none; }\n .swal2-popup.swal2-loading {\n overflow-y: hidden; }\n .swal2-popup .swal2-header {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .swal2-popup .swal2-title {\n display: block;\n position: relative;\n margin: 0 0 .4em;\n padding: 0;\n color: #595959;\n font-size: 16px;\n max-width: 100%;\n font-weight: 600;\n text-align: center;\n text-transform: none;\n word-wrap: break-word; }\n .swal2-popup .swal2-actions {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-top: 1.25em; }\n .swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled[disabled] {\n opacity: .4; }\n .swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled:hover {\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.1)));\n background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)); }\n .swal2-popup .swal2-actions:not(.swal2-loading) .swal2-styled:active {\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.2)), to(rgba(0, 0, 0, 0.2)));\n background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); }\n .swal2-popup .swal2-actions.swal2-loading .swal2-styled.swal2-confirm {\n width: 2.5em;\n height: 2.5em;\n margin: .46875em;\n padding: 0;\n border: .25em solid transparent;\n border-radius: 100%;\n border-color: transparent;\n background-color: transparent !important;\n color: transparent;\n cursor: default;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-animation: rotate-loading 1.5s linear 0s infinite normal;\n animation: rotate-loading 1.5s linear 0s infinite normal;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n .swal2-popup .swal2-actions.swal2-loading .swal2-styled.swal2-cancel {\n margin-right: 30px;\n margin-left: 30px; }\n .swal2-popup .swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after {\n display: inline-block;\n width: 15px;\n height: 15px;\n margin-left: 5px;\n border: 3px solid #999999;\n border-radius: 50%;\n border-right-color: transparent;\n -webkit-box-shadow: 1px 1px 1px #fff;\n box-shadow: 1px 1px 1px #fff;\n content: '';\n -webkit-animation: rotate-loading 1.5s linear 0s infinite normal;\n animation: rotate-loading 1.5s linear 0s infinite normal; }\n .swal2-popup .swal2-styled {\n margin: 0 .3125em;\n padding: .625em 2em;\n border: 0;\n border-radius: .25em;\n color: #fff;\n font-size: 1.0625em;\n font-weight: 500;\n -webkit-box-shadow: none;\n box-shadow: none; }\n .swal2-popup .swal2-styled:not([disabled]) {\n cursor: pointer; }\n .swal2-popup .swal2-styled.swal2-confirm {\n background-color: #3085d6; }\n .swal2-popup .swal2-styled.swal2-cancel {\n background-color: #aaa; }\n .swal2-popup .swal2-styled:focus {\n outline: none;\n -webkit-box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(50, 100, 150, 0.4);\n box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(50, 100, 150, 0.4); }\n .swal2-popup .swal2-styled::-moz-focus-inner {\n border: 0; }\n .swal2-popup .swal2-footer {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-top: 1.25em;\n padding-top: 1em;\n border-top: 1px solid #eee;\n font-size: 1em; }\n .swal2-popup .swal2-image {\n max-width: 100%;\n margin: 1.25em auto; }\n .swal2-popup .swal2-close {\n position: absolute;\n top: 5px;\n right: 8px;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 1.2em;\n min-width: 1.2em;\n height: 1.2em;\n margin: 0;\n padding: 0;\n -webkit-transition: color .1s ease;\n transition: color .1s ease;\n border: 0;\n background: transparent;\n color: #cccccc;\n font-family: serif;\n font-size: calc(2.5em - 0.25em);\n line-height: 1.2em;\n cursor: pointer; }\n .swal2-popup .swal2-close:hover {\n color: #d55; }\n .swal2-popup > .swal2-input,\n .swal2-popup > .swal2-file,\n .swal2-popup > .swal2-textarea,\n .swal2-popup > .swal2-select,\n .swal2-popup > .swal2-radio,\n .swal2-popup > .swal2-checkbox {\n display: none; }\n .swal2-popup .swal2-content {\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n color: #545454;\n font-weight: 300;\n line-height: normal;\n word-wrap: break-word; }\n .swal2-popup #swal2-content {\n text-align: center; }\n .swal2-popup .swal2-input,\n .swal2-popup .swal2-file,\n .swal2-popup .swal2-textarea,\n .swal2-popup .swal2-select,\n .swal2-popup .swal2-radio,\n .swal2-popup .swal2-checkbox {\n margin: 1em auto; }\n .swal2-popup .swal2-input,\n .swal2-popup .swal2-file,\n .swal2-popup .swal2-textarea {\n width: 100%;\n -webkit-transition: border-color .3s, -webkit-box-shadow .3s;\n transition: border-color .3s, -webkit-box-shadow .3s;\n transition: border-color .3s, box-shadow .3s;\n transition: border-color .3s, box-shadow .3s, -webkit-box-shadow .3s;\n border: 1px solid #d9d9d9;\n border-radius: 3px;\n font-size: 1.125em;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06);\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .swal2-popup .swal2-input.swal2-inputerror,\n .swal2-popup .swal2-file.swal2-inputerror,\n .swal2-popup .swal2-textarea.swal2-inputerror {\n border-color: #f27474 !important;\n -webkit-box-shadow: 0 0 2px #f27474 !important;\n box-shadow: 0 0 2px #f27474 !important; }\n .swal2-popup .swal2-input:focus,\n .swal2-popup .swal2-file:focus,\n .swal2-popup .swal2-textarea:focus {\n border: 1px solid #b4dbed;\n outline: none;\n -webkit-box-shadow: 0 0 3px #c4e6f5;\n box-shadow: 0 0 3px #c4e6f5; }\n .swal2-popup .swal2-input::-webkit-input-placeholder,\n .swal2-popup .swal2-file::-webkit-input-placeholder,\n .swal2-popup .swal2-textarea::-webkit-input-placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-input:-ms-input-placeholder,\n .swal2-popup .swal2-file:-ms-input-placeholder,\n .swal2-popup .swal2-textarea:-ms-input-placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-input::-ms-input-placeholder,\n .swal2-popup .swal2-file::-ms-input-placeholder,\n .swal2-popup .swal2-textarea::-ms-input-placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-input::placeholder,\n .swal2-popup .swal2-file::placeholder,\n .swal2-popup .swal2-textarea::placeholder {\n color: #cccccc; }\n .swal2-popup .swal2-range input {\n width: 80%; }\n .swal2-popup .swal2-range output {\n width: 20%;\n font-weight: 600;\n text-align: center; }\n .swal2-popup .swal2-range input,\n .swal2-popup .swal2-range output {\n height: 2.625em;\n margin: 1em auto;\n padding: 0;\n font-size: 1.125em;\n line-height: 2.625em; }\n .swal2-popup .swal2-input {\n height: 2.625em;\n padding: 0 .75em; }\n .swal2-popup .swal2-input[type='number'] {\n max-width: 10em; }\n .swal2-popup .swal2-file {\n font-size: 1.125em; }\n .swal2-popup .swal2-textarea {\n height: 6.75em;\n padding: .75em; }\n .swal2-popup .swal2-select {\n min-width: 50%;\n max-width: 100%;\n padding: .375em .625em;\n color: #545454;\n font-size: 1.125em; }\n .swal2-popup .swal2-radio,\n .swal2-popup .swal2-checkbox {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .swal2-popup .swal2-radio label,\n .swal2-popup .swal2-checkbox label {\n margin: 0 .6em;\n font-size: 1.125em; }\n .swal2-popup .swal2-radio input,\n .swal2-popup .swal2-checkbox input {\n margin: 0 .4em; }\n .swal2-popup .swal2-validationerror {\n display: none;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding: .625em;\n background-color: #f0f0f0;\n color: gray;\n font-size: 1em;\n font-weight: 300;\n overflow: hidden; }\n .swal2-popup .swal2-validationerror::before {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n margin: 0 .625em;\n border-radius: 50%;\n background-color: #ea7d7d;\n color: #fff;\n font-weight: 600;\n line-height: 1.5em;\n text-align: center;\n content: '!'; }\n\n@supports (-ms-accelerator: true) {\n .swal2-range input {\n width: 100% !important; }\n .swal2-range output {\n display: none; } }\n\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .swal2-range input {\n width: 100% !important; }\n .swal2-range output {\n display: none; } }\n\n.swal2-icon {\n position: relative;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 80px;\n height: 80px;\n margin: 1.25em auto 1.875em;\n border: 4px solid transparent;\n border-radius: 50%;\n line-height: 80px;\n cursor: default;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-user-select: none;\n -moz-user-select: none;
11\n -ms-user-select: none;\n user-select: none; }\n .swal2-icon.swal2-error {\n border-color: #f27474; }\n .swal2-icon.swal2-error .swal2-x-mark {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1; }\n .swal2-icon.swal2-error [class^='swal2-x-mark-line'] {\n display: block;\n position: absolute;\n top: 37px;\n width: 47px;\n height: 5px;\n border-radius: 2px;\n background-color: #f27474; }\n .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='left'] {\n left: 17px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg); }\n .swal2-icon.swal2-error [class^='swal2-x-mark-line'][class$='right'] {\n right: 16px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n .swal2-icon.swal2-warning, .swal2-icon.swal2-info, .swal2-icon.swal2-question {\n margin: .333333em auto .5em;\n font-family: inherit;\n font-size: 3.75em; }\n .swal2-icon.swal2-warning {\n border-color: #facea8;\n color: #f8bb86; }\n .swal2-icon.swal2-info {\n border-color: #9de0f6;\n color: #3fc3ee; }\n .swal2-icon.swal2-question {\n border-color: #c9dae1;\n color: #87adbd; }\n .swal2-icon.swal2-success {\n border-color: #a5dc86; }\n .swal2-icon.swal2-success [class^='swal2-success-circular-line'] {\n position: absolute;\n width: 60px;\n height: 120px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n border-radius: 50%; }\n .swal2-icon.swal2-success [class^='swal2-success-circular-line'][class$='left'] {\n top: -7px;\n left: -33px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform-origin: 60px 60px;\n transform-origin: 60px 60px;\n border-radius: 120px 0 0 120px; }\n .swal2-icon.swal2-success [class^='swal2-success-circular-line'][class$='right'] {\n top: -11px;\n left: 30px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-transform-origin: 0 60px;\n transform-origin: 0 60px;\n border-radius: 0 120px 120px 0; }\n .swal2-icon.swal2-success .swal2-success-ring {\n position: absolute;\n top: -4px;\n left: -4px;\n width: 80px;\n height: 80px;
11\n border: 4px solid rgba(165, 220, 134, 0.2);\n border-radius: 50%;\n z-index: 2;\n -webkit-box-sizing: content-box;\n box-sizing: content-box; }\n .swal2-icon.swal2-success .swal2-success-fix {\n position: absolute;\n top: 8px;\n left: 26px;\n width: 7px;\n height: 90px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg);\n z-index: 1; }\n .swal2-icon.swal2-success [class^='swal2-success-line'] {\n display: block;\n position: absolute;\n height: 5px;\n border-radius: 2px;\n background-color: #a5dc86;\n z-index: 2; }\n .swal2-icon.swal2-success [class^='swal2-success-line'][class$='tip'] {\n top: 46px;\n left: 14px;\n width: 25px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg); }\n .swal2-icon.swal2-success [class^='swal2-success-line'][class$='long'] {\n top: 38px;\n right: 8px;\n width: 47px;\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n\n.swal2-progresssteps {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin: 0 0 1.25em;\n padding: 0;\n font-weight: 600; }\n .swal2-progresssteps li {\n display: inline-block;\n position: relative; }\n .swal2-progresssteps .swal2-progresscircle {\n width: 2em;\n height: 2em;\n border-radius: 2em;\n background: #3085d6;\n color: #fff;\n line-height: 2em;\n text-align: center;\n z-index: 20; }\n .swal2-progresssteps .swal2-progresscircle:first-child {\n margin-left: 0; }\n .swal2-progresssteps .swal2-progresscircle:last-child {\n margin-right: 0; }\n .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep {\n background: #3085d6; }\n .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progresscircle {\n background: #add8e6; }\n .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progressline {\n background: #add8e6; }\n .swal2-progresssteps .swal2-progressline {\n width: 2.5em;\n height: .4em;\n margin: 0 -1px;\n background: #3085d6;\n z-index: 10; }\n\n[class^='swal2'] {\n -webkit-tap-highlight-color: transparent; }\n\n@-webkit-keyframes showSweetAlert {\n 0% {\n -webkit-transform: scale(0.7);\n transform: scale(0.7); }\n 45% {\n -webkit-transform: scale(1.05);\n transform: scale(1.05); }\n 80% {\n -webkit-transform: scale(0.95);\n transform: scale(0.95); }\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1); } }\n\n@keyframes showSweetAlert {\n 0% {\n -webkit-transform: scale(0.7);\n transform: scale(0.7); }\n 45% {\n -webkit-transform: scale(1.05);\n transform: scale(1.05); }\n 80% {\n -webkit-transform: scale(0.95);\n transform: scale(0.95); }\n 100% {\n -webkit-transform: scale(1);\n transform: scale(1); } }\n\n@-webkit-keyframes hideSweetAlert {\n 0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; }\n 100% {\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n opacity: 0; } }\n\n@keyframes hideSweetAlert {\n 0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; }\n 100% {\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n opacity: 0; } }\n\n.swal2-show {\n -webkit-animation: showSweetAlert .3s;\n animation: showSweetAlert .3s; }\n .swal2-show.swal2-noanimation {\n -webkit-animation: none;\n animation: none; }\n\n.swal2-hide {\n -webkit-animation: hideSweetAlert .15s forwards;\n animation: hideSweetAlert .15s forwards; }\n .swal2-hide.swal2-noanimation {\n -webkit-animation: none;\n animation: none; }\n\n[dir='rtl'] .swal2-close {\n right: auto;\n left: 8px; }\n\n@-webkit-keyframes animate-success-tip {\n 0% {\n top: 19px;\n left: 1px;\n width: 0; }
11\n 54% {\n top: 17px;\n left: 2px;\n width: 0; }\n 70% {\n top: 35px;\n left: -6px;\n width: 50px; }\n 84% {\n top: 48px;\n left: 21px;\n width: 17px; }\n 100% {\n top: 45px;\n left: 14px;\n width: 25px; } }\n\n@keyframes animate-success-tip {\n 0% {\n top: 19px;\n left: 1px;\n width: 0; }\n 54% {\n top: 17px;\n left: 2px;\n width: 0; }\n 70% {\n top: 35px;\n left: -6px;\n width: 50px; }\n 84% {\n top: 48px;\n left: 21px;\n width: 17px; }\n 100% {\n top: 45px;\n left: 14px;\n width: 25px; } }\n\n@-webkit-keyframes animate-success-long {\n 0% {\n top: 54px;\n right: 46px;\n width: 0; }\n 65% {\n top: 54px;\n right: 46px;\n width: 0; }\n 84% {\n top: 35px;\n right: 0;\n width: 55px; }\n 100% {\n top: 38px;\n right: 8px;\n width: 47px; } }\n\n@keyframes animate-success-long {\n 0% {\n top: 54px;\n right: 46px;\n width: 0; }\n 65% {\n top: 54px;\n right: 46px;\n width: 0; }\n 84% {\n top: 35px;\n right: 0;\n width: 55px; }\n 100% {\n top: 38px;\n right: 8px;\n width: 47px; } }\n\n@-webkit-keyframes rotatePlaceholder {\n 0% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 5% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 12% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); }\n 100% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); } }\n\n@keyframes rotatePlaceholder {\n 0% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 5% {\n -webkit-transform: rotate(-45deg);\n transform: rotate(-45deg); }\n 12% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); }\n 100% {\n -webkit-transform: rotate(-405deg);\n transform: rotate(-405deg); } }\n\n.swal2-animate-success-line-tip {\n -webkit-animation: animate-success-tip .75s;\n animation: animate-success-tip .75s; }\n\n.swal2-animate-success-line-long {\n -webkit-animation: animate-success-long .75s;\n animation: animate-success-long .75s; }\n\n.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right {\n -webkit-animation: rotatePlaceholder 4.25s ease-in;\n animation: rotatePlaceholder 4.25s ease-in; }\n\n@-webkit-keyframes animate-error-icon {\n 0% {\n -webkit-transform: rotateX(100deg);\n transform: rotateX(100deg);\n opacity: 0; }\n 100% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n opacity: 1; } }\n\n@keyframes animate-error-icon {\n 0% {\n -webkit-transform: rotateX(100deg);\n transform: rotateX(100deg);\n opacity: 0; }\n 100% {\n -webkit-transform: rotateX(0deg);\n transform: rotateX(0deg);\n opacity: 1; } }\n\n.swal2-animate-error-icon {\n -webkit-animation: animate-error-icon .5s;\n animation: animate-error-icon .5s; }\n\n@-webkit-keyframes animate-x-mark {\n 0% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 50% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 80% {\n margin-top: -6px;\n -webkit-transform: scale(1.15);\n transform: scale(1.15); }\n 100% {\n margin-top: 0;\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; } }\n\n@keyframes animate-x-mark {\n 0% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 50% {\n margin-top: 26px;\n -webkit-transform: scale(0.4);\n transform: scale(0.4);\n opacity: 0; }\n 80% {\n margin-top: -6px;\n -webkit-transform: scale(1.15);\n transform: scale(1.15); }\n 100% {\n margin-top: 0;\n -webkit-transform: scale(1);\n transform: scale(1);\n opacity: 1; } }\n\n.swal2-animate-x-mark {\n -webkit-animation: animate-x-mark .5s;\n animation: animate-x-mark .5s; }\n\n@-webkit-keyframes rotate-loading {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes rotate-loading {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n"; 12 13var defaultParams = { 14 title: '', 15 titleText: '', 16 text: '', 17 html: '', 18 footer: '', 19 type: null, 20 toast: false, 21 customClass: '', 22 target: 'body', 23 backdrop: true, 24 animation: true, 25 allowOutsideClick: true, 26 allowEscapeKey: true, 27 allowEnterKey: true, 28 showConfirmButton: true,
29 showCancelButton: false, 30 preConfirm: null, 31 confirmButtonText: 'OK', 32 confirmButtonAriaLabel: '', 33 confirmButtonColor: null, 34 confirmButtonClass: null, 35 cancelButtonText: 'Cancel', 36 cancelButtonAriaLabel: '', 37 cancelButtonColor: null, 38 cancelButtonClass: null, 39 buttonsStyling: true, 40 reverseButtons: false, 41 focusConfirm: true, 42 focusCancel: false, 43 showCloseButton: false, 44 closeButtonAriaLabel: 'Close this dialog', 45 showLoaderOnConfirm: false, 46 imageUrl: null, 47 imageWidth: null, 48 imageHeight: null, 49 imageAlt: '', 50 imageClass: null, 51 timer: null, 52 width: null, 53 padding: null, 54 background: null, 55 input: null, 56 inputPlaceholder: '', 57 inputValue: '', 58 inputOptions: {}, 59 inputAutoTrim: true, 60 inputClass: null, 61 inputAttributes: {}, 62 inputValidator: null, 63 grow: false, 64 position: 'center', 65 progressSteps: [], 66 currentProgressStep: null, 67 progressStepsDistance: null, 68 onBeforeOpen: null, 69 onOpen: null, 70 onClose: null, 71 useRejections: false, 72 expectRejections: false 73}; 74 75var deprecatedParams = ['useRejections', 'expectRejections']; 76 77var swalPrefix = 'swal2-'; 78 79var prefix = function prefix(items) { 80 var result = {}; 81 for (var i in items) { 82 result[items[i]] = swalPrefix + items[i]; 83 } 84 return result; 85}; 86 87var swalClasses = prefix(['container', 'shown', 'iosfix', 'popup', 'modal', 'no-backdrop', 'toast', 'toast-shown', 'fade', 'show', 'hide', 'noanimation', 'close', 'title', 'header', 'content', 'actions', 'confirm', 'cancel', 'footer', 'icon', 'image', 'input', 'has-input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea', 'inputerror', 'validationerror', 'progresssteps', 'activeprogressstep', 'progresscircle', 'progressline', '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']); 88 89var iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); 90 91var consolePrefix = 'SweetAlert2:'; 92 93/** 94 * Filter the unique values into a new array 95 * @param arr 96 */ 97var uniqueArray = function uniqueArray(arr) { 98 var result = []; 99 var _iteratorNormalCompletion = true; 100 var _didIteratorError = false; 101 var _iteratorError = undefined; 102 103 try { 104 for (var _iterator = arr[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { 105 var elem = _step.value; 106 107 if (result.indexOf(elem) === -1) { 108 result.push(elem); 109 } 110 } 111 } catch (err) { 112 _didIteratorError = true; 113 _iteratorError = err; 114 } finally { 115 try { 116 if (!_iteratorNormalCompletion && _iterator.return) { 117 _iterator.return(); 118 } 119 } finally { 120 if (_didIteratorError) { 121 throw _iteratorError; 122 } 123 } 124 } 125 126 return result; 127}; 128 129/** 130 * Convert object into iterable Map 131 * https://stackoverflow.com/a/36644532/1331425 132 * @param obj 133 */ 134var objectToMap = function objectToMap(obj) { 135 if (obj instanceof Map) { 136 return obj; 137 } 138 var map = new Map(); 139 Object.keys(obj).forEach(function (key) { 140 map.set(key, obj[key]); 141 }); 142 return map; 143}; 144 145/** 146 * Standardise console warnings 147 * @param message 148 */ 149var warn = function warn(message) { 150 console.warn(consolePrefix + ' ' + message); 151}; 152 153/** 154 * Standardise console errors 155 * @param message 156 */ 157var error = function error(message) { 158 console.error(consolePrefix + ' ' + message); 159}; 160 161/** 162 * Private global state for `warnOnce` 163 * @type {Array} 164 * @private 165 */ 166var previousWarnOnceMessages = []; 167 168/** 169 * Show a console warning, but only if it hasn't already been shown 170 * @param message 171 */ 172var warnOnce = function warnOnce(message) { 173 if (!(previousWarnOnceMessages.indexOf(message) !== -1)) { 174 previousWarnOnceMessages.push(message); 175 warn(message); 176 } 177}; 178 179/** 180 * If `arg` is a function, call it (with no arguments or context) and return the result. 181 * Otherwise, just pass the value through 182 * @param arg 183 */ 184var callIfFunction = function callIfFunction(arg) { 185 return typeof arg === 'function' ? arg() : arg;
vendor: 1,539 bytes, lines 186-289
186}; 187 188var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { 189 return typeof obj; 190} : function (obj) { 191 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 192}; 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214var _extends = Object.assign || function (target) { 215 for (var i = 1; i < arguments.length; i++) { 216 var source = arguments[i]; 217 218 for (var key in source) { 219 if (Object.prototype.hasOwnProperty.call(source, key)) { 220 target[key] = source[key]; 221 } 222 } 223 } 224 225 return target; 226}; 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248var slicedToArray = function () { 249 function sliceIterator(arr, i) { 250 var _arr = []; 251 var _n = true; 252 var _d = false; 253 var _e = undefined; 254 255 try { 256 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 257 _arr.push(_s.value); 258 259 if (i && _arr.length === i) break; 260 } 261 } catch (err) { 262 _d = true; 263 _e = err; 264 } finally { 265 try { 266 if (!_n && _i["return"]) _i["return"](); 267 } finally { 268 if (_d) throw _e; 269 } 270 } 271 272 return _arr; 273 } 274 275 return function (arr, i) { 276 if (Array.isArray(arr)) { 277 return arr; 278 } else if (Symbol.iterator in Object(arr)) { 279 return sliceIterator(arr, i); 280 } else { 281 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 282 } 283 }; 284}(); 285 286var popupParams = _extends({}, defaultParams); 287var queue = []; 288 289var previousWindowKeyDown = void 0;
290var windowOnkeydownOverridden = void 0; 291 292/** 293 * Show relevant warnings for given params 294 * 295 * @param params 296 */ 297var showWarningsForParams = function showWarningsForParams(params) { 298 for (var param in params) { 299 if (!sweetAlert.isValidParameter(param)) { 300 warn('Unknown parameter "' + param + '"'); 301 } 302 if (sweetAlert.isDeprecatedParameter(param)) { 303 warnOnce('The parameter "' + param + '" is deprecated and will be removed in the next major release.'); 304 } 305 } 306}; 307 308/** 309 * Set type, text and actions on popup 310 * 311 * @param params 312 * @returns {boolean} 313 */ 314var setParameters = function setParameters(params) { 315 // Determine if the custom target element is valid 316 if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { 317 warn('Target parameter is not valid, defaulting to "body"'); 318 params.target = 'body'; 319 } 320 321 var popup = void 0; 322 var oldPopup = getPopup(); 323 var targetElement = typeof params.target === 'string' ? document.querySelector(params.target) : params.target; 324 // If the model target has changed, refresh the popup 325 if (oldPopup && targetElement && oldPopup.parentNode !== targetElement.parentNode) { 326 popup = init(params); 327 } else { 328 popup = oldPopup || init(params); 329 } 330 331 // Set popup width 332 if (params.width) { 333 popup.style.width = typeof params.width === 'number' ? params.width + 'px' : params.width; 334 } 335 336 // Set popup padding 337 if (params.padding) { 338 popup.style.padding = typeof params.padding === 'number' ? params.padding + 'px' : params.padding; 339 } 340 341 // Set popup background 342 if (params.background) { 343 popup.style.background = params.background; 344 } 345 var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); 346 var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); 347 for (var i = 0; i < successIconParts.length; i++) { 348 successIconParts[i].style.backgroundColor = popupBackgroundColor; 349 } 350 351 var container = getContainer(); 352 var title = getTitle(); 353 var content = getContent().querySelector('#' + swalClasses.content); 354 var actions = getActions(); 355 var confirmButton = getConfirmButton(); 356 var cancelButton = getCancelButton(); 357 var closeButton = getCloseButton(); 358 var footer = getFooter(); 359 360 // Title 361 if (params.titleText) { 362 title.innerText = params.titleText; 363 } else if (params.title) { 364 title.innerHTML = params.title.split('\n').join('<br />'); 365 } 366 367 if (typeof params.backdrop === 'string') { 368 getContainer().style.background = params.backdrop; 369 } else if (!params.backdrop) { 370 addClass([document.documentElement, document.body], swalClasses['no-backdrop']); 371 } 372 373 // Content as HTML 374 if (params.html) { 375 parseHtmlToContainer(params.html, content); 376 377 // Content as plain text 378 } else if (params.text) { 379 content.textContent = params.text; 380 show(content); 381 } else { 382 hide(content); 383 } 384 385 // Position 386 if (params.position in swalClasses) { 387 addClass(container, swalClasses[params.position]); 388 } else { 389 warn('The "position" parameter is not valid, defaulting to "center"'); 390 addClass(container, swalClasses.center); 391 } 392 393 // Grow 394 if (params.grow && typeof params.grow === 'string') { 395 var growClass = 'grow-' + params.grow; 396 if (growClass in swalClasses) { 397 addClass(container, swalClasses[growClass]); 398 } 399 } 400 401 // Close button 402 if (params.showCloseButton) { 403 closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); 404 show(closeButton); 405 } else { 406 hide(closeButton); 407 } 408 409 // Default Class 410 popup.className = swalClasses.popup; 411 if (params.toast) { 412 addClass([document.documentElement, document.body], swalClasses['toast-shown']); 413 addClass(popup, swalClasses.toast); 414 } else { 415 addClass(popup, swalClasses.modal); 416 } 417 418 // Custom Class 419 if (params.customClass) { 420 addClass(popup, params.customClass); 421 } 422 423 // Progress steps 424 var progressStepsContainer = getProgressSteps(); 425 var currentProgressStep = parseInt(params.currentProgressStep === null ? sweetAlert.getQueueStep() : params.currentProgressStep, 10); 426 if (params.progressSteps && params.progressSteps.length) { 427 show(progressStepsContainer); 428 empty(progressStepsContainer); 429 if (currentProgressStep >= params.progressSteps.length) { 430 warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); 431 } 432 params.progressSteps.forEach(function (step, index) { 433 var circle = document.createElement('li'); 434 addClass(circle, swalClasses.progresscircle); 435 circle.innerHTML = step; 436 if (index === currentProgressStep) { 437 addClass(circle, swalClasses.activeprogressstep); 438 } 439 progressStepsContainer.appendChild(circle); 440 if (index !== params.progressSteps.length - 1) { 441 var line = document.createElement('li'); 442 addClass(line, swalClasses.progressline); 443 if (params.progressStepsDistance) { 444 line.style.width = params.progressStepsDistance; 445 } 446 progressStepsContainer.appendChild(line); 447 } 448 }); 449 } else { 450 hide(progressStepsContainer); 451 } 452 453 // Icon 454 var icons = getIcons(); 455 for (var _i = 0; _i < icons.length; _i++) { 456 hide(icons[_i]); 457 } 458 if (params.type) {
459 var validType = false; 460 for (var iconType in iconTypes) { 461 if (params.type === iconType) { 462 validType = true; 463 break; 464 } 465 } 466 if (!validType) { 467 error('Unknown alert type: ' + params.type); 468 return false; 469 } 470 var icon = popup.querySelector('.' + swalClasses.icon + '.' + iconTypes[params.type]); 471 show(icon); 472 473 // Animate icon 474 if (params.animation) { 475 switch (params.type) { 476 case 'success': 477 addClass(icon, 'swal2-animate-success-icon'); 478 addClass(icon.querySelector('.swal2-success-line-tip'), 'swal2-animate-success-line-tip'); 479 addClass(icon.querySelector('.swal2-success-line-long'), 'swal2-animate-success-line-long'); 480 break; 481 case 'error': 482 addClass(icon, 'swal2-animate-error-icon'); 483 addClass(icon.querySelector('.swal2-x-mark'), 'swal2-animate-x-mark'); 484 break; 485 default: 486 break; 487 } 488 } 489 } 490 491 // Custom image 492 var image = getImage(); 493 if (params.imageUrl) { 494 image.setAttribute('src', params.imageUrl); 495 image.setAttribute('alt', params.imageAlt); 496 show(image); 497 498 if (params.imageWidth) { 499 image.setAttribute('width', params.imageWidth); 500 } else { 501 image.removeAttribute('width'); 502 } 503 504 if (params.imageHeight) { 505 image.setAttribute('height', params.imageHeight); 506 } else { 507 image.removeAttribute('height'); 508 } 509 510 image.className = swalClasses.image; 511 if (params.imageClass) { 512 addClass(image, params.imageClass); 513 } 514 } else { 515 hide(image); 516 } 517 518 // Cancel button 519 if (params.showCancelButton) { 520 cancelButton.style.display = 'inline-block'; 521 } else { 522 hide(cancelButton); 523 } 524 525 // Confirm button 526 if (params.showConfirmButton) { 527 removeStyleProperty(confirmButton, 'display'); 528 } else { 529 hide(confirmButton); 530 } 531 532 // Actions (buttons) wrapper 533 if (!params.showConfirmButton && !params.showCancelButton) { 534 hide(actions); 535 } else { 536 show(actions); 537 } 538 539 // Edit text on confirm and cancel buttons 540 confirmButton.innerHTML = params.confirmButtonText; 541 cancelButton.innerHTML = params.cancelButtonText; 542 543 // ARIA labels for confirm and cancel buttons 544 confirmButton.setAttribute('aria-label', params.confirmButtonAriaLabel); 545 cancelButton.setAttribute('aria-label', params.cancelButtonAriaLabel); 546 547 // Add buttons custom classes 548 confirmButton.className = swalClasses.confirm; 549 addClass(confirmButton, params.confirmButtonClass); 550 cancelButton.className = swalClasses.cancel; 551 addClass(cancelButton, params.cancelButtonClass); 552 553 // Buttons styling 554 if (params.buttonsStyling) { 555 addClass([confirmButton, cancelButton], swalClasses.styled); 556 557 // Buttons background colors 558 if (params.confirmButtonColor) { 559 confirmButton.style.backgroundColor = params.confirmButtonColor; 560 } 561 if (params.cancelButtonColor) { 562 cancelButton.style.backgroundColor = params.cancelButtonColor; 563 } 564 565 // Loading state 566 var confirmButtonBackgroundColor = window.getComputedStyle(confirmButton).getPropertyValue('background-color'); 567 confirmButton.style.borderLeftColor = confirmButtonBackgroundColor; 568 confirmButton.style.borderRightColor = confirmButtonBackgroundColor; 569 } else { 570 removeClass([confirmButton, cancelButton], swalClasses.styled); 571 572 confirmButton.style.backgroundColor = confirmButton.style.borderLeftColor = confirmButton.style.borderRightColor = ''; 573 cancelButton.style.backgroundColor = cancelButton.style.borderLeftColor = cancelButton.style.borderRightColor = ''; 574 } 575 576 // Footer 577 parseHtmlToContainer(params.footer, footer); 578 579 // CSS animation 580 if (params.animation === true) { 581 removeClass(popup, swalClasses.noanimation); 582 } else { 583 addClass(popup, swalClasses.noanimation); 584 } 585 586 // showLoaderOnConfirm && preConfirm 587 if (params.showLoaderOnConfirm && !params.preConfirm) { 588 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'); 589 } 590}; 591 592/** 593 * Animations 594 * 595 * @param animation 596 * @param onBeforeOpen 597 * @param onComplete 598 */ 599var openPopup = function openPopup(animation, onBeforeOpen, onComplete) { 600 var container = getContainer(); 601 var popup = getPopup(); 602 603 if (onBeforeOpen !== null && typeof onBeforeOpen === 'function') { 604 onBeforeOpen(popup); 605 } 606 607 if (animation) { 608 addClass(popup, swalClasses.show); 609 addClass(container, swalClasses.fade); 610 removeClass(popup, swalClasses.hide); 611 } else { 612 removeClass(popup, swalClasses.fade); 613 } 614 show(popup); 615 616 // scrolling is 'hidden' until animation is done, after that 'auto' 617 container.style.overflowY = 'hidden'; 618 if (animationEndEvent && !hasClass(popup, swalClasses.noanimation)) { 619 popup.addEventListener(animationEndEvent, function swalCloseEventFinished() { 620 popup.removeEventListener(animationEndEvent, swalCloseEventFinished); 621 container.style.overflowY = 'auto'; 622 }); 623 } else { 624 container.style.overflowY = 'auto'; 625 } 626 627 addClass([document.documentElement, document.body, container], swalClasses.shown); 628 if (isModal()) { 629 fixScrollbar(); 630 iOSfix(); 631 } 632 states.previousActiveElement = document.activeElement; 633 if (onComplete !== null && typeof onComplete === 'function') { 634 setTimeout(function () { 635 onComplete(popup); 636 }); 637 } 638}; 639 640var fixScrollbar = function fixScrollbar() { 641 // for queues, do not do this more than once 642 if (states.previousBodyPadding !== null) { 643 return; 644 } 645 // if the body has overflow 646 if (document.body.scrollHeight > window.innerHeight) { 647 // add padding so the content doesn't shift after removal of scrollbar 648 states.previousBodyPadding = document.body.style.paddingRight; 649 document.body.style.paddingRight = measureScrollbar() + 'px'; 650 } 651}; 652 653var undoScrollbar = function undoScrollbar() { 654 if (states.previousBodyPadding !== null) { 655 document.body.style.paddingRight = states.previousBodyPadding; 656 states.previousBodyPadding = null; 657 } 658}; 659 660// Fix iOS scrolling http://stackoverflow.com/q/39626302/1331425 661var iOSfix = function iOSfix() { 662 var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 663 if (iOS && !hasClass(document.body, swalClasses.iosfix)) { 664 var offset = document.body.scrollTop; 665 document.body.style.top = offset * -1 + 'px'; 666 addClass(document.body, swalClasses.iosfix); 667 } 668}; 669 670var undoIOSfix = function undoIOSfix() { 671 if (hasClass(document.body, swalClasses.iosfix)) { 672 var offset = parseInt(document.body.style.top, 10); 673 removeClass(document.body, swalClasses.iosfix); 674 document.body.style.top = ''; 675 document.body.scrollTop = offset * -1; 676 } 677}; 678 679// SweetAlert entry point 680var sweetAlert = function sweetAlert() { 681 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { 682 args[_key] = arguments[_key]; 683 } 684 685 // Prevent run in Node env 686 if (typeof window === 'undefined') { 687 return; 688 } 689 690 // Check for the existence of Promise 691 if (typeof Promise === 'undefined') { 692 error('This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)'); 693 } 694 695 if (typeof args[0] === 'undefined') { 696 error('SweetAlert2 expects at least 1 attribute!'); 697 return false;
698 } 699 700 var params = _extends({}, popupParams); 701 702 switch (_typeof(args[0])) { 703 case 'string': 704 params.title = args[0]; 705 params.html = args[1]; 706 params.type = args[2]; 707 708 break; 709 710 case 'object': 711 showWarningsForParams(args[0]); 712 _extends(params, args[0]); 713 params.extraParams = args[0].extraParams; 714 715 if (params.input === 'email' && params.inputValidator === null) { 716 var inputValidator = function inputValidator(email) { 717 return new Promise(function (resolve, reject) { 718 var emailRegex = /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/; 719 if (emailRegex.test(email)) { 720 resolve(); 721 } else { 722 reject('Invalid email address'); 723 } 724 }); 725 }; 726 params.inputValidator = params.expectRejections ? inputValidator : sweetAlert.adaptInputValidator(inputValidator); 727 } 728 729 if (params.input === 'url' && params.inputValidator === null) { 730 var _inputValidator = function _inputValidator(url) { 731 return new Promise(function (resolve, reject) { 732 // taken from https://stackoverflow.com/a/3809435/1331425 733 var urlRegex = /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)$/; 734 if (urlRegex.test(url)) { 735 resolve(); 736 } else { 737 reject('Invalid URL'); 738 } 739 }); 740 }; 741 params.inputValidator = params.expectRejections ? _inputValidator : sweetAlert.adaptInputValidator(_inputValidator); 742 } 743 break; 744 745 default: 746 error('Unexpected type of argument! Expected "string" or "object", got ' + _typeof(args[0])); 747 return false; 748 } 749 750 setParameters(params); 751 752 var container = getContainer(); 753 var popup = getPopup(); 754 755 return new Promise(function (resolve, reject) { 756 // functions to handle all resolving/rejecting/settling 757 var succeedWith = function succeedWith(value) { 758 sweetAlert.closePopup(params.onClose); 759 if (params.useRejections) { 760 resolve(value); 761 } else { 762 resolve({ value: value }); 763 } 764 }; 765 var dismissWith = function dismissWith(dismiss) { 766 sweetAlert.closePopup(params.onClose); 767 if (params.useRejections) { 768 reject(dismiss); 769 } else { 770 resolve({ dismiss: dismiss }); 771 } 772 }; 773 var errorWith = function errorWith(error$$1) { 774 sweetAlert.closePopup(params.onClose); 775 reject(error$$1); 776 }; 777 778 // Close on timer 779 if (params.timer) { 780 popup.timeout = setTimeout(function () { 781 return dismissWith('timer'); 782 }, params.timer); 783 } 784 785 // Get input element by specified type or, if type isn't specified, by params.input 786 var getInput = function getInput(inputType) { 787 inputType = inputType || params.input; 788 if (!inputType) { 789 return null; 790 } 791 switch (inputType) { 792 case 'select': 793 case 'textarea': 794 case 'file': 795 return getChildByClass(content, swalClasses[inputType]); 796 case 'checkbox': 797 return popup.querySelector('.' + swalClasses.checkbox + ' input'); 798 case 'radio': 799 return popup.querySelector('.' + swalClasses.radio + ' input:checked') || popup.querySelector('.' + swalClasses.radio + ' input:first-child'); 800 case 'range': 801 return popup.querySelector('.' + swalClasses.range + ' input'); 802 default: 803 return getChildByClass(content, swalClasses.input); 804 } 805 }; 806 807 // Get the value of the popup input 808 var getInputValue = function getInputValue() { 809 var input = getInput(); 810 if (!input) { 811 return null; 812 } 813 switch (params.input) { 814 case 'checkbox': 815 return input.checked ? 1 : 0; 816 case 'radio': 817 return input.checked ? input.value : null; 818 case 'file': 819 return input.files.length ? input.files[0] : null; 820 default: 821 return params.inputAutoTrim ? input.value.trim() : input.value; 822 } 823 }; 824 825 // input autofocus 826 if (params.input) { 827 setTimeout(function () { 828 var input = getInput(); 829 if (input) { 830 focusInput(input); 831 } 832 }, 0); 833 } 834 835 var confirm = function confirm(value) { 836 if (params.showLoaderOnConfirm) { 837 sweetAlert.showLoading(); 838 } 839 840 if (params.preConfirm) { 841 sweetAlert.resetValidationError(); 842 var preConfirmPromise = Promise.resolve().then(function () { 843 return params.preConfirm(value, params.extraParams); 844 }); 845 if (params.expectRejections) { 846 preConfirmPromise.then(function (preConfirmValue) { 847 return succeedWith(preConfirmValue || value); 848 }, function (validationError) { 849 sweetAlert.hideLoading(); 850 if (validationError) { 851 sweetAlert.showValidationError(validationError); 852 } 853 }); 854 } else { 855 preConfirmPromise.then(function (preConfirmValue) { 856 if (isVisible(getValidationError()) || preConfirmValue === false) { 857 sweetAlert.hideLoading(); 858 } else { 859 succeedWith(preConfirmValue || value); 860 } 861 }, function (error$$1) { 862 return errorWith(error$$1); 863 }); 864 } 865 } else { 866 succeedWith(value); 867 } 868 }; 869 870 // Mouse interactions 871 var onButtonEvent = function onButtonEvent(event) { 872 var e = event || window.event; 873 var target = e.target || e.srcElement; 874 var confirmButton = getConfirmButton(); 875 var cancelButton = getCancelButton(); 876 var targetedConfirm = confirmButton && (confirmButton === target || confirmButton.contains(target)); 877 var targetedCancel = cancelButton && (cancelButton === target || cancelButton.contains(target)); 878 879 switch (e.type) { 880 case 'click': 881 // Clicked 'confirm' 882 if (targetedConfirm && sweetAlert.isVisible()) { 883 sweetAlert.disableButtons(); 884 if (params.input) { 885 var inputValue = getInputValue(); 886 887 if (params.inputValidator) { 888 sweetAlert.disableInput();
889 var validationPromise = Promise.resolve().then(function () { 890 return params.inputValidator(inputValue, params.extraParams); 891 }); 892 if (params.expectRejections) { 893 validationPromise.then(function () { 894 sweetAlert.enableButtons(); 895 sweetAlert.enableInput(); 896 confirm(inputValue); 897 }, function (validationError) { 898 sweetAlert.enableButtons(); 899 sweetAlert.enableInput(); 900 if (validationError) { 901 sweetAlert.showValidationError(validationError); 902 } 903 }); 904 } else { 905 validationPromise.then(function (validationError) { 906 sweetAlert.enableButtons(); 907 sweetAlert.enableInput(); 908 if (validationError) { 909 sweetAlert.showValidationError(validationError); 910 } else { 911 confirm(inputValue); 912 } 913 }, function (error$$1) { 914 return errorWith(error$$1); 915 }); 916 } 917 } else { 918 confirm(inputValue); 919 } 920 } else { 921 confirm(true); 922 } 923 924 // Clicked 'cancel' 925 } else if (targetedCancel && sweetAlert.isVisible()) { 926 sweetAlert.disableButtons(); 927 dismissWith(sweetAlert.DismissReason.cancel); 928 } 929 break; 930 default: 931 } 932 }; 933 934 var buttons = popup.querySelectorAll('button'); 935 for (var i = 0; i < buttons.length; i++) { 936 buttons[i].onclick = onButtonEvent; 937 buttons[i].onmouseover = onButtonEvent; 938 buttons[i].onmouseout = onButtonEvent; 939 buttons[i].onmousedown = onButtonEvent; 940 } 941 942 // Closing popup by close button 943 getCloseButton().onclick = function () { 944 dismissWith(sweetAlert.DismissReason.close); 945 }; 946 947 if (params.toast) { 948 // Closing popup by backdrop click 949 popup.onclick = function (e) { 950 if (e.target !== popup || params.showConfirmButton || params.showCancelButton) { 951 return; 952 } 953 if (params.allowOutsideClick) { 954 sweetAlert.closePopup(params.onClose); 955 dismissWith(sweetAlert.DismissReason.backdrop); 956 } 957 }; 958 } else { 959 var ignoreOutsideClick = false; 960 961 // Ignore click events that had mousedown on the popup but mouseup on the container 962 // This can happen when the user drags a slider 963 popup.onmousedown = function () { 964 container.onmouseup = function (e) { 965 container.onmouseup = undefined; 966 // We only check if the mouseup target is the container because usually it doesn't 967 // have any other direct children aside of the popup 968 if (e.target === container) { 969 ignoreOutsideClick = true; 970 } 971 }; 972 }; 973 974 // Ignore click events that had mousedown on the container but mouseup on the popup 975 container.onmousedown = function () { 976 popup.onmouseup = function (e) { 977 popup.onmouseup = undefined; 978 // We also need to check if the mouseup target is a child of the popup 979 if (e.target === popup || popup.contains(e.target)) { 980 ignoreOutsideClick = true; 981 } 982 }; 983 }; 984 985 container.onclick = function (e) { 986 if (ignoreOutsideClick) { 987 ignoreOutsideClick = false; 988 return; 989 } 990 if (e.target !== container) { 991 return; 992 } 993 if (callIfFunction(params.allowOutsideClick)) { 994 dismissWith(sweetAlert.DismissReason.backdrop); 995 } 996 }; 997 } 998 999 var content = getContent(); 1000 var actions = getActions(); 1001 var confirmButton = getConfirmButton(); 1002 var cancelButton = getCancelButton(); 1003 1004 // Reverse buttons (Confirm on the right side) 1005 if (params.reverseButtons) { 1006 confirmButton.parentNode.insertBefore(cancelButton, confirmButton); 1007 } else { 1008 confirmButton.parentNode.insertBefore(confirmButton, cancelButton); 1009 } 1010 1011 // Focus handling 1012 var setFocus = function setFocus(index, increment) { 1013 var focusableElements = getFocusableElements(params.focusCancel); 1014 // search for visible elements and select the next possible match 1015 for (var _i2 = 0;
1015 _i2 < focusableElements.length; _i2++) { 1016 index = index + increment; 1017 1018 // rollover to first item 1019 if (index === focusableElements.length) { 1020 index = 0; 1021 1022 // go to last item 1023 } else if (index === -1) { 1024 index = focusableElements.length - 1; 1025 } 1026 1027 // determine if element is visible 1028 var el = focusableElements[index]; 1029 if (isVisible(el)) { 1030 return el.focus(); 1031 } 1032 } 1033 }; 1034 1035 var handleKeyDown = function handleKeyDown(event) { 1036 var e = event || window.event; 1037 1038 var arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down' // IE11 1039 ]; 1040 1041 if (e.key === 'Enter' && !e.isComposing) { 1042 if (e.target === getInput()) { 1043 if (['textarea', 'file'].indexOf(params.input) !== -1) { 1044 return; // do not submit 1045 } 1046 1047 sweetAlert.clickConfirm(); 1048 e.preventDefault(); 1049 } 1050 1051 // TAB 1052 } else if (e.key === 'Tab') { 1053 var targetElement = e.target || e.srcElement; 1054 1055 var focusableElements = getFocusableElements(params.focusCancel); 1056 var btnIndex = -1; // Find the button - note, this is a nodelist, not an array. 1057 for (var _i3 = 0; _i3 < focusableElements.length; _i3++) { 1058 if (targetElement === focusableElements[_i3]) { 1059 btnIndex = _i3; 1060 break; 1061 } 1062 } 1063 1064 if (!e.shiftKey) { 1065 // Cycle to the next button 1066 setFocus(btnIndex, 1); 1067 } else { 1068 // Cycle to the prev button 1069 setFocus(btnIndex, -1); 1070 } 1071 e.stopPropagation(); 1072 e.preventDefault(); 1073 1074 // ARROWS - switch focus between buttons 1075 } else if (arrowKeys.indexOf(e.key) !== -1) { 1076 // focus Cancel button if Confirm button is currently focused 1077 if (document.activeElement === confirmButton && isVisible(cancelButton)) { 1078 cancelButton.focus(); 1079 // and vice versa 1080 } else if (document.activeElement === cancelButton && isVisible(confirmButton)) { 1081 confirmButton.focus(); 1082 } 1083 1084 // ESC 1085 } else if ((e.key === 'Escape' || e.key === 'Esc') && callIfFunction(params.allowEscapeKey) === true) { 1086 dismissWith(sweetAlert.DismissReason.esc); 1087 } 1088 }; 1089
1090 if (params.toast && windowOnkeydownOverridden) { 1091 window.onkeydown = previousWindowKeyDown; 1092 windowOnkeydownOverridden = false; 1093 } 1094 1095 if (!params.toast && !windowOnkeydownOverridden) { 1096 previousWindowKeyDown = window.onkeydown; 1097 windowOnkeydownOverridden = true; 1098 window.onkeydown = handleKeyDown; 1099 } 1100 1101 /** 1102 * Show spinner instead of Confirm button and disable Cancel button 1103 */ 1104 sweetAlert.hideLoading = sweetAlert.disableLoading = function () { 1105 if (!params.showConfirmButton) { 1106 hide(confirmButton); 1107 if (!params.showCancelButton) { 1108 hide(getActions()); 1109 } 1110 } 1111 removeClass([popup, actions], swalClasses.loading); 1112 popup.removeAttribute('aria-busy'); 1113 popup.removeAttribute('data-loading'); 1114 confirmButton.disabled = false; 1115 cancelButton.disabled = false; 1116 }; 1117 1118 sweetAlert.getTitle = function () { 1119 return getTitle(); 1120 }; 1121 sweetAlert.getContent = function () { 1122 return getContent(); 1123 }; 1124 sweetAlert.getInput = function () { 1125 return getInput(); 1126 }; 1127 sweetAlert.getImage = function () { 1128 return getImage(); 1129 }; 1130 sweetAlert.getButtonsWrapper = function () { 1131 return getButtonsWrapper(); 1132 }; 1133 sweetAlert.getActions = function () { 1134 return getActions(); 1135 }; 1136 sweetAlert.getConfirmButton = function () { 1137 return getConfirmButton(); 1138 }; 1139 sweetAlert.getCancelButton = function () { 1140 return getCancelButton(); 1141 }; 1142 sweetAlert.getFooter = function () { 1143 return getFooter(); 1144 }; 1145 sweetAlert.isLoading = function () { 1146 return isLoading(); 1147 }; 1148 1149 sweetAlert.enableButtons = function () { 1150 confirmButton.disabled = false; 1151 cancelButton.disabled = false; 1152 }; 1153 1154 sweetAlert.disableButtons = function () { 1155 confirmButton.disabled = true; 1156 cancelButton.disabled = true; 1157 }; 1158 1159 sweetAlert.enableConfirmButton = function () { 1160 confirmButton.disabled = false; 1161 }; 1162 1163 sweetAlert.disableConfirmButton = function () { 1164 confirmButton.disabled = true; 1165 }; 1166 1167 sweetAlert.enableInput = function () { 1168 var input = getInput(); 1169 if (!input) { 1170 return false; 1171 } 1172 if (input.type === 'radio') { 1173 var radiosContainer = input.parentNode.parentNode; 1174 var radios = radiosContainer.querySelectorAll('input'); 1175 for (var _i4 = 0; _i4 < radios.length; _i4++) { 1176 radios[_i4].disabled = false; 1177 } 1178 } else { 1179 input.disabled = false; 1180 } 1181 }; 1182 1183 sweetAlert.disableInput = function () { 1184 var input = getInput(); 1185 if (!input) { 1186 return false; 1187 } 1188 if (input && input.type === 'radio') { 1189 var radiosContainer = input.parentNode.parentNode; 1190 var radios = radiosContainer.querySelectorAll('input'); 1191 for (var _i5 = 0; _i5 < radios.length; _i5++) { 1192 radios[_i5].disabled = true; 1193 } 1194 } else { 1195 input.disabled = true; 1196 } 1197 }; 1198 1199 // Show block with validation error 1200 sweetAlert.showValidationError = function (error$$1) { 1201 var validationError = getValidationError(); 1202 validationError.innerHTML = error$$1; 1203 var popupComputedStyle = window.getComputedStyle(popup); 1204 validationError.style.marginLeft = '-' + popupComputedStyle.getPropertyValue('padding-left'); 1205 validationError.style.marginRight = '-' + popupComputedStyle.getPropertyValue('padding-right'); 1206 show(validationError); 1207 1208 var input = getInput(); 1209 if (input) { 1210 input.setAttribute('aria-invalid', true); 1211 input.setAttribute('aria-describedBy', swalClasses.validationerror); 1212 focusInput(input); 1213 addClass(input, swalClasses.inputerror); 1214 } 1215 }; 1216 1217 // Hide block with validation error 1218 sweetAlert.resetValidationError = function () { 1219 var validationError = getValidationError(); 1220 hide(validationError); 1221 1222 var input = getInput(); 1223 if (input) { 1224 input.removeAttribute('aria-invalid'); 1225 input.removeAttribute('aria-describedBy'); 1226 removeClass(input, swalClasses.inputerror); 1227 } 1228 }; 1229 1230 sweetAlert.getProgressSteps = function () { 1231 return params.progressSteps; 1232 }; 1233 1234 sweetAlert.setProgressSteps = function (progressSteps) { 1235 params.progressSteps = progressSteps; 1236 setParameters(params); 1237 }; 1238 1239 sweetAlert.showProgressSteps = function () { 1240 show(getProgressSteps()); 1241 }; 1242 1243 sweetAlert.hideProgressSteps = function () { 1244 hide(getProgressSteps()); 1245 }; 1246 1247 sweetAlert.enableButtons(); 1248 sweetAlert.hideLoading(); 1249 sweetAlert.resetValidationError(); 1250 1251 if (params.input) { 1252 addClass(document.body, swalClasses['has-input']); 1253 } 1254 1255 // inputs 1256 var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; 1257 var input = void 0; 1258 for (var _i6 = 0; _i6 < inputTypes.length; _i6++) { 1259 var inputClass = swalClasses[inputTypes[_i6]]; 1260 var inputContainer = getChildByClass(content, inputClass); 1261 input = getInput(inputTypes[_i6]); 1262 1263 // set attributes 1264 if (input) { 1265 for (var j in input.attributes) { 1266 if (input.attributes.hasOwnProperty(j)) { 1267 var attrName = input.attributes[j].name; 1268 if (attrName !== 'type' && attrName !== 'value') { 1269 input.removeAttribute(attrName); 1270 } 1271 } 1272 } 1273 for (var attr in params.inputAttributes) { 1274 input.setAttribute(attr, params.inputAttributes[attr]); 1275 } 1276 } 1277 1278 // set class 1279 inputContainer.className = inputClass; 1280 if (params.inputClass) { 1281 addClass(inputContainer, params.inputClass); 1282 } 1283 1284 hide(inputContainer); 1285 } 1286 1287 var populateInputOptions = void 0; 1288 switch (params.input) { 1289 case 'text': 1290 case 'email': 1291 case 'password': 1292 case 'number': 1293 case 'tel': 1294 case 'url': 1295 input = getChildByClass(content, swalClasses.input); 1296 input.value = params.inputValue; 1297 input.placeholder = params.inputPlaceholder; 1298 input.type = params.input; 1299 show(input); 1300 break; 1301 case 'file': 1302 input = getChildByClass(content, swalClasses.file); 1303 input.placeholder = params.inputPlaceholder; 1304 input.type = params.input; 1305 show(input); 1306 break; 1307 case 'range': 1308 var range = getChildByClass(content, swalClasses.range); 1309 var rangeInput = range.querySelector('input'); 1310 var rangeOutput = range.querySelector('output'); 1311 rangeInput.value = params.inputValue; 1312 rangeInput.type = params.input; 1313 rangeOutput.value = params.inputValue; 1314 show(range); 1315 break; 1316 case 'select': 1317 var select = getChildByClass(content, swalClasses.select); 1318 select.innerHTML = ''; 1319 if (params.inputPlaceholder) { 1320 var placeholder = document.createElement('option'); 1321 placeholder.innerHTML = params.inputPlaceholder; 1322 placeholder.value = ''; 1323 placeholder.disabled = true; 1324 placeholder.selected = true; 1325 select.appendChild(placeholder); 1326 } 1327 populateInputOptions = function populateInputOptions(inputOptions) { 1328 inputOptions = objectToMap(inputOptions); 1329 var _iteratorNormalCompletion = true; 1330 var _didIteratorError = false;
1331 var _iteratorError = undefined; 1332 1333 try { 1334 for (var _iterator = inputOptions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { 1335 var _step$value = slicedToArray(_step.value, 2), 1336 optionValue = _step$value[0], 1337 optionLabel = _step$value[1]; 1338 1339 var option = document.createElement('option'); 1340 option.value = optionValue; 1341 option.innerHTML = optionLabel; 1342 if (params.inputValue.toString() === optionValue.toString()) { 1343 option.selected = true; 1344 } 1345 select.appendChild(option); 1346 } 1347 } catch (err) { 1348 _didIteratorError = true; 1349 _iteratorError = err; 1350 } finally { 1351 try { 1352 if (!_iteratorNormalCompletion && _iterator.return) { 1353 _iterator.return(); 1354 } 1355 } finally { 1356 if (_didIteratorError) { 1357 throw _iteratorError; 1358 } 1359 } 1360 } 1361 1362 show(select); 1363 select.focus(); 1364 }; 1365 break; 1366 case 'radio': 1367 var radio = getChildByClass(content, swalClasses.radio); 1368 radio.innerHTML = ''; 1369 populateInputOptions = function populateInputOptions(inputOptions) { 1370 inputOptions = objectToMap(inputOptions); 1371 var _iteratorNormalCompletion2 = true; 1372 var _didIteratorError2 = false;
1373 var _iteratorError2 = undefined; 1374 1375 try { 1376 for (var _iterator2 = inputOptions[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { 1377 var _step2$value = slicedToArray(_step2.value, 2), 1378 radioValue = _step2$value[0], 1379 radioLabel = _step2$value[1]; 1380 1381 var radioInput = document.createElement('input'); 1382 var radioLabelElement = document.createElement('label'); 1383 radioInput.type = 'radio'; 1384 radioInput.name = swalClasses.radio; 1385 radioInput.value = radioValue; 1386 if (params.inputValue.toString() === radioValue.toString()) { 1387 radioInput.checked = true; 1388 } 1389 radioLabelElement.innerHTML = radioLabel; 1390 radioLabelElement.insertBefore(radioInput, radioLabelElement.firstChild); 1391 radio.appendChild(radioLabelElement); 1392 } 1393 } catch (err) { 1394 _didIteratorError2 = true; 1395 _iteratorError2 = err; 1396 } finally { 1397 try { 1398 if (!_iteratorNormalCompletion2 && _iterator2.return) { 1399 _iterator2.return(); 1400 } 1401 } finally { 1402 if (_didIteratorError2) { 1403 throw _iteratorError2; 1404 } 1405 } 1406 } 1407 1408 show(radio); 1409 var radios = radio.querySelectorAll('input'); 1410 if (radios.length) { 1411 radios[0].focus(); 1412 } 1413 }; 1414 break; 1415 case 'checkbox': 1416 var checkbox = getChildByClass(content, swalClasses.checkbox); 1417 var checkboxInput = getInput('checkbox'); 1418 checkboxInput.type = 'checkbox'; 1419 checkboxInput.value = 1; 1420 checkboxInput.id = swalClasses.checkbox; 1421 checkboxInput.checked = Boolean(params.inputValue); 1422 var label = checkbox.getElementsByTagName('span'); 1423 if (label.length) { 1424 checkbox.removeChild(label[0]); 1425 } 1426 label = document.createElement('span'); 1427 label.innerHTML = params.inputPlaceholder; 1428 checkbox.appendChild(label); 1429 show(checkbox); 1430 break; 1431 case 'textarea': 1432 var textarea = getChildByClass(content, swalClasses.textarea); 1433 textarea.value = params.inputValue; 1434 textarea.placeholder = params.inputPlaceholder; 1435 show(textarea); 1436 break; 1437 case null: 1438 break; 1439 default: 1440 error('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "' + params.input + '"'); 1441 break; 1442 } 1443 1444 if (params.input === 'select' || params.input === 'radio') { 1445 if (params.inputOptions instanceof Promise) { 1446 sweetAlert.showLoading(); 1447 params.inputOptions.then(function (inputOptions) { 1448 sweetAlert.hideLoading(); 1449 populateInputOptions(inputOptions); 1450 }); 1451 } else if (_typeof(params.inputOptions) === 'object') { 1452 populateInputOptions(params.inputOptions); 1453 } else { 1454 error('Unexpected type of inputOptions! Expected object, Map or Promise, got ' + _typeof(params.inputOptions)); 1455 } 1456 } 1457 1458 openPopup(params.animation, params.onBeforeOpen, params.onOpen); 1459 1460 if (!params.toast) { 1461 if (!callIfFunction(params.allowEnterKey)) { 1462 if (document.activeElement) { 1463 document.activeElement.blur(); 1464 } 1465 } else if (params.focusCancel && isVisible(cancelButton)) { 1466 cancelButton.focus(); 1467 } else if (params.focusConfirm && isVisible(confirmButton)) { 1468 confirmButton.focus(); 1469 } else { 1470 setFocus(-1, 1); 1471 } 1472 } 1473 1474 // fix scroll 1475 getContainer().scrollTop = 0; 1476 }); 1477}; 1478 1479/* 1480 * Global function to determine if swal2 popup is shown 1481 */ 1482sweetAlert.isVisible = function () { 1483 return !!getPopup(); 1484}; 1485 1486/* 1487 * Global function for chaining sweetAlert popups 1488 */ 1489sweetAlert.queue = function (steps) { 1490 queue = steps; 1491 var resetQueue = function resetQueue() { 1492 queue = []; 1493 document.body.removeAttribute('data-swal2-queue-step'); 1494 }; 1495 var queueResult = []; 1496 return new Promise(function (resolve, reject) { 1497 (function step(i, callback) { 1498 if (i < queue.length) { 1499 document.body.setAttribute('data-swal2-queue-step', i); 1500 1501 sweetAlert(queue[i]).then(function (result) { 1502 if (typeof result.value !== 'undefined') { 1503 queueResult.push(result.value); 1504 step(i + 1, callback); 1505 } else { 1506 resetQueue(); 1507 resolve({ dismiss: result.dismiss }); 1508 } 1509 }); 1510 } else { 1511 resetQueue(); 1512 resolve({ value: queueResult }); 1513 } 1514 })(0); 1515 }); 1516}; 1517 1518/* 1519 * Global function for getting the index of current popup in queue 1520 */ 1521sweetAlert.getQueueStep = function () { 1522 return document.body.getAttribute('data-swal2-queue-step'); 1523}; 1524 1525/* 1526 * Global function for inserting a popup to the queue 1527 */ 1528sweetAlert.insertQueueStep = function (step, index) { 1529 if (index && index < queue.length) { 1530 return queue.splice(index, 0, step); 1531 } 1532 return queue.push(step); 1533}; 1534 1535/* 1536 * Global function for deleting a popup from the queue 1537 */ 1538sweetAlert.deleteQueueStep = function (index) { 1539 if (typeof queue[index] !== 'undefined') { 1540 queue.splice(index, 1); 1541 } 1542}; 1543 1544/* 1545 * Global function to close sweetAlert 1546 */ 1547sweetAlert.close = sweetAlert.closePopup = sweetAlert.closeModal = sweetAlert.closeToast = function (onComplete) { 1548 var container = getContainer(); 1549 var popup = getPopup(); 1550 if (!popup) { 1551 return; 1552 } 1553 removeClass(popup, swalClasses.show); 1554 addClass(popup, swalClasses.hide); 1555 clearTimeout(popup.timeout); 1556 1557 if (!isToast()) { 1558 resetPrevState(); 1559 window.onkeydown = previousWindowKeyDown;
1560 windowOnkeydownOverridden = false; 1561 } 1562 1563 var removePopupAndResetState = function removePopupAndResetState() { 1564 if (container.parentNode) { 1565 container.parentNode.removeChild(container); 1566 } 1567 removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['no-backdrop'], swalClasses['has-input'], swalClasses['toast-shown']]); 1568 1569 if (isModal()) { 1570 undoScrollbar(); 1571 undoIOSfix(); 1572 } 1573 }; 1574 1575 // If animation is supported, animate 1576 if (animationEndEvent && !hasClass(popup, swalClasses.noanimation)) { 1577 popup.addEventListener(animationEndEvent, function swalCloseEventFinished() { 1578 popup.removeEventListener(animationEndEvent, swalCloseEventFinished); 1579 if (hasClass(popup, swalClasses.hide)) { 1580 removePopupAndResetState(); 1581 } 1582 }); 1583 } else { 1584 // Otherwise, remove immediately 1585 removePopupAndResetState(); 1586 } 1587 if (onComplete !== null && typeof onComplete === 'function') { 1588 setTimeout(function () { 1589 onComplete(popup); 1590 }); 1591 } 1592}; 1593 1594/* 1595 * Global function to click 'Confirm' button 1596 */ 1597sweetAlert.clickConfirm = function () { 1598 return getConfirmButton().click(); 1599}; 1600 1601/* 1602 * Global function to click 'Cancel' button 1603 */ 1604sweetAlert.clickCancel = function () { 1605 return getCancelButton().click(); 1606}; 1607 1608/** 1609 * Show spinner instead of Confirm button and disable Cancel button 1610 */ 1611sweetAlert.showLoading = sweetAlert.enableLoading = function () { 1612 var popup = getPopup(); 1613 if (!popup) { 1614 sweetAlert(''); 1615 } 1616 popup = getPopup(); 1617 var actions = getActions(); 1618 var confirmButton = getConfirmButton(); 1619 var cancelButton = getCancelButton(); 1620 1621 show(actions); 1622 show(confirmButton, 'inline-block'); 1623 addClass([popup, actions], swalClasses.loading); 1624 confirmButton.disabled = true; 1625 cancelButton.disabled = true; 1626 1627 popup.setAttribute('data-loading', true); 1628 popup.setAttribute('aria-busy', true); 1629 popup.focus(); 1630}; 1631 1632/** 1633 * Is valid parameter 1634 * @param {String} paramName 1635 */ 1636sweetAlert.isValidParameter = function (paramName) { 1637 return defaultParams.hasOwnProperty(paramName) || paramName === 'extraParams'; 1638}; 1639 1640/** 1641 * Is deprecated parameter 1642 * @param {String} paramName 1643 */ 1644sweetAlert.isDeprecatedParameter = function (paramName) { 1645 return deprecatedParams.indexOf(paramName) !== -1; 1646}; 1647 1648/** 1649 * Set default params for each popup 1650 * @param {Object} userParams 1651 */ 1652sweetAlert.setDefaults = function (userParams) { 1653 if (!userParams || (typeof userParams === 'undefined' ? 'undefined' : _typeof(userParams)) !== 'object') { 1654 return error('the argument for setDefaults() is required and has to be a object'); 1655 } 1656 1657 showWarningsForParams(userParams); 1658 1659 // assign valid params from userParams to popupParams 1660 for (var param in userParams) { 1661 if (sweetAlert.isValidParameter(param)) { 1662 popupParams[param] = userParams[param]; 1663 } 1664 } 1665}; 1666 1667/** 1668 * Reset default params for each popup 1669 */ 1670sweetAlert.resetDefaults = function () { 1671 popupParams = _extends({}, defaultParams); 1672}; 1673 1674/** 1675 * Adapt a legacy inputValidator for use with expectRejections=false 1676 */ 1677sweetAlert.adaptInputValidator = function (legacyValidator) { 1678 return function adaptedInputValidator(inputValue, extraParams) { 1679 return legacyValidator.call(this, inputValue, extraParams).then(function () { 1680 return undefined; 1681 }, function (validationError) { 1682 return validationError; 1683 }); 1684 }; 1685}; 1686 1687sweetAlert.DismissReason = Object.freeze({ 1688 cancel: 'cancel', 1689 backdrop: 'overlay', 1690 close: 'close', 1691 esc: 'esc', 1692 timer: 'timer' 1693}); 1694 1695sweetAlert.noop = function () {}; 1696 1697sweetAlert.version = '7.11.0'; 1698 1699sweetAlert.default = sweetAlert; 1700 1701/** 1702 * Set default params if `window._swalDefaults` is an object 1703 */ 1704if (typeof window !== 'undefined' && _typeof(window._swalDefaults) === 'object') { 1705 sweetAlert.setDefaults(window._swalDefaults); 1706} 1707 1708// Remember state in cases where opening and handling a modal will fiddle with it. 1709var states = { 1710 previousActiveElement: null, 1711 previousBodyPadding: null 1712 1713 // Detect Node env 1714};var isNodeEnv = function isNodeEnv() { 1715 return typeof window === 'undefined' || typeof document === 'undefined'; 1716}; 1717 1718/* 1719 * Add modal + backdrop to DOM 1720 */ 1721var init = function init(params) {
1722 // Clean up the old popup if it exists 1723 var c = getContainer(); 1724 if (c) { 1725 c.parentNode.removeChild(c); 1726 removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['has-input'], swalClasses['toast-shown']]); 1727 } 1728 1729 if (isNodeEnv()) { 1730 error('SweetAlert2 requires document to initialize'); 1731 return; 1732 } 1733 1734 var container = document.createElement('div'); 1735 container.className = swalClasses.container; 1736 container.innerHTML = sweetHTML; 1737 1738 var targetElement = typeof params.target === 'string' ? document.querySelector(params.target) : params.target; 1739 targetElement.appendChild(container); 1740 1741 var popup = getPopup(); 1742 var content = getContent(); 1743 var input = getChildByClass(content, swalClasses.input); 1744 var file = getChildByClass(content, swalClasses.file); 1745 var range = content.querySelector('.' + swalClasses.range + ' input'); 1746 var rangeOutput = content.querySelector('.' + swalClasses.range + ' output'); 1747 var select = getChildByClass(content, swalClasses.select); 1748 var checkbox = content.querySelector('.' + swalClasses.checkbox + ' input'); 1749 var textarea = getChildByClass(content, swalClasses.textarea); 1750 1751 // a11y 1752 popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); 1753 1754 var resetValidationError = function resetValidationError() { 1755 sweetAlert.isVisible() && sweetAlert.resetValidationError(); 1756 }; 1757 1758 input.oninput = resetValidationError; 1759 file.onchange = resetValidationError; 1760 select.onchange = resetValidationError; 1761 checkbox.onchange = resetValidationError; 1762 textarea.oninput = resetValidationError; 1763 1764 range.oninput = function () { 1765 resetValidationError(); 1766 rangeOutput.value = range.value; 1767 }; 1768 1769 range.onchange = function () { 1770 resetValidationError(); 1771 range.previousSibling.value = range.value; 1772 }; 1773 1774 return popup; 1775}; 1776 1777/* 1778 * Manipulate DOM 1779 */ 1780 1781var sweetHTML = ('\n <div role="dialog" aria-modal="true" aria-labelledby="' + swalClasses.title + '" aria-describedby="' + swalClasses.content + '" class="' + swalClasses.popup + '" tabindex="-1">\n <div class="' + swalClasses.header + '">\n <ul class="' + swalClasses.progresssteps + '"></ul>\n <div class="' + swalClasses.icon + ' ' + iconTypes.error + '">\n <span class="swal2-x-mark"><span class="swal2-x-mark-line-left"></span><span class="swal2-x-mark-line-right"></span></span>\n </div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.question + '">?</div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.warning + '">!</div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.info + '">i</div>\n <div class="' + swalClasses.icon + ' ' + iconTypes.success + '">\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n </div>\n <img class="' + swalClasses.image + '" />\n <h2 class="' + swalClasses.title + '" id="' + swalClasses.title + '"></h2>\n <button type="button" class="' + swalClasses.close + '">\xD7</button>\n </div>\n <div class="' + swalClasses.content + '">\n <div id="' + swalClasses.content + '"></div>\n <input class="' + swalClasses.input + '" />\n <input type="file" class="' + swalClasses.file + '" />\n <div class="' + swalClasses.range + '">\n <input type="range" />\n <output></output>\n </div>\n <select class="' + swalClasses.select + '"></select>\n <div class="' + swalClasses.radio + '"></div>\n <label for="' + swalClasses.checkbox + '" class="' + swalClasses.checkbox + '">\n <input type="checkbox" />\n </label>\n <textarea class="' + swalClasses.textarea + '"></textarea>\n <div class="' + swalClasses.validationerror + '" id="' + swalClasses.validationerror + '"></div>\n </div>\n <div class="' + swalClasses.actions + '">\n <button type="button" class="' + swalClasses.confirm + '">OK</button>\n <button type="button" class="' + swalClasses.cancel + '">Cancel</button>\n </div>\n <div class="' + swalClasses.footer + '">\n </div>\n </div>\n').replace(/(^|\n)\s*/g, ''); 1782 1783var getContainer = function getContainer() { 1784 return document.body.querySelector('.' + swalClasses.container); 1785}; 1786 1787var getPopup = function getPopup() { 1788 return getContainer() ? getContainer().querySelector('.' + swalClasses.popup) : null; 1789}; 1790 1791var getIcons = function getIcons() { 1792 var popup = getPopup(); 1793 return popup.querySelectorAll('.' + swalClasses.icon); 1794}; 1795 1796var elementByClass = function elementByClass(className) { 1797 return getContainer() ? getContainer().querySelector('.' + className) : null; 1798}; 1799 1800var getTitle = function getTitle() { 1801 return elementByClass(swalClasses.title); 1802}; 1803 1804var getContent = function getContent() { 1805 return elementByClass(swalClasses.content); 1806}; 1807 1808var getImage = function getImage() { 1809 return elementByClass(swalClasses.image); 1810}; 1811 1812var getProgressSteps = function getProgressSteps() { 1813 return elementByClass(swalClasses.progresssteps); 1814}; 1815 1816var getValidationError = function getValidationError() { 1817 return elementByClass(swalClasses.validationerror); 1818}; 1819 1820var getConfirmButton = function getConfirmButton() { 1821 return elementByClass(swalClasses.confirm); 1822}; 1823 1824var getCancelButton = function getCancelButton() { 1825 return elementByClass(swalClasses.cancel); 1826}; 1827 1828var getButtonsWrapper = function getButtonsWrapper() { 1829 warnOnce('swal.getButtonsWrapper() is deprecated and will be removed in the next major release, use swal.getActions() instead'); 1830 return elementByClass(swalClasses.actions); 1831}; 1832 1833var getActions = function getActions() { 1834 return elementByClass(swalClasses.actions); 1835}; 1836 1837var getFooter = function getFooter() { 1838 return elementByClass(swalClasses.footer); 1839}; 1840 1841var getCloseButton = function getCloseButton() { 1842 return elementByClass(swalClasses.close); 1843}; 1844 1845var getFocusableElements = function getFocusableElements() { 1846 var focusableElementsWithTabindex = Array.prototype.slice.call(getPopup().querySelectorAll('[tabindex]:not
1846([tabindex="-1"]):not([tabindex="0"])')) 1847 // sort according to tabindex 1848 .sort(function (a, b) { 1849 a = parseInt(a.getAttribute('tabindex')); 1850 b = parseInt(b.getAttribute('tabindex')); 1851 if (a > b) { 1852 return 1; 1853 } else if (a < b) { 1854 return -1; 1855 } 1856 return 0; 1857 }); 1858 1859 var otherFocusableElements = Array.prototype.slice.call(getPopup().querySelectorAll('button, input:not([type=hidden]), textarea, select, a, [tabindex="0"]')); 1860 1861 return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)); 1862}; 1863 1864var parseHtmlToContainer = function parseHtmlToContainer(param, target) { 1865 if (!param) { 1866 return hide(target); 1867 } 1868 1869 if ((typeof param === 'undefined' ? 'undefined' : _typeof(param)) === 'object') { 1870 target.innerHTML = ''; 1871 if (0 in param) { 1872 for (var i = 0; i in param; i++) { 1873 target.appendChild(param[i].cloneNode(true)); 1874 } 1875 } else { 1876 target.appendChild(param.cloneNode(true)); 1877 } 1878 } else if (param) { 1879 target.innerHTML = param; 1880 } else {} 1881 show(target); 1882}; 1883 1884var isModal = function isModal() { 1885 return !document.body.classList.contains(swalClasses['toast-shown']); 1886}; 1887 1888var isToast = function isToast() { 1889 return document.body.classList.contains(swalClasses['toast-shown']); 1890}; 1891 1892var isLoading = function isLoading() { 1893 return getPopup().hasAttribute('data-loading'); 1894}; 1895 1896var hasClass = function hasClass(elem, className) { 1897 if (elem.classList) { 1898 return elem.classList.contains(className); 1899 } 1900 return false; 1901}; 1902 1903var focusInput = function focusInput(input) { 1904 input.focus(); 1905 1906 // place cursor at end of text in text input 1907 if (input.type !== 'file') { 1908 // http://stackoverflow.com/a/2345915/1331425 1909 var val = input.value; 1910 input.value = ''; 1911 input.value = val; 1912 } 1913}; 1914 1915var addOrRemoveClass = function addOrRemoveClass(target, classList, add) { 1916 if (!target || !classList) { 1917 return; 1918 } 1919 if (typeof classList === 'string') { 1920 classList = classList.split(/\s+/).filter(Boolean); 1921 } 1922 classList.forEach(function (className) { 1923 if (target.forEach) { 1924 target.forEach(function (elem) { 1925 add ? elem.classList.add(className) : elem.classList.remove(className); 1926 }); 1927 } else { 1928 add ? target.classList.add(className) : target.classList.remove(className); 1929 } 1930 }); 1931}; 1932 1933var addClass = function addClass(target, classList) { 1934 addOrRemoveClass(target, classList, true); 1935}; 1936 1937var removeClass = function removeClass(target, classList) { 1938 addOrRemoveClass(target, classList, false); 1939}; 1940 1941var getChildByClass = function getChildByClass(elem, className) { 1942 for (var i = 0; i < elem.childNodes.length; i++) { 1943 if (hasClass(elem.childNodes[i], className)) { 1944 return elem.childNodes[i]; 1945 } 1946 } 1947}; 1948 1949var show = function show(elem, display) { 1950 if (!display) { 1951 display = elem.id === swalClasses.content ? 'block' : 'flex'; 1952 } 1953 elem.style.opacity = ''; 1954 elem.style.display = display; 1955}; 1956 1957var hide = function hide(elem) { 1958 elem.style.opacity = ''; 1959 elem.style.display = 'none'; 1960}; 1961 1962var empty = function empty(elem) { 1963 while (elem.firstChild) { 1964 elem.removeChild(elem.firstChild); 1965 } 1966}; 1967 1968// borrowed from jquery $(elem).is(':visible') implementation 1969var isVisible = function isVisible(elem) { 1970 return elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); 1971}; 1972 1973var removeStyleProperty = function removeStyleProperty(elem, property) { 1974 if (elem.style.removeProperty) { 1975 elem.style.removeProperty(property); 1976 } else { 1977 elem.style.removeAttribute(property); 1978 } 1979}; 1980 1981var animationEndEvent = function () { 1982 // Prevent run in Node env 1983 if (isNodeEnv()) { 1984 return false; 1985 } 1986 1987 var testEl = document.createElement('div'); 1988 var transEndEventNames = { 1989 'WebkitAnimation': 'webkitAnimationEnd', 1990 'OAnimation': 'oAnimationEnd oanimationend', 1991 'animation': 'animationend' 1992 }; 1993 for (var i in transEndEventNames) { 1994 if (transEndEventNames.hasOwnProperty(i) && typeof testEl.style[i] !== 'undefined') { 1995 return transEndEventNames[i]; 1996 } 1997 } 1998 1999 return false; 2000}(); 2001 2002// Reset previous window keydown handler and focued element 2003var resetPrevState = function resetPrevState() { 2004 if (states.previousActiveElement && states.previousActiveElement.focus) { 2005 var x = window.scrollX; 2006 var y = window.scrollY; 2007 states.previousActiveElement.focus(); 2008 if (typeof x !== 'undefined' && typeof y !== 'undefined') { 2009 // IE doesn't have scrollX/scrollY support 2010 window.scrollTo(x, y); 2011 } 2012 } 2013}; 2014 2015// Measure width of scrollbar 2016// https://github.com/twbs/bootstrap/blob/master/js/modal.js#L279-L286 2017var measureScrollbar = function measureScrollbar() { 2018 var supportsTouch = 'ontouchstart' in window || navigator.msMaxTouchPoints; 2019 if (supportsTouch) { 2020 return 0; 2021 } 2022 var scrollDiv = document.createElement('div'); 2023 scrollDiv.style.width = '50px'; 2024 scrollDiv.style.height = '50px'; 2025 scrollDiv.style.overflow = 'scroll'; 2026 document.body.appendChild(scrollDiv); 2027 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; 2028 document.body.removeChild(scrollDiv); 2029 return scrollbarWidth; 2030}; 2031 2032/** 2033 * Inject a string of CSS into the page header 2034 * 2035 * @param {String} css 2036 */ 2037var injectCSS = function injectCSS() { 2038 var css = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; 2039 2040 // Prevent run in Node env 2041 if (isNodeEnv()) { 2042 return false;
2043 } 2044 2045 var head = document.head || document.getElementsByTagName('head')[0]; 2046 var style = document.createElement('style'); 2047 style.type = 'text/css'; 2048 head.appendChild(style); 2049 2050 if (style.styleSheet) { 2051 style.styleSheet.cssText = css; 2052 } else { 2053 style.appendChild(document.createTextNode(css)); 2054 } 2055}; 2056 2057injectCSS(styles); 2058 2059return sweetAlert; 2060 2061}))); 2062if (typeof window !== 'undefined' && window.Sweetalert2) window.sweetAlert = window.swal = window.Sweetalert2;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.