1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
vendor: 14,690 bytes, line 2
2!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),s=o(c),f=n(8),d=o(f),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,startEvent:"DOMContentLoaded",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},S=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\n aos: MutationObserver is not supported on this browser,\n code mutations observing has been disabled.\n You may have to call "refreshHard()" by yourself.\n '),x.disableMutationObserver=!0),document.querySelector("body").setAttribute("data-aos-easing",x.easing),document.querySelector("body").setAttribute("data-aos-duration",x.duration),document.querySelector("body").setAttribute("data-aos-delay",x.delay),"DOMContentLoaded"===x.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?j(!0):"load"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener("resize",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("orientationchange",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready("[data-aos]",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S="maxWait"in n,y=S?x(u(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(s);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return f;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s="Expected a function",f=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S="maxWait"in n,y=S?k(a(n.maxWait)||0,t):y,_="trailing"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==f}function a(e){if("number"==typeof e)return e;if(r(e))return s;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",s=NaN,f="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;t<e.length;t+=1){if(o=e[t],o.dataset&&o.dataset.aos)return!0;if(i=o.children&&n(o.children))return!0}return!1}function o(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function i(){return!!o()}function r(e,t){var n=window.document,i=o(),r=new i(a);u=t,r.observe(n.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function a(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),o=Array.prototype.slice.call(e.removedNodes),i=t.concat(o);if(n(i))return u()})}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){};t.default={isSupported:i,ready:r}},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(){return navigator.userAgent||navigator.vendor||window.opera||""}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,u=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,s=function(){function e(){n(this,e)}return i(e,[{key:"phone",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:"mobile",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:"tablet",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new s},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute("data-aos-once");t>e.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){return e=e||document.querySelectorAll("[data-aos]"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});
2 3},{}],2:[function(require,module,exports){ 4(function (global){(function (){
vendor: 19,142 bytes, lines 5-501
5 6// ------------------------------------------ 7// Rellax.js 8// Buttery smooth parallax library 9// Copyright (c) 2016 Moe Amaya (@moeamaya) 10// MIT license 11// 12// Thanks to Paraxify.js and Jaime Cabllero 13// for parallax concepts 14// ------------------------------------------ 15 16(function (root, factory) { 17 if (typeof define === 'function' && define.amd) { 18 // AMD. Register as an anonymous module. 19 define([], factory); 20 } else if (typeof module === 'object' && module.exports) { 21 // Node. Does not work with strict CommonJS, but 22 // only CommonJS-like environments that support module.exports, 23 // like Node. 24 module.exports = factory(); 25 } else { 26 // Browser globals (root is window) 27 root.Rellax = factory(); 28 } 29}(typeof window !== "undefined" ? window : global, function () { 30 var Rellax = function(el, options){ 31 "use strict"; 32 33 var self = Object.create(Rellax.prototype); 34 35 var posY = 0; 36 var screenY = 0; 37 var posX = 0; 38 var screenX = 0; 39 var blocks = []; 40 var pause = true; 41 42 // check what requestAnimationFrame to use, and if 43 // it's not supported, use the onscroll event 44 var loop = window.requestAnimationFrame || 45 window.webkitRequestAnimationFrame || 46 window.mozRequestAnimationFrame || 47 window.msRequestAnimationFrame || 48 window.oRequestAnimationFrame || 49 function(callback){ return setTimeout(callback, 1000 / 60); }; 50 51 // store the id for later use 52 var loopId = null; 53 54 // Test via a getter in the options object to see if the passive property is accessed 55 var supportsPassive = false; 56 try { 57 var opts = Object.defineProperty({}, 'passive', { 58 get: function() { 59 supportsPassive = true; 60 } 61 }); 62 window.addEventListener("testPassive", null, opts); 63 window.removeEventListener("testPassive", null, opts); 64 } catch (e) {} 65 66 // check what cancelAnimation method to use 67 var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout; 68 69 // check which transform property to use 70 var transformProp = window.transformProp || (function(){ 71 var testEl = document.createElement('div'); 72 if (testEl.style.transform === null) { 73 var vendors = ['Webkit', 'Moz', 'ms']; 74 for (var vendor in vendors) { 75 if (testEl.style[ vendors[vendor] + 'Transform' ] !== undefined) { 76 return vendors[vendor] + 'Transform'; 77 } 78 } 79 } 80 return 'transform'; 81 })(); 82 83 // Default Settings 84 self.options = { 85 speed: -2, 86 verticalSpeed: null, 87 horizontalSpeed: null, 88 breakpoints: [576, 768, 1201], 89 center: false, 90 wrapper: null, 91 relativeToWrapper: false, 92 round: true, 93 vertical: true, 94 horizontal: false, 95 verticalScrollAxis: "y", 96 horizontalScrollAxis: "x", 97 callback: function() {}, 98 }; 99 100 // User defined options (might have more in the future) 101 if (options){ 102 Object.keys(options).forEach(function(key){ 103 self.options[key] = options[key]; 104 }); 105 } 106 107 function validateCustomBreakpoints () { 108 if (self.options.breakpoints.length === 3 && Array.isArray(self.options.breakpoints)) { 109 var isAscending = true; 110 var isNumerical = true; 111 var lastVal; 112 self.options.breakpoints.forEach(function (i) { 113 if (typeof i !== 'number') isNumerical = false; 114 if (lastVal !== null) { 115 if (i < lastVal) isAscending = false; 116 } 117 lastVal = i; 118 }); 119 if (isAscending && isNumerical) return; 120 } 121 // revert defaults if set incorrectly 122 self.options.breakpoints = [576, 768, 1201]; 123 console.warn("Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted"); 124 } 125 126 if (options && options.breakpoints) { 127 validateCustomBreakpoints(); 128 } 129 130 // By default, rellax class 131 if (!el) { 132 el = '.rellax'; 133 } 134 135 // check if el is a className or a node 136 var elements = typeof el === 'string' ? document.querySelectorAll(el) : [el]; 137 138 // Now query selector 139 if (elements.length > 0) { 140 self.elems = elements; 141 } 142 143 // The elements don't exist 144 else { 145 console.warn("Rellax: The elements you're trying to select don't exist."); 146 return; 147 } 148 149 // Has a wrapper and it exists 150 if (self.options.wrapper) { 151 if (!self.options.wrapper.nodeType) { 152 var wrapper = document.querySelector(self.options.wrapper); 153 154 if (wrapper) { 155 self.options.wrapper = wrapper; 156 } else { 157 console.warn("Rellax: The wrapper you're trying to use doesn't exist."); 158 return; 159 } 160 } 161 } 162 163 // set a placeholder for the current breakpoint 164 var currentBreakpoint; 165 166 // helper to determine current breakpoint 167 var getCurrentBreakpoint = function (w) { 168 var bp = self.options.breakpoints; 169 if (w < bp[0]) return 'xs'; 170 if (w >= bp[0] && w < bp[1]) return 'sm'; 171 if (w >= bp[1] && w < bp[2]) return 'md'; 172 return 'lg'; 173 }; 174 175 // Get and cache initial position of all elements 176 var cacheBlocks = function() { 177 for (var i = 0; i < self.elems.length; i++){ 178 var block = createBlock(self.elems[i]); 179 blocks.push(block); 180 } 181 }; 182 183 184 // Let's kick this script off 185 // Build array for cached element values 186 var init = function() { 187 for (var i = 0; i < blocks.length; i++){ 188 self.elems[i].style.cssText = blocks[i].style; 189 } 190 191 blocks = []; 192 193 screenY = window.innerHeight; 194 screenX = window.innerWidth; 195 currentBreakpoint = getCurrentBreakpoint(screenX); 196 197 setPosition(); 198 199 cacheBlocks(); 200 201 animate(); 202 203 // If paused, unpause and set listener for window resizing events 204 if (pause) { 205 window.addEventListener('resize', init); 206 pause = false; 207 // Start the loop 208 update(); 209 } 210 }; 211 212 // We want to cache the parallax blocks' 213 // values: base, top, height, speed 214 // el: is dom object, return: el cache values 215 var createBlock = function(el) { 216 var dataPercentage = el.getAttribute( 'data-rellax-percentage' ); 217 var dataSpeed = el.getAttribute( 'data-rellax-speed' ); 218 var dataXsSpeed = el.getAttribute( 'data-rellax-xs-speed' ); 219 var dataMobileSpeed = el.getAttribute( 'data-rellax-mobile-speed' ); 220 var dataTabletSpeed = el.getAttribute( 'data-rellax-tablet-speed' ); 221 var dataDesktopSpeed = el.getAttribute( 'data-rellax-desktop-speed' ); 222 var dataVerticalSpeed = el.getAttribute('data-rellax-vertical-speed'); 223 var dataHorizontalSpeed = el.getAttribute('data-rellax-horizontal-speed'); 224 var dataVericalScrollAxis = el.getAttribute('data-rellax-vertical-scroll-axis'); 225 var dataHorizontalScrollAxis = el.getAttribute('data-rellax-horizontal-scroll-axis'); 226 var dataZindex = el.getAttribute( 'data-rellax-zindex' ) || 0; 227 var dataMin = el.getAttribute( 'data-rellax-min' ); 228 var dataMax = el.getAttribute( 'data-rellax-max' ); 229 var dataMinX = el.getAttribute('data-rellax-min-x'); 230 var dataMaxX = el.getAttribute('data-rellax-max-x'); 231 var dataMinY = el.getAttribute('data-rellax-min-y'); 232 var dataMaxY = el.getAttribute('data-rellax-max-y'); 233 var mapBreakpoints; 234 var breakpoints = true; 235 236 if (!dataXsSpeed && !dataMobileSpeed && !dataTabletSpeed && !dataDesktopSpeed) { 237 breakpoints = false; 238 } else { 239 mapBreakpoints = { 240 'xs': dataXsSpeed, 241 'sm': dataMobileSpeed, 242 'md': dataTabletSpeed, 243 'lg': dataDesktopSpeed 244 }; 245 } 246 247 // initializing at scrollY = 0 (top of browser), scrollX = 0 (left of browser) 248 // ensures elements are positioned based on HTML layout. 249 // 250 // If the element has the percentage attribute, the posY and posX needs to be 251 // the current scroll position's value, so that the elements are still positioned based on HTML layout 252 var wrapperPosY = self.options.wrapper ? self.options.wrapper.scrollTop : (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); 253 // If the option relativeToWrapper is true, use the wrappers offset to top, subtracted from the current page scroll. 254 if (self.options.relativeToWrapper) { 255 var scrollPosY = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); 256 wrapperPosY = scrollPosY - self.options.wrapper.offsetTop; 257 } 258 var posY = self.options.vertical ? ( dataPercentage || self.options.center ? wrapperPosY : 0 ) : 0; 259 var posX = self.options.horizontal ? ( dataPercentage || self.options.center ? self.options.wrapper ? self.options.wrapper.scrollLeft : (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft) : 0 ) : 0; 260 261 var blockTop = posY + el.getBoundingClientRect().top; 262 var blockHeight = el.clientHeight || el.offsetHeight || el.scrollHeight; 263 264 var blockLeft = posX + el.getBoundingClientRect().left; 265 var blockWidth = el.clientWidth || el.offsetWidth || el.scrollWidth; 266 267 // apparently parallax equation everyone uses 268 var percentageY = dataPercentage ? dataPercentage : (posY - blockTop + screenY) / (blockHeight + screenY); 269 var percentageX = dataPercentage ? dataPercentage : (posX - blockLeft + screenX) / (blockWidth + screenX); 270 if(self.options.center){ percentageX = 0.5; percentageY = 0.5; } 271 272 // Optional individual block speed as data attr, otherwise global speed 273 var speed = (breakpoints && mapBreakpoints[currentBreakpoint] !== null) ? Number(mapBreakpoints[currentBreakpoint]) : (dataSpeed ? dataSpeed : self.options.speed); 274 var verticalSpeed = dataVerticalSpeed ? dataVerticalSpeed : self.options.verticalSpeed; 275 var horizontalSpeed = dataHorizontalSpeed ? dataHorizontalSpeed : self.options.horizontalSpeed; 276 277 // Optional individual block movement axis direction as data attr, otherwise gobal movement direction 278 var verticalScrollAxis = dataVericalScrollAxis ? dataVericalScrollAxis : self.options.verticalScrollAxis; 279 var horizontalScrollAxis = dataHorizontalScrollAxis ? dataHorizontalScrollAxis : self.options.horizontalScrollAxis; 280 281 var bases = updatePosition(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed); 282 283 // ~~Store non-translate3d transforms~~ 284 // Store inline styles and extract transforms 285 var style = el.style.cssText; 286 var transform = ''; 287 288 // Check if there's an inline styled transform 289 var searchResult = /transform\s*:/i.exec(style); 290 if (searchResult) { 291 // Get the index of the transform 292 var index = searchResult.index; 293 294 // Trim the style to the transform point and get the following semi-colon index 295 var trimmedStyle = style.slice(index); 296 var delimiter = trimmedStyle.indexOf(';'); 297 298 // Remove "transform" string and save the attribute 299 if (delimiter) { 300 transform = " " + trimmedStyle.slice(11, delimiter).replace(/\s/g,''); 301 } else { 302 transform = " " + trimmedStyle.slice(11).replace(/\s/g,''); 303 } 304 } 305 306 return { 307 baseX: bases.x, 308 baseY: bases.y, 309 top: blockTop, 310 left: blockLeft, 311 height: blockHeight, 312 width: blockWidth, 313 speed: speed, 314 verticalSpeed: verticalSpeed, 315 horizontalSpeed: horizontalSpeed, 316 verticalScrollAxis: verticalScrollAxis, 317 horizontalScrollAxis: horizontalScrollAxis, 318 style: style, 319 transform: transform, 320 zindex: dataZindex, 321 min: dataMin, 322 max: dataMax, 323 minX: dataMinX, 324 maxX: dataMaxX, 325 minY: dataMinY, 326 maxY: dataMaxY 327 }; 328 }; 329 330 // set scroll position (posY, posX) 331 // side effect method is not ideal, but okay for now 332 // returns true if the scroll changed, false if nothing happened 333 var setPosition = function() { 334 var oldY = posY; 335 var oldX = posX; 336 337 posY = self.options.wrapper ? self.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset; 338 posX = self.options.wrapper ? self.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset; 339 // If option relativeToWrapper is true, use relative wrapper value instead. 340 if (self.options.relativeToWrapper) { 341 var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset; 342 posY = scrollPosY - self.options.wrapper.offsetTop; 343 } 344 345 346 if (oldY != posY && self.options.vertical) { 347 // scroll changed, return true 348 return true; 349 } 350 351 if (oldX != posX && self.options.horizontal) { 352 // scroll changed, return true 353 return true; 354 } 355 356 // scroll did not change 357 return false; 358 }; 359 360 // Ahh a pure function, gets new transform value 361 // based on scrollPosition and speed 362 // Allow for decimal pixel values 363 var updatePosition = function(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed) { 364 var result = {}; 365 var valueX = ((horizontalSpeed ? horizontalSpeed : speed) * (100 * (1 - percentageX))); 366 var valueY = ((verticalSpeed ? verticalSpeed : speed) * (100 * (1 - percentageY))); 367 368 result.x = self.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100; 369 result.y = self.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100; 370 371 return result; 372 }; 373 374 // Remove event listeners and loop again 375 var deferredUpdate = function() { 376 window.removeEventListener('resize', deferredUpdate); 377 window.removeEventListener('orientationchange', deferredUpdate); 378 (self.options.wrapper ? self.options.wrapper : window).removeEventListener('scroll', deferredUpdate); 379 (self.options.wrapper ? self.options.wrapper : document).removeEventListener('touchmove', deferredUpdate); 380 381 // loop again 382 loopId = loop(update); 383 }; 384 385 // Loop 386 var update = function() { 387 if (setPosition() && pause === false) { 388 animate(); 389 390 // loop again 391 loopId = loop(update); 392 } else { 393 loopId = null; 394 395 // Don't animate until we get a position updating event 396 window.addEventListener('resize', deferredUpdate); 397 window.addEventListener('orientationchange', deferredUpdate); 398 (self.options.wrapper ? self.options.wrapper : window).addEventListener('scroll', deferredUpdate, supportsPassive ? { passive: true } : false); 399 (self.options.wrapper ? self.options.wrapper : document).addEventListener('touchmove', deferredUpdate, supportsPassive ? { passive: true } : false); 400 } 401 }; 402 403 // Transform3d on parallax element 404 var animate = function() { 405 var positions; 406 for (var i = 0; i < self.elems.length; i++){ 407 // Determine relevant movement directions 408 var verticalScrollAxis = blocks[i].verticalScrollAxis.toLowerCase(); 409 var horizontalScrollAxis = blocks[i].horizontalScrollAxis.toLowerCase(); 410 var verticalScrollX = verticalScrollAxis.indexOf("x") != -1 ? posY : 0; 411 var verticalScrollY = verticalScrollAxis.indexOf("y") != -1 ? posY : 0; 412 var horizontalScrollX = horizontalScrollAxis.indexOf("x") != -1 ? posX : 0; 413 var horizontalScrollY = horizontalScrollAxis.indexOf("y") != -1 ? posX : 0; 414 415 var percentageY = ((verticalScrollY + horizontalScrollY - blocks[i].top + screenY) / (blocks[i].height + screenY)); 416 var percentageX = ((verticalScrollX + horizontalScrollX - blocks[i].left + screenX) / (blocks[i].width + screenX)); 417 418 // Subtracting initialize value, so element stays in same spot as HTML 419 positions = updatePosition(percentageX, percentageY, blocks[i].speed, blocks[i].verticalSpeed, blocks[i].horizontalSpeed); 420 var positionY = positions.y - blocks[i].baseY; 421 var positionX = positions.x - blocks[i].baseX; 422 423 // The next two "if" blocks go like this: 424 // Check if a limit is defined (first "min", then "max"); 425 // Check if we need to change the Y or the X 426 // (Currently working only if just one of the axes is enabled) 427 // Then, check if the new position is inside the allowed limit 428 // If so, use new position. If not, set position to limit. 429 430 // Check if a min limit is defined 431 if (blocks[i].min !== null) { 432 if (self.options.vertical && !self.options.horizontal) { 433 positionY = positionY <= blocks[i].min ? blocks[i].min : positionY; 434 } 435 if (self.options.horizontal && !self.options.vertical) { 436 positionX = positionX <= blocks[i].min ? blocks[i].min : positionX; 437 } 438 } 439 440 // Check if directional min limits are defined 441 if (blocks[i].minY != null) { 442 positionY = positionY <= blocks[i].minY ? blocks[i].minY : positionY; 443 } 444 if (blocks[i].minX != null) { 445 positionX = positionX <= blocks[i].minX ? blocks[i].minX : positionX; 446 } 447 448 // Check if a max limit is defined 449 if (blocks[i].max !== null) { 450 if (self.options.vertical && !self.options.horizontal) { 451 positionY = positionY >= blocks[i].max ? blocks[i].max : positionY; 452 } 453 if (self.options.horizontal && !self.options.vertical) { 454 positionX = positionX >= blocks[i].max ? blocks[i].max : positionX; 455 } 456 } 457 458 // Check if directional max limits are defined 459 if (blocks[i].maxY != null) { 460 positionY = positionY >= blocks[i].maxY ? blocks[i].maxY : positionY; 461 } 462 if (blocks[i].maxX != null) { 463 positionX = positionX >= blocks[i].maxX ? blocks[i].maxX : positionX; 464 } 465 466 var zindex = blocks[i].zindex; 467 468 // Move that element 469 // (Set the new translation and append initial inline transforms.) 470 var translate = 'translate3d(' + (self.options.horizontal ? positionX : '0') + 'px,' + (self.options.vertical ? positionY : '0') + 'px,' + zindex + 'px) ' + blocks[i].transform; 471 self.elems[i].style[transformProp] = translate; 472 } 473 self.options.callback(positions); 474 }; 475 476 self.destroy = function() { 477 for (var i = 0; i < self.elems.length; i++){ 478 self.elems[i].style.cssText = blocks[i].style; 479 } 480 481 // Remove resize event listener if not pause, and pause 482 if (!pause) { 483 window.removeEventListener('resize', init); 484 pause = true; 485 } 486 487 // Clear the animation loop to prevent possible memory leak 488 clearLoop(loopId); 489 loopId = null; 490 }; 491 492 // Init 493 init(); 494 495 // Allow to recalculate the initial values whenever we want 496 self.refresh = init; 497 498 return self; 499 }; 500 return Rellax; 501}));
502 503}
vendor: 5,795 bytes, lines 503-706
503).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 504},{}],3:[function(require,module,exports){ 505/*! 506* sweetalert2 v9.17.2 507* Released under the MIT License. 508*/ 509(function (global, factory) { 510 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 511 typeof define === 'function' && define.amd ? define(factory) : 512 (global = global || self, global.Sweetalert2 = factory()); 513}(this, function () { 'use strict'; 514 515 function _typeof(obj) { 516 "@babel/helpers - typeof"; 517 518 if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { 519 _typeof = function (obj) { 520 return typeof obj; 521 }; 522 } else { 523 _typeof = function (obj) { 524 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 525 }; 526 } 527 528 return _typeof(obj); 529 } 530 531 function _classCallCheck(instance, Constructor) { 532 if (!(instance instanceof Constructor)) { 533 throw new TypeError("Cannot call a class as a function"); 534 } 535 } 536 537 function _defineProperties(target, props) { 538 for (var i = 0; i < props.length; i++) { 539 var descriptor = props[i]; 540 descriptor.enumerable = descriptor.enumerable || false; 541 descriptor.configurable = true; 542 if ("value" in descriptor) descriptor.writable = true; 543 Object.defineProperty(target, descriptor.key, descriptor); 544 } 545 } 546 547 function _createClass(Constructor, protoProps, staticProps) { 548 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 549 if (staticProps) _defineProperties(Constructor, staticProps); 550 return Constructor; 551 } 552 553 function _extends() { 554 _extends = Object.assign || function (target) { 555 for (var i = 1; i < arguments.length; i++) { 556 var source = arguments[i]; 557 558 for (var key in source) { 559 if (Object.prototype.hasOwnProperty.call(source, key)) { 560 target[key] = source[key]; 561 } 562 } 563 } 564 565 return target; 566 }; 567 568 return _extends.apply(this, arguments); 569 } 570 571 function _inherits(subClass, superClass) { 572 if (typeof superClass !== "function" && superClass !== null) { 573 throw new TypeError("Super expression must either be null or a function"); 574 } 575 576 subClass.prototype = Object.create(superClass && superClass.prototype, { 577 constructor: { 578 value: subClass, 579 writable: true, 580 configurable: true 581 } 582 }); 583 if (superClass) _setPrototypeOf(subClass, superClass); 584 } 585 586 function _getPrototypeOf(o) { 587 _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { 588 return o.__proto__ || Object.getPrototypeOf(o); 589 }; 590 return _getPrototypeOf(o); 591 } 592 593 function _setPrototypeOf(o, p) { 594 _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { 595 o.__proto__ = p; 596 return o; 597 }; 598 599 return _setPrototypeOf(o, p); 600 } 601 602 function _isNativeReflectConstruct() { 603 if (typeof Reflect === "undefined" || !Reflect.construct) return false; 604 if (Reflect.construct.sham) return false; 605 if (typeof Proxy === "function") return true; 606 607 try { 608 Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); 609 return true; 610 } catch (e) { 611 return false; 612 } 613 } 614 615 function _construct(Parent, args, Class) { 616 if (_isNativeReflectConstruct()) { 617 _construct = Reflect.construct; 618 } else { 619 _construct = function _construct(Parent, args, Class) { 620 var a = [null]; 621 a.push.apply(a, args); 622 var Constructor = Function.bind.apply(Parent, a); 623 var instance = new Constructor(); 624 if (Class) _setPrototypeOf(instance, Class.prototype); 625 return instance; 626 }; 627 } 628 629 return _construct.apply(null, arguments); 630 } 631 632 function _assertThisInitialized(self) { 633 if (self === void 0) { 634 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 635 } 636 637 return self; 638 } 639 640 function _possibleConstructorReturn(self, call) { 641 if (call && (typeof call === "object" || typeof call === "function")) { 642 return call; 643 } 644 645 return _assertThisInitialized(self); 646 } 647 648 function _createSuper(Derived) { 649 var hasNativeReflectConstruct = _isNativeReflectConstruct(); 650 651 return function _createSuperInternal() { 652 var Super = _getPrototypeOf(Derived), 653 result; 654 655 if (hasNativeReflectConstruct) { 656 var NewTarget = _getPrototypeOf(this).constructor; 657 658 result = Reflect.construct(Super, arguments, NewTarget); 659 } else { 660 result = Super.apply(this, arguments); 661 } 662 663 return _possibleConstructorReturn(this, result); 664 }; 665 } 666 667 function _superPropBase(object, property) { 668 while (!Object.prototype.hasOwnProperty.call(object, property)) { 669 object = _getPrototypeOf(object); 670 if (object === null) break; 671 } 672 673 return object; 674 } 675 676 function _get(target, property, receiver) { 677 if (typeof Reflect !== "undefined" && Reflect.get) { 678 _get = Reflect.get; 679 } else { 680 _get = function _get(target, property, receiver) { 681 var base = _superPropBase(target, property); 682 683 if (!base) return; 684 var desc = Object.getOwnPropertyDescriptor(base, property); 685 686 if (desc.get) { 687 return desc.get.call(receiver); 688 } 689 690 return desc.value; 691 }; 692 } 693 694 return _get(target, property, receiver || target); 695 } 696 697 var consolePrefix = 'SweetAlert2:'; 698 /** 699 * Filter the unique values into a new array 700 * @param arr 701 */ 702 703 var uniqueArray = function uniqueArray(arr) { 704 var result = []; 705 706 for (var i = 0; i < arr.length; i++) {
707 if (result.indexOf(arr[i]) === -1) { 708 result.push(arr[i]); 709 } 710 } 711 712 return result; 713 }; 714 /** 715 * Capitalize the first letter of a string 716 * @param str 717 */ 718 719 var capitalizeFirstLetter = function capitalizeFirstLetter(str) { 720 return str.charAt(0).toUpperCase() + str.slice(1); 721 }; 722 /** 723 * Returns the array of object values (Object.values isn't supported in IE11) 724 * @param obj 725 */ 726 727 var objectValues = function objectValues(obj) { 728 return Object.keys(obj).map(function (key) { 729 return obj[key]; 730 }); 731 }; 732 /** 733 * Convert NodeList to Array 734 * @param nodeList 735 */ 736 737 var toArray = function toArray(nodeList) { 738 return Array.prototype.slice.call(nodeList); 739 }; 740 /** 741 * Standardise console warnings 742 * @param message 743 */ 744 745 var warn = function warn(message) { 746 console.warn("".concat(consolePrefix, " ").concat(message)); 747 }; 748 /** 749 * Standardise console errors 750 * @param message 751 */ 752 753 var error = function error(message) { 754 console.error("".concat(consolePrefix, " ").concat(message)); 755 }; 756 /** 757 * Private global state for `warnOnce` 758 * @type {Array} 759 * @private 760 */ 761 762 var previousWarnOnceMessages = []; 763 /** 764 * Show a console warning, but only if it hasn't already been shown 765 * @param message 766 */ 767 768 var warnOnce = function warnOnce(message) { 769 if (!(previousWarnOnceMessages.indexOf(message) !== -1)) { 770 previousWarnOnceMessages.push(message); 771 warn(message); 772 } 773 }; 774 /** 775 * Show a one-time console warning about deprecated params/methods 776 */ 777 778 var warnAboutDepreation = function warnAboutDepreation(deprecatedParam, useInstead) { 779 warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead.")); 780 }; 781 /** 782 * If `arg` is a function, call it (with no arguments or context) and return the result. 783 * Otherwise, just pass the value through 784 * @param arg 785 */ 786 787 var callIfFunction = function callIfFunction(arg) { 788 return typeof arg === 'function' ? arg() : arg; 789 }; 790 var hasToPromiseFn = function hasToPromiseFn(arg) { 791 return arg && typeof arg.toPromise === 'function'; 792 }; 793 var asPromise = function asPromise(arg) { 794 return hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); 795 }; 796 var isPromise = function isPromise(arg) { 797 return arg && Promise.resolve(arg) === arg; 798 }; 799 800 var DismissReason = Object.freeze({ 801 cancel: 'cancel', 802 backdrop: 'backdrop', 803 close: 'close', 804 esc: 'esc', 805 timer: 'timer' 806 }); 807 808 var isJqueryElement = function isJqueryElement(elem) { 809 return _typeof(elem) === 'object' && elem.jquery; 810 }; 811 812 var isElement = function isElement(elem) { 813 return elem instanceof Element || isJqueryElement(elem); 814 }; 815 816 var argsToParams = function argsToParams(args) { 817 var params = {}; 818 819 if (_typeof(args[0]) === 'object' && !isElement(args[0])) { 820 _extends(params, args[0]); 821 } else { 822 ['title', 'html', 'icon'].forEach(function (name, index) { 823 var arg = args[index]; 824 825 if (typeof arg === 'string' || isElement(arg)) { 826 params[name] = arg; 827 } else if (arg !== undefined) { 828 error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(_typeof(arg))); 829 } 830 }); 831 } 832 833 return params; 834 }; 835 836 var swalPrefix = 'swal2-'; 837 var prefix = function prefix(items) { 838 var result = {}; 839 840 for (var i in items) { 841 result[items[i]] = swalPrefix + items[i]; 842 } 843 844 return result; 845 }; 846 var swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'toast-column', 'show', 'hide', 'close', 'title', 'header', 'content', 'html-container', 'actions', 'confirm', 'cancel', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']); 847 var iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']); 848 849 var getContainer = function getContainer() { 850 return document.body.querySelector(".".concat(swalClasses.container)); 851 }; 852 var elementBySelector = function elementBySelector(selectorStr
852ing) { 853 var container = getContainer(); 854 return container ? container.querySelector(selectorString) : null; 855 }; 856 857 var elementByClass = function elementByClass(className) { 858 return elementBySelector(".".concat(className)); 859 }; 860 861 var getPopup = function getPopup() { 862 return elementByClass(swalClasses.popup); 863 }; 864 var getIcons = function getIcons() { 865 var popup = getPopup(); 866 return toArray(popup.querySelectorAll(".".concat(swalClasses.icon))); 867 }; 868 var getIcon = function getIcon() { 869 var visibleIcon = getIcons().filter(function (icon) { 870 return isVisible(icon); 871 }); 872 return visibleIcon.length ? visibleIcon[0] : null; 873 }; 874 var getTitle = function getTitle() { 875 return elementByClass(swalClasses.title); 876 }; 877 var getContent = function getContent() { 878 return elementByClass(swalClasses.content); 879 }; 880 var getHtmlContainer = function getHtmlContainer() { 881 return elementByClass(swalClasses['html-container']); 882 }; 883 var getImage = function getImage() { 884 return elementByClass(swalClasses.image); 885 }; 886 var getProgressSteps = function getProgressSteps() { 887 return elementByClass(swalClasses['progress-steps']); 888 }; 889 var getValidationMessage = function getValidationMessage() { 890 return elementByClass(swalClasses['validation-message']); 891 }; 892 var getConfirmButton = function getConfirmButton() { 893 return elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm)); 894 }; 895 var getCancelButton = function getCancelButton() { 896 return elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel)); 897 }; 898 var getActions = function getActions() { 899 return elementByClass(swalClasses.actions); 900 }; 901 var getHeader = function getHeader() { 902 return elementByClass(swalClasses.header); 903 }; 904 var getFooter = function getFooter() { 905 return elementByClass(swalClasses.footer); 906 }; 907 var getTimerProgressBar = function getTimerProgressBar() { 908 return elementByClass(swalClasses['timer-progress-bar']); 909 }; 910 var getCloseButton = function getCloseButton() { 911 return elementByClass(swalClasses.close); 912 }; // https://github.com/jkup/focusable/blob/master/index.js 913 914 var focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n"; 915 var getFocusableElements = function getFocusableElements() { 916 var focusableElementsWithTabindex = toArray(getPopup().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')) // sort according to tabindex 917 .sort(function (a, b) { 918 a = parseInt(a.getAttribute('tabindex')); 919 b = parseInt(b.getAttribute('tabindex')); 920 921 if (a > b) { 922 return 1; 923 } else if (a < b) { 924 return -1; 925 } 926 927 return 0; 928 }); 929 var otherFocusableElements = toArray(getPopup().querySelectorAll(focusable)).filter(function (el) { 930 return el.getAttribute('tabindex') !== '-1'; 931 }); 932 return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(function (el) { 933 return isVisible(el); 934 }); 935 }; 936 var isModal = function isModal() { 937 return !isToast() && !document.body.classList.contains(swalClasses['no-backdrop']); 938 }; 939 var isToast = function isToast() { 940 return document.body.classList.contains(swalClasses['toast-shown']); 941 }; 942 var isLoading = function isLoading() { 943 return getPopup().hasAttribute('data-loading'); 944 }; 945 946 var states = { 947 previousBodyPadding: null 948 }; 949 var setInnerHtml = function setInnerHtml(elem, html) { 950 // #1926 951 elem.textContent = ''; 952 953 if (html) { 954 var parser = new DOMParser(); 955 var parsed = parser.parseFromString(html, "text/html"); 956 toArray(parsed.querySelector('head').childNodes).forEach(function (child) { 957 elem.appendChild(child); 958 }); 959 toArray(parsed.querySelector('body').childNodes).forEach(function (child) { 960 elem.appendChild(child); 961 }); 962 } 963 }; 964 var hasClass = function hasClass(elem, className) { 965 if (!className) { 966 return false;
967 } 968 969 var classList = className.split(/\s+/); 970 971 for (var i = 0; i < classList.length; i++) { 972 if (!elem.classList.contains(classList[i])) { 973 return false; 974 } 975 } 976 977 return true; 978 }; 979 980 var removeCustomClasses = function removeCustomClasses(elem, params) { 981 toArray(elem.classList).forEach(function (className) { 982 if (!(objectValues(swalClasses).indexOf(className) !== -1) && !(objectValues(iconTypes).indexOf(className) !== -1) && !(objectValues(params.showClass).indexOf(className) !== -1)) { 983 elem.classList.remove(className); 984 } 985 }); 986 }; 987 988 var applyCustomClass = function applyCustomClass(elem, params, className) { 989 removeCustomClasses(elem, params); 990 991 if (params.customClass && params.customClass[className]) { 992 if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) { 993 return warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(_typeof(params.customClass[className]), "\"")); 994 } 995 996 addClass(elem, params.customClass[className]); 997 } 998 }; 999 function getInput(content, inputType) { 1000 if (!inputType) { 1001 return null; 1002 } 1003 1004 switch (inputType) { 1005 case 'select': 1006 case 'textarea': 1007 case 'file': 1008 return getChildByClass(content, swalClasses[inputType]); 1009 1010 case 'checkbox': 1011 return content.querySelector(".".concat(swalClasses.checkbox, " input")); 1012 1013 case 'radio': 1014 return content.querySelector(".".concat(swalClasses.radio, " input:checked")) || content.querySelector(".".concat(swalClasses.radio, " input:first-child")); 1015 1016 case 'range': 1017 return content.querySelector(".".concat(swalClasses.range, " input")); 1018 1019 default: 1020 return getChildByClass(content, swalClasses.input); 1021 } 1022 } 1023 var focusInput = function focusInput(input) { 1024 input.focus(); // place cursor at end of text in text input 1025 1026 if (input.type !== 'file') { 1027 // http://stackoverflow.com/a/2345915 1028 var val = input.value; 1029 input.value = ''; 1030 input.value = val; 1031 } 1032 }; 1033 var toggleClass = function toggleClass(target, classList, condition) { 1034 if (!target || !classList) { 1035 return; 1036 } 1037 1038 if (typeof classList === 'string') { 1039 classList = classList.split(/\s+/).filter(Boolean); 1040 } 1041 1042 classList.forEach(function (className) { 1043 if (target.forEach) { 1044 target.forEach(function (elem) { 1045 condition ? elem.classList.add(className) : elem.classList.remove(className); 1046 }); 1047 } else { 1048 condition ? target.classList.add(className) : target.classList.remove(className); 1049 } 1050 }); 1051 }; 1052 var addClass = function addClass(target, classList) { 1053 toggleClass(target, classList, true); 1054 }; 1055 var removeClass = function removeClass(target, classList) { 1056 toggleClass(target, classList, false); 1057 }; 1058 var getChildByClass = function getChildByClass(elem, className) { 1059 for (var i = 0; i < elem.childNodes.length; i++) { 1060 if (hasClass(elem.childNodes[i], className)) { 1061 return elem.childNodes[i]; 1062 } 1063 } 1064 }; 1065 var applyNumericalStyle = function applyNumericalStyle(elem, property, value) { 1066 if (value || parseInt(value) === 0) { 1067 elem.style[property] = typeof value === 'number' ? "".concat(value, "px") : value; 1068 } else { 1069 elem.style.removeProperty(property); 1070 } 1071 }; 1072 var show = function show(elem) { 1073 var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex'; 1074 elem.style.opacity = ''; 1075 elem.style.display = display; 1076 }; 1077 var hide = function hide(elem) { 1078 elem.style.opacity = ''; 1079 elem.style.display = 'none'; 1080 }; 1081 var toggle = function toggle(elem, condition, display) { 1082 condition ? show(elem, display) : hide(elem); 1083 }; // borrowed from jquery $(elem).is(':visible') implementation 1084 1085 var isVisible = function isVisible(elem) { 1086 return !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); 1087 }; 1088 /* istanbul ignore next */ 1089 1090 var isScrollable = function isScrollable(elem) { 1091 return !!(elem.scrollHeight > elem.clientHeight); 1092 }; // borrowed from https://stackoverflow.com/a/46352119 1093 1094 var hasCssAnimation = function hasCssAnimation(elem) { 1095 var style = window.getComputedStyle(elem); 1096 var animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); 1097 var transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); 1098 return animDuration > 0 || transDuration > 0; 1099 }; 1100 var contains = function contains(haystack, needle) { 1101 if (typeof haystack.contains === 'function') { 1102 return haystack.contains(needle); 1103 } 1104 }; 1105 var animateTimerProgressBar = function animateTimerProgressBar(timer) { 1106 var reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1107 var timerProgressBar = getTimerProgressBar(); 1108 1109 if (isVisible(timerProgressBar)) { 1110 if (reset) { 1111 timerProgressBar.style.transition = 'none'; 1112 timerProgressBar.style.width = '100%'; 1113 } 1114 1115 setTimeout(function () { 1116 timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear"); 1117 timerProgressBar.style.width = '0%'; 1118 }, 10); 1119 } 1120 }; 1121 var stopTimerProgressBar = function stopTimerProgressBar() { 1122 var timerProgressBar = getTimerProgressBar(); 1123 var timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); 1124 timerProgressBar.style.removeProperty('transition'); 1125 timerProgressBar.style.width = '100%'; 1126 var timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); 1127 var timerProgressBarPercent = parseInt(timerProgressBarWidth / timerProgressBarFullWidth * 100); 1128 timerProgressBar.style.removeProperty('transition'); 1129 timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%"); 1130 }; 1131 1132 // Detect Node env 1133 var isNodeEnv = function isNodeEnv() { 1134 return typeof window === 'undefined' || typeof document === 'undefined'; 1135 }; 1136 1137 var sweetHTML = "\n <div aria-labelledby=\"".concat(swalClasses.title, "\" aria-describedby=\"").concat(swalClasses.content, "\" class=\"").concat(swalClasses.popup, "\" tabindex=\"-1\">\n <div class=\"").concat(swalClasses.header, "\">\n <ul class=\"").concat(swalClasses['progress-steps'], "\"></ul>\n <div class=\"").concat(swalClasses.icon, " ").concat(iconTypes.error, "\"></div>\n <div class=\"").concat(swalClasses.icon, " ").concat(iconTypes.question, "\"></div>\n <div class=\"").concat(swalClasses.icon, " ").concat(iconTypes.warning, "\"></div>\n <div class=\"").concat(swalClasses.icon, " ").concat(iconTypes.info, "\"></div>\n <div class=\"").concat(swalClasses.icon, " ").concat(iconTypes.success, "\"></div>\n <img class=\"").concat(swalClasses.image, "\" />\n <h2 class=\"").concat(swalClasses.title, "\" id=\"").concat(swalClasses.title, "\"></h2>\n <button type=\"button\" class=\"").concat(swalClasses.close, "\"></button>\n </div>\n <div class=\"").concat(swalClasses.content, "\">\n <div id=\"").concat(swalClasses.content, "\" class=\"").concat(swalClasses['html-container'], "\"></div>\n <input class=\"").concat(swalClasses.input, "\" />\n <input type=\"file\" class=\"").concat(swalClasses.file, "\" />\n <div class=\"").concat(swalClasses.range, "\">\n <input type=\"range\" />\n <output></output>\n </div>\n <select class=\"").concat(swalClasses.select, "\"></select>\n <div class=\"").concat(swalClasses.radio, "\"></div>\n <label for=\"").concat(swalClasses.checkbox, "\" class=\"").concat(swalClasses.checkbox, "\">\n <input type=\"checkbox\" />\n <span class=\"").concat(swalClasses.label, "\"></span>\n </label>\n <textarea class=\"").concat(swalClasses.textarea, "\"></textarea>\n <div class=\"").concat(swalClasses['validation-message'], "\" id=\"").concat(swalClasses['validation-message'], "\"></div>\n </div>\n <div class=\"").concat(swalClasses.actions, "\">\n <button type=\"button\" class=\"").concat(swalClasses.confirm, "\">OK</button>\n <button type=\"button\" class=\"").concat(swalClasses.cancel, "\">Cancel</button>\n </div>\n <div class=\"").concat(swalClasses.footer, "\"></div>\n <div class=\"").concat(swalClasses['timer-progress-bar-container'], "\">\n <div class=\"").concat(swalClasses['timer-progress-bar'], "\"></div>\n </div>\n </div>\n").replace(/(^|\n)\s*/g, ''); 1138 1139 var resetOldContainer = function resetOldContainer() { 1140 var oldContainer = getContainer(); 1141 1142 if (!oldContainer) { 1143 return false; 1144 } 1145 1146 oldContainer.parentNode.removeChild(oldContainer); 1147 removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); 1148 return true; 1149 }; 1150 1151 var oldInputVal; // IE11 workaround, see #1109 for details 1152 1153 var resetValidationMessage = function resetValidationMessage(e) { 1154 if (Swal.isVisible() && oldInputVal !== e.target.value) { 1155 Swal.resetValidationMessage(); 1156 } 1157 1158 oldInputVal = e.target.value; 1159 }; 1160 1161 var addInputChangeListeners = function addInputChangeListeners() { 1162 var content = getContent(); 1163 var input = getChildByClass(content, swalClasses.input); 1164 var file = getChildByClass(content, swalClasses.file); 1165 var range = content.querySelector(".".concat(swalClasses.range, " input")); 1166 var rangeOutput = content.querySelector(".".concat(swalClasses.range, " output")); 1167 var select = getChildByClass(content, swalClasses.select); 1168 var checkbox = content.querySelector(".".concat(swalClasses.checkbox, " input")); 1169 var textarea = getChildByClass(content, swalClasses.textarea); 1170 input.oninput = resetValidationMessage; 1171 file.onchange = resetValidationMessage; 1172 select.onchange = resetValidationMessage; 1173 checkbox.onchange = resetValidationMessage; 1174 textarea.oninput = resetValidationMessage; 1175 1176 range.oninput = function (e) { 1177 resetValidationMessage(e); 1178 rangeOutput.value = range.value; 1179 }; 1180 1181 range.onchange = function (e) { 1182 resetValidationMessage(e); 1183 range.nextSibling.value = range.value; 1184 }; 1185 }; 1186 1187 var getTarget = function getTarget(target) { 1188 return typeof target === 'string' ? document.querySelector(target) : target; 1189 }; 1190 1191 var setupAccessibility = function setupAccessibility(params) { 1192 var popup = getPopup(); 1193 popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); 1194 popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); 1195 1196 if (!params.toast) { 1197 popup.setAttribute('aria-modal', 'true'); 1198 } 1199 }; 1200 1201 var setupRTL = function setupRTL(targetElement) { 1202 if (window.getComputedStyle(targetElement).direction === 'rtl') { 1203 addClass(getContainer(), swalClasses.rtl); 1204 } 1205 }; 1206 /* 1207 * Add modal + backdrop to DOM 1208 */ 1209 1210 1211 var init = function init(params) { 1212 // Clean up the old popup container if it exists 1213 var oldContainerExisted = resetOldContainer(); 1214 /* istanbul ignore if */ 1215 1216 if (isNodeEnv()) { 1217 error('SweetAlert2 requires document to initialize'); 1218 return; 1219 } 1220 1221 var container = document.createElement('div'); 1222 container.className = swalClasses.container; 1223 1224 if (oldContainerExisted) { 1225 addClass(container, swalClasses['no-transition']); 1226 } 1227 1228 setInnerHtml(container, sweetHTML); 1229 var targetElement = getTarget(params.target); 1230 targetElement.appendChild(container); 1231 setupAccessibility(params); 1232 setupRTL(targetElement); 1233 addInputChangeListeners(); 1234 }; 1235 1236 var parseHtmlToContainer = function parseHtmlToContainer(param, target) { 1237 // DOM element 1238 if (param instanceof HTMLElement) { 1239 target.appendChild(param); // Object 1240 } else if (_typeof(param) === 'object') { 1241 handleObject(param, target); // Plain string 1242 } else if (param) { 1243 setInnerHtml(target, param); 1244 } 1245 }; 1246 1247 var handleObject = function handleObject(param, target) { 1248 // JQuery element(s) 1249 if (param.jquery) { 1250 handleJqueryElem(target, param); // For other objects use their string representation 1251 } else { 1252 setInnerHtml(target, param.toString()); 1253 } 1254 }; 1255 1256 var handleJqueryElem = function handleJqueryElem(target, elem) { 1257 target.textContent = ''; 1258 1259 if (0 in elem) { 1260 for (var i = 0; (i in elem); i++) { 1261 target.appendChild(elem[i].cloneNode(true)); 1262 } 1263 } else { 1264 target.appendChild(elem.cloneNode(true)); 1265 } 1266 }; 1267 1268 var animationEndEvent = function () { 1269 // Prevent run in Node env 1270 1271 /* istanbul ignore if */ 1272 if (isNodeEnv()) { 1273 return false;
1274 } 1275 1276 var testEl = document.createElement('div'); 1277 var transEndEventNames = { 1278 WebkitAnimation: 'webkitAnimationEnd', 1279 OAnimation: 'oAnimationEnd oanimationend', 1280 animation: 'animationend' 1281 }; 1282 1283 for (var i in transEndEventNames) { 1284 if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') { 1285 return transEndEventNames[i]; 1286 } 1287 } 1288 1289 return false; 1290 }(); 1291 1292 // https://github.com/twbs/bootstrap/blob/master/js/src/modal.js 1293 1294 var measureScrollbar = function measureScrollbar() { 1295 var scrollDiv = document.createElement('div'); 1296 scrollDiv.className = swalClasses['scrollbar-measure']; 1297 document.body.appendChild(scrollDiv); 1298 var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; 1299 document.body.removeChild(scrollDiv); 1300 return scrollbarWidth; 1301 }; 1302 1303 var renderActions = function renderActions(instance, params) { 1304 var actions = getActions(); 1305 var confirmButton = getConfirmButton(); 1306 var cancelButton = getCancelButton(); // Actions (buttons) wrapper 1307 1308 if (!params.showConfirmButton && !params.showCancelButton) { 1309 hide(actions); 1310 } // Custom class 1311 1312 1313 applyCustomClass(actions, params, 'actions'); // Render confirm button 1314 1315 renderButton(confirmButton, 'confirm', params); // render Cancel Button 1316 1317 renderButton(cancelButton, 'cancel', params); 1318 1319 if (params.buttonsStyling) { 1320 handleButtonsStyling(confirmButton, cancelButton, params); 1321 } else { 1322 removeClass([confirmButton, cancelButton], swalClasses.styled); 1323 confirmButton.style.backgroundColor = confirmButton.style.borderLeftColor = confirmButton.style.borderRightColor = ''; 1324 cancelButton.style.backgroundColor = cancelButton.style.borderLeftColor = cancelButton.style.borderRightColor = ''; 1325 } 1326 1327 if (params.reverseButtons) { 1328 confirmButton.parentNode.insertBefore(cancelButton, confirmButton); 1329 } 1330 }; 1331 1332 function handleButtonsStyling(confirmButton, cancelButton, params) { 1333 addClass([confirmButton, cancelButton], swalClasses.styled); // Buttons background colors 1334 1335 if (params.confirmButtonColor) { 1336 confirmButton.style.backgroundColor = params.confirmButtonColor; 1337 } 1338 1339 if (params.cancelButtonColor) { 1340 cancelButton.style.backgroundColor = params.cancelButtonColor; 1341 } // Loading state 1342 1343 1344 if (!isLoading()) { 1345 var confirmButtonBackgroundColor = window.getComputedStyle(confirmButton).getPropertyValue('background-color'); 1346 confirmButton.style.borderLeftColor = confirmButtonBackgroundColor; 1347 confirmButton.style.borderRightColor = confirmButtonBackgroundColor; 1348 } 1349 } 1350 1351 function renderButton(button, buttonType, params) { 1352 toggle(button, params["show".concat(capitalizeFirstLetter(buttonType), "Button")], 'inline-block'); 1353 setInnerHtml(button, params["".concat(buttonType, "ButtonText")]); // Set caption text 1354 1355 button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")]); // ARIA label 1356 // Add buttons custom classes 1357 1358 button.className = swalClasses[buttonType]; 1359 applyCustomClass(button, params, "".concat(buttonType, "Button")); 1360 addClass(button, params["".concat(buttonType, "ButtonClass")]); 1361 } 1362 1363 function handleBackdropParam(container, backdrop) { 1364 if (typeof backdrop === 'string') { 1365 container.style.background = backdrop; 1366 } else if (!backdrop) { 1367 addClass([document.documentElement, document.body], swalClasses['no-backdrop']); 1368 } 1369 } 1370 1371 function handlePositionParam(container, position) { 1372 if (position in swalClasses) { 1373 addClass(container, swalClasses[position]); 1374 } else { 1375 warn('The "position" parameter is not valid, defaulting to "center"'); 1376 addClass(container, swalClasses.center); 1377 } 1378 } 1379 1380 function handleGrowParam(container, grow) { 1381 if (grow && typeof grow === 'string') { 1382 var growClass = "grow-".concat(grow); 1383 1384 if (growClass in swalClasses) { 1385 addClass(container, swalClasses[growClass]); 1386 } 1387 } 1388 } 1389 1390 var renderContainer = function renderContainer(instance, params) { 1391 var container = getContainer(); 1392 1393 if (!container) { 1394 return; 1395 } 1396 1397 handleBackdropParam(container, params.backdrop); 1398 1399 if (!params.backdrop && params.allowOutsideClick) { 1400 warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); 1401 } 1402 1403 handlePositionParam(container, params.position); 1404 handleGrowParam(container, params.grow); // Custom class 1405 1406 applyCustomClass(container, params, 'container'); // Set queue step attribute for getQueueStep() method 1407 1408 var queueStep = document.body.getAttribute('data-swal2-queue-step'); 1409 1410 if (queueStep) { 1411 container.setAttribute('data-queue-step', queueStep); 1412 document.body.removeAttribute('data-swal2-queue-step'); 1413 } 1414 }; 1415 1416 /** 1417 * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. 1418 * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` 1419 * This is the approach that Babel will probably take to implement private methods/fields 1420 * https://github.com/tc39/proposal-private-methods 1421 * https://github.com/babel/babel/pull/7555 1422 * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* 1423 * then we can use that language feature. 1424 */ 1425 var privateProps = { 1426 promise: new WeakMap(), 1427 innerParams: new WeakMap(), 1428 domCache: new WeakMap() 1429 }; 1430 1431 var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; 1432 var renderInput = function renderInput(instance, params) { 1433 var content = getContent(); 1434 var innerParams = privateProps.innerParams.get(instance); 1435 var rerender = !innerParams || params.input !== innerParams.input;
1436 inputTypes.forEach(function (inputType) { 1437 var inputClass = swalClasses[inputType]; 1438 var inputContainer = getChildByClass(content, inputClass); // set attributes 1439 1440 setAttributes(inputType, params.inputAttributes); // set class 1441 1442 inputContainer.className = inputClass; 1443 1444 if (rerender) { 1445 hide(inputContainer); 1446 } 1447 }); 1448 1449 if (params.input) { 1450 if (rerender) { 1451 showInput(params); 1452 } // set custom class 1453 1454 1455 setCustomClass(params); 1456 } 1457 }; 1458 1459 var showInput = function showInput(params) { 1460 if (!renderInputType[params.input]) { 1461 return error("Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"".concat(params.input, "\"")); 1462 } 1463 1464 var inputContainer = getInputContainer(params.input); 1465 var input = renderInputType[params.input](inputContainer, params); 1466 show(input); // input autofocus 1467 1468 setTimeout(function () { 1469 focusInput(input); 1470 }); 1471 }; 1472 1473 var removeAttributes = function removeAttributes(input) { 1474 for (var i = 0; i < input.attributes.length; i++) { 1475 var attrName = input.attributes[i].name; 1476 1477 if (!(['type', 'value', 'style'].indexOf(attrName) !== -1)) { 1478 input.removeAttribute(attrName); 1479 } 1480 } 1481 }; 1482 1483 var setAttributes = function setAttributes(inputType, inputAttributes) { 1484 var input = getInput(getContent(), inputType); 1485 1486 if (!input) { 1487 return; 1488 } 1489 1490 removeAttributes(input); 1491 1492 for (var attr in inputAttributes) { 1493 // Do not set a placeholder for <input type="range"> 1494 // it'll crash Edge, #1298 1495 if (inputType === 'range' && attr === 'placeholder') { 1496 continue; 1497 } 1498 1499 input.setAttribute(attr, inputAttributes[attr]); 1500 } 1501 }; 1502 1503 var setCustomClass = function setCustomClass(params) { 1504 var inputContainer = getInputContainer(params.input); 1505 1506 if (params.customClass) { 1507 addClass(inputContainer, params.customClass.input); 1508 } 1509 }; 1510 1511 var setInputPlaceholder = function setInputPlaceholder(input, params) { 1512 if (!input.placeholder || params.inputPlaceholder) { 1513 input.placeholder = params.inputPlaceholder; 1514 } 1515 }; 1516 1517 var getInputContainer = function getInputContainer(inputType) { 1518 var inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input; 1519 return getChildByClass(getContent(), inputClass); 1520 }; 1521 1522 var renderInputType = {}; 1523 1524 renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = function (input, params) { 1525 if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') { 1526 input.value = params.inputValue; 1527 } else if (!isPromise(params.inputValue)) { 1528 warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(_typeof(params.inputValue), "\"")); 1529 } 1530 1531 setInputPlaceholder(input, params); 1532 input.type = params.input; 1533 return input; 1534 }; 1535 1536 renderInputType.file = function (input, params) { 1537 setInputPlaceholder(input, params); 1538 return input; 1539 }; 1540 1541 renderInputType.range = function (range, params) { 1542 var rangeInput = range.querySelector('input'); 1543 var rangeOutput = range.querySelector('output'); 1544 rangeInput.value = params.inputValue; 1545 rangeInput.type = params.input; 1546 rangeOutput.value = params.inputValue; 1547 return range; 1548 }; 1549 1550 renderInputType.select = function (select, params) { 1551 select.textContent = ''; 1552 1553 if (params.inputPlaceholder) { 1554 var placeholder = document.createElement('option'); 1555 setInnerHtml(placeholder, params.inputPlaceholder); 1556 placeholder.value = ''; 1557 placeholder.disabled = true; 1558 placeholder.selected = true; 1559 select.appendChild(placeholder); 1560 } 1561 1562 return select; 1563 }; 1564 1565 renderInputType.radio = function (radio) { 1566 radio.textContent = ''; 1567 return radio; 1568 }; 1569 1570 renderInputType.checkbox = function (checkboxContainer, params) { 1571 var checkbox = getInput(getContent(), 'checkbox'); 1572 checkbox.value = 1; 1573 checkbox.id = swalClasses.checkbox; 1574 checkbox.checked = Boolean(params.inputValue); 1575 var label = checkboxContainer.querySelector('span'); 1576 setInnerHtml(label, params.inputPlaceholder); 1577 return checkboxContainer; 1578 }; 1579 1580 renderInputType.textarea = function (textarea, params) { 1581 textarea.value = params.inputValue; 1582 setInputPlaceholder(textarea, params); 1583 1584 if ('MutationObserver' in window) { 1585 // #1699 1586 var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); 1587 var popupPadding = parseInt(window.getComputedStyle(getPopup()).paddingLeft) + parseInt(window.getComputedStyle(getPopup()).paddingRight); 1588 1589 var outputsize = function outputsize() { 1590 var contentWidth = textarea.offsetWidth + popupPadding; 1591 1592 if (contentWidth > initialPopupWidth) { 1593 getPopup().style.width = "".concat(contentWidth, "px"); 1594 } else { 1595 getPopup().style.width = null; 1596 } 1597 }; 1598 1599 new MutationObserver(outputsize).observe(textarea, { 1600 attributes: true, 1601 attributeFilter: ['style'] 1602 }); 1603 } 1604 1605 return textarea; 1606 }; 1607 1608 var renderContent = function renderContent(instance, params) { 1609 var content = getContent().querySelector("#".concat(swalClasses.content)); // Content as HTML 1610 1611 if (params.html) { 1612 parseHtmlToContainer(params.html, content); 1613 show(content, 'block'); // Content as plain text 1614 } else if (params.text) { 1615 content.textContent = params.text; 1616 show(content, 'block'); // No content 1617 } else { 1618 hide(content); 1619 } 1620 1621 renderInput(instance, params); // Custom class 1622 1623 applyCustomClass(getContent(), params, 'content'); 1624 }; 1625 1626 var renderFooter = function renderFooter(instance, params) { 1627 var footer = getFooter(); 1628 toggle(footer, params.footer); 1629 1630 if (params.footer) { 1631 parseHtmlToContainer(params.footer, footer); 1632 } // Custom class 1633 1634 1635 applyCustomClass(footer, params, 'footer'); 1636 }; 1637 1638 var renderCloseButton = function renderCloseButton(instance, params) { 1639 var closeButton = getCloseButton(); 1640 setInnerHtml(closeButton, params.closeButtonHtml); // Custom class 1641 1642 applyCustomClass(closeButton, params, 'closeButton'); 1643 toggle(closeButton, params.showCloseButton); 1644 closeButton.setAttribute('aria-label', params.closeButtonAriaLabel); 1645 }; 1646 1647 var renderIcon = function renderIcon(instance, params) { 1648 var innerParams = privateProps.innerParams.get(instance); // if the give icon already rendered, apply the custom class without re-rendering the icon 1649 1650 if (innerParams && params.icon === innerParams.icon && getIcon()) { 1651 applyCustomClass(getIcon(), params, 'icon'); 1652 return; 1653 } 1654 1655 hideAllIcons(); 1656 1657 if (!params.icon) { 1658 return; 1659 } 1660 1661 if (Object.keys(iconTypes).indexOf(params.icon) !== -1) { 1662 var icon = elementBySelector(".".concat(swalClasses.icon, ".").concat(iconTypes[params.icon])); 1663 show(icon); // Custom or default content 1664 1665 setContent(icon, params); 1666 adjustSuccessIconBackgoundColor(); // Custom class 1667 1668 applyCustomClass(icon, params, 'icon'); // Animate icon 1669 1670 addClass(icon, params.showClass.icon); 1671 } else { 1672 error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); 1673 } 1674 }; 1675 1676 var hideAllIcons = function hideAllIcons() { 1677 var icons = getIcons(); 1678 1679 for (var i = 0; i < icons.length; i++) { 1680 hide(icons[i]); 1681 } 1682 }; // Adjust success icon background color to match the popup background color 1683 1684 1685 var adjustSuccessIconBackgoundColor = function adjustSuccessIconBackgoundColor() { 1686 var popup = getPopup();
1687 var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); 1688 var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); 1689 1690 for (var i = 0; i < successIconParts.length; i++) { 1691 successIconParts[i].style.backgroundColor = popupBackgroundColor; 1692 } 1693 }; 1694 1695 var setContent = function setContent(icon, params) { 1696 icon.textContent = ''; 1697 1698 if (params.iconHtml) { 1699 setInnerHtml(icon, iconContent(params.iconHtml)); 1700 } else if (params.icon === 'success') { 1701 setInnerHtml(icon, "\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 "); 1702 } else if (params.icon === 'error') { 1703 setInnerHtml(icon, "\n <span class=\"swal2-x-mark\">\n <span class=\"swal2-x-mark-line-left\"></span>\n <span class=\"swal2-x-mark-line-right\"></span>\n </span>\n "); 1704 } else { 1705 var defaultIconHtml = { 1706 question: '?', 1707 warning: '!', 1708 info: 'i' 1709 }; 1710 setInnerHtml(icon, iconContent(defaultIconHtml[params.icon])); 1711 } 1712 }; 1713 1714 var iconContent = function iconContent(content) { 1715 return "<div class=\"".concat(swalClasses['icon-content'], "\">").concat(content, "</div>"); 1716 }; 1717 1718 var renderImage = function renderImage(instance, params) { 1719 var image = getImage(); 1720 1721 if (!params.imageUrl) { 1722 return hide(image); 1723 } 1724 1725 show(image, ''); // Src, alt 1726 1727 image.setAttribute('src', params.imageUrl); 1728 image.setAttribute('alt', params.imageAlt); // Width, height 1729 1730 applyNumericalStyle(image, 'width', params.imageWidth); 1731 applyNumericalStyle(image, 'height', params.imageHeight); // Class 1732 1733 image.className = swalClasses.image; 1734 applyCustomClass(image, params, 'image'); 1735 }; 1736 1737 var currentSteps = []; 1738 /* 1739 * Global function for chaining sweetAlert popups 1740 */ 1741 1742 var queue = function queue(steps) { 1743 var Swal = this; 1744 currentSteps = steps; 1745 1746 var resetAndResolve = function resetAndResolve(resolve, value) { 1747 currentSteps = []; 1748 resolve(value); 1749 }; 1750 1751 var queueResult = []; 1752 return new Promise(function (resolve) { 1753 (function step(i, callback) { 1754 if (i < currentSteps.length) { 1755 document.body.setAttribute('data-swal2-queue-step', i); 1756 Swal.fire(currentSteps[i]).then(function (result) { 1757 if (typeof result.value !== 'undefined') { 1758 queueResult.push(result.value); 1759 step(i + 1, callback); 1760 } else { 1761 resetAndResolve(resolve, { 1762 dismiss: result.dismiss 1763 }); 1764 } 1765 }); 1766 } else { 1767 resetAndResolve(resolve, { 1768 value: queueResult 1769 }); 1770 } 1771 })(0); 1772 }); 1773 }; 1774 /* 1775 * Global function for getting the index of current popup in queue 1776 */ 1777 1778 var getQueueStep = function getQueueStep() { 1779 return getContainer() && getContainer().getAttribute('data-queue-step'); 1780 }; 1781 /* 1782 * Global function for inserting a popup to the queue 1783 */ 1784 1785 var insertQueueStep = function insertQueueStep(step, index) { 1786 if (index && index < currentSteps.length) { 1787 return currentSteps.splice(index, 0, step); 1788 } 1789 1790 return currentSteps.push(step); 1791 }; 1792 /* 1793 * Global function for deleting a popup from the queue 1794 */ 1795 1796 var deleteQueueStep = function deleteQueueStep(index) { 1797 if (typeof currentSteps[index] !== 'undefined') { 1798 currentSteps.splice(index, 1); 1799 } 1800 }; 1801 1802 var createStepElement = function createStepElement(step) { 1803 var stepEl = document.createElement('li'); 1804 addClass(stepEl, swalClasses['progress-step']); 1805 setInnerHtml(stepEl, step); 1806 return stepEl; 1807 }; 1808 1809 var createLineElement = function createLineElement(params) { 1810 var lineEl = document.createElement('li'); 1811 addClass(lineEl, swalClasses['progress-step-line']); 1812 1813 if (params.progressStepsDistance) { 1814 lineEl.style.width = params.progressStepsDistance; 1815 } 1816 1817 return lineEl; 1818 }; 1819 1820 var renderProgressSteps = function renderProgressSteps(instance, params) { 1821 var progressStepsContainer = getProgressSteps(); 1822 1823 if (!params.progressSteps || params.progressSteps.length === 0) { 1824 return hide(progressStepsContainer); 1825 } 1826 1827 show(progressStepsContainer); 1828 progressStepsContainer.textContent = ''; 1829 var currentProgressStep = parseInt(params.currentProgressStep === undefined ? getQueueStep() : params.currentProgressStep); 1830 1831 if (currentProgressStep >= params.progressSteps.length) { 1832 warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); 1833 } 1834 1835 params.progressSteps.forEach(function (step, index) { 1836 var stepEl = createStepElement(step); 1837 progressStepsContainer.appendChild(stepEl); 1838 1839 if (index === currentProgressStep) { 1840 addClass(stepEl, swalClasses['active-progress-step']); 1841 } 1842 1843 if (index !== params.progressSteps.length - 1) { 1844 var lineEl = createLineElement(params); 1845 progressStepsContainer.appendChild(lineEl); 1846 } 1847 }); 1848 }; 1849 1850 var renderTitle = function renderTitle(instance, params) { 1851 var title = getTitle(); 1852 toggle(title, params.title || params.titleText); 1853 1854 if (params.title) { 1855 parseHtmlToContainer(params.title, title); 1856 } 1857 1858 if (params.titleText) { 1859 title.innerText = params.titleText; 1860 } // Custom class 1861 1862 1863 applyCustomClass(title, params, 'title'); 1864 }; 1865 1866 var renderHeader = function renderHeader(instance, params) { 1867 var header = getHeader(); // Custom class 1868 1869 applyCustomClass(header, params, 'header'); // Progress steps 1870 1871 renderProgressSteps(instance, params); // Icon 1872 1873 renderIcon(instance, params); // Image 1874 1875 renderImage(instance, params); // Title 1876 1877 renderTitle(instance, params); // Close button 1878 1879 renderCloseButton(instance, params); 1880 }; 1881 1882 var renderPopup = function renderPopup(instance, params) { 1883 var popup = getPopup(); // Width 1884 1885 applyNumericalStyle(popup, 'width', params.width); // Padding 1886 1887 applyNumericalStyle(popup, 'padding', params.padding);
1887 // Background 1888 1889 if (params.background) { 1890 popup.style.background = params.background; 1891 } // Classes 1892 1893 1894 addClasses(popup, params); 1895 }; 1896 1897 var addClasses = function addClasses(popup, params) { 1898 // Default Class + showClass when updating Swal.update({}) 1899 popup.className = "".concat(swalClasses.popup, " ").concat(isVisible(popup) ? params.showClass.popup : ''); 1900 1901 if (params.toast) { 1902 addClass([document.documentElement, document.body], swalClasses['toast-shown']); 1903 addClass(popup, swalClasses.toast); 1904 } else { 1905 addClass(popup, swalClasses.modal); 1906 } // Custom class 1907 1908 1909 applyCustomClass(popup, params, 'popup'); 1910 1911 if (typeof params.customClass === 'string') { 1912 addClass(popup, params.customClass); 1913 } // Icon class (#1842) 1914 1915 1916 if (params.icon) { 1917 addClass(popup, swalClasses["icon-".concat(params.icon)]); 1918 } 1919 }; 1920 1921 var render = function render(instance, params) { 1922 renderPopup(instance, params); 1923 renderContainer(instance, params); 1924 renderHeader(instance, params); 1925 renderContent(instance, params); 1926 renderActions(instance, params); 1927 renderFooter(instance, params); 1928 1929 if (typeof params.onRender === 'function') { 1930 params.onRender(getPopup()); 1931 } 1932 }; 1933 1934 /* 1935 * Global function to determine if SweetAlert2 popup is shown 1936 */ 1937 1938 var isVisible$1 = function isVisible$$1() { 1939 return isVisible(getPopup()); 1940 }; 1941 /* 1942 * Global function to click 'Confirm' button 1943 */ 1944 1945 var clickConfirm = function clickConfirm() { 1946 return getConfirmButton() && getConfirmButton().click(); 1947 }; 1948 /* 1949 * Global function to click 'Cancel' button 1950 */ 1951 1952 var clickCancel = function clickCancel() { 1953 return getCancelButton() && getCancelButton().click(); 1954 }; 1955 1956 function fire() { 1957 var Swal = this; 1958 1959 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 1960 args[_key] = arguments[_key]; 1961 } 1962 1963 return _construct(Swal, args); 1964 } 1965 1966 /** 1967 * Returns an extended version of `Swal` containing `params` as defaults. 1968 * Useful for reusing Swal configuration. 1969 * 1970 * For example: 1971 * 1972 * Before: 1973 * const textPromptOptions = { input: 'text', showCancelButton: true } 1974 * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' }) 1975 * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' }) 1976 * 1977 * After: 1978 * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true }) 1979 * const {value: firstName} = await TextPrompt('What is your first name?') 1980 * const {value: lastName} = await TextPrompt('What is your last name?') 1981 * 1982 * @param mixinParams 1983 */ 1984 function mixin(mixinParams) { 1985 var MixinSwal = /*#__PURE__*/function (_this) { 1986 _inherits(MixinSwal, _this); 1987 1988 var _super = _createSuper(MixinSwal); 1989 1990 function MixinSwal() { 1991 _classCallCheck(this, MixinSwal); 1992 1993 return _super.apply(this, arguments); 1994 } 1995 1996 _createClass(MixinSwal, [{ 1997 key: "_main", 1998 value: function _main(params) { 1999 return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, _extends({}, mixinParams, params)); 2000 } 2001 }]); 2002 2003 return MixinSwal; 2004 }(this); 2005 2006 return MixinSwal; 2007 } 2008 2009 /** 2010 * Show spinner instead of Confirm button 2011 */ 2012 2013 var showLoading = function showLoading() { 2014 var popup = getPopup(); 2015 2016 if (!popup) { 2017 Swal.fire(); 2018 } 2019 2020 popup = getPopup(); 2021 var actions = getActions(); 2022 var confirmButton = getConfirmButton(); 2023 show(actions); 2024 show(confirmButton, 'inline-block'); 2025 addClass([popup, actions], swalClasses.loading); 2026 confirmButton.disabled = true; 2027 popup.setAttribute('data-loading', true); 2028 popup.setAttribute('aria-busy', true); 2029 popup.focus(); 2030 }; 2031 2032 var RESTORE_FOCUS_TIMEOUT = 100; 2033 2034 var globalState = {}; 2035 2036 var focusPreviousActiveElement = function focusPreviousActiveElement() { 2037 if (globalState.previousActiveElement && globalState.previousActiveElement.focus) { 2038 globalState.previousActiveElement.focus(); 2039 globalState.previousActiveElement = null; 2040 } else if (document.body) { 2041 document.body.focus(); 2042 } 2043 }; // Restore previous active (focused) element 2044 2045 2046 var restoreActiveElement = function restoreActiveElement() { 2047 return new Promise(function (resolve) { 2048 var x = window.scrollX; 2049 var y = window.scrollY; 2050 globalState.restoreFocusTimeout = setTimeout(function () { 2051 focusPreviousActiveElement(); 2052 resolve(); 2053 }, RESTORE_FOCUS_TIMEOUT); // issues/900 2054 2055 /* istanbul ignore if */ 2056 2057 if (typeof x !== 'undefined' && typeof y !== 'undefined') { 2058 // IE doesn't have scrollX/scrollY support 2059 window.scrollTo(x, y); 2060 } 2061 }); 2062 }; 2063 2064 /** 2065 * If `timer` parameter is set, returns number of milliseconds of timer remained. 2066 * Otherwise, returns undefined. 2067 */ 2068 2069 var getTimerLeft = function getTimerLeft() {
2070 return globalState.timeout && globalState.timeout.getTimerLeft(); 2071 }; 2072 /** 2073 * Stop timer. Returns number of milliseconds of timer remained. 2074 * If `timer` parameter isn't set, returns undefined. 2075 */ 2076 2077 var stopTimer = function stopTimer() { 2078 if (globalState.timeout) { 2079 stopTimerProgressBar(); 2080 return globalState.timeout.stop(); 2081 } 2082 }; 2083 /** 2084 * Resume timer. Returns number of milliseconds of timer remained. 2085 * If `timer` parameter isn't set, returns undefined. 2086 */ 2087 2088 var resumeTimer = function resumeTimer() { 2089 if (globalState.timeout) { 2090 var remaining = globalState.timeout.start(); 2091 animateTimerProgressBar(remaining); 2092 return remaining; 2093 } 2094 }; 2095 /** 2096 * Resume timer. Returns number of milliseconds of timer remained. 2097 * If `timer` parameter isn't set, returns undefined. 2098 */ 2099 2100 var toggleTimer = function toggleTimer() { 2101 var timer = globalState.timeout; 2102 return timer && (timer.running ? stopTimer() : resumeTimer()); 2103 }; 2104 /** 2105 * Increase timer. Returns number of milliseconds of an updated timer. 2106 * If `timer` parameter isn't set, returns undefined. 2107 */ 2108 2109 var increaseTimer = function increaseTimer(n) { 2110 if (globalState.timeout) { 2111 var remaining = globalState.timeout.increase(n); 2112 animateTimerProgressBar(remaining, true); 2113 return remaining; 2114 } 2115 }; 2116 /** 2117 * Check if timer is running. Returns true if timer is running 2118 * or false if timer is paused or stopped. 2119 * If `timer` parameter isn't set, returns undefined 2120 */ 2121 2122 var isTimerRunning = function isTimerRunning() { 2123 return globalState.timeout && globalState.timeout.isRunning(); 2124 }; 2125 2126 var defaultParams = { 2127 title: '', 2128 titleText: '', 2129 text: '', 2130 html: '', 2131 footer: '', 2132 icon: undefined, 2133 iconHtml: undefined, 2134 toast: false, 2135 animation: true, 2136 showClass: { 2137 popup: 'swal2-show', 2138 backdrop: 'swal2-backdrop-show', 2139 icon: 'swal2-icon-show' 2140 }, 2141 hideClass: { 2142 popup: 'swal2-hide', 2143 backdrop: 'swal2-backdrop-hide', 2144 icon: 'swal2-icon-hide' 2145 }, 2146 customClass: undefined, 2147 target: 'body', 2148 backdrop: true, 2149 heightAuto: true, 2150 allowOutsideClick: true, 2151 allowEscapeKey: true, 2152 allowEnterKey: true, 2153 stopKeydownPropagation: true, 2154 keydownListenerCapture: false, 2155 showConfirmButton: true,
2156 showCancelButton: false, 2157 preConfirm: undefined, 2158 confirmButtonText: 'OK', 2159 confirmButtonAriaLabel: '', 2160 confirmButtonColor: undefined, 2161 cancelButtonText: 'Cancel', 2162 cancelButtonAriaLabel: '', 2163 cancelButtonColor: undefined, 2164 buttonsStyling: true, 2165 reverseButtons: false, 2166 focusConfirm: true, 2167 focusCancel: false, 2168 showCloseButton: false, 2169 closeButtonHtml: '×', 2170 closeButtonAriaLabel: 'Close this dialog', 2171 showLoaderOnConfirm: false, 2172 imageUrl: undefined, 2173 imageWidth: undefined, 2174 imageHeight: undefined, 2175 imageAlt: '', 2176 timer: undefined, 2177 timerProgressBar: false, 2178 width: undefined, 2179 padding: undefined, 2180 background: undefined, 2181 input: undefined, 2182 inputPlaceholder: '', 2183 inputValue: '', 2184 inputOptions: {}, 2185 inputAutoTrim: true, 2186 inputAttributes: {}, 2187 inputValidator: undefined, 2188 validationMessage: undefined, 2189 grow: false, 2190 position: 'center', 2191 progressSteps: [], 2192 currentProgressStep: undefined, 2193 progressStepsDistance: undefined, 2194 onBeforeOpen: undefined, 2195 onOpen: undefined, 2196 onRender: undefined, 2197 onClose: undefined, 2198 onAfterClose: undefined, 2199 onDestroy: undefined, 2200 scrollbarPadding: true 2201 }; 2202 var updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'footer', 'hideClass', 'html', 'icon', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'onAfterClose', 'onClose', 'onDestroy', 'progressSteps', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'text', 'title', 'titleText']; 2203 var deprecatedParams = { 2204 animation: 'showClass" and "hideClass' 2205 }; 2206 var toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusCancel', 'he
2206ightAuto', 'keydownListenerCapture']; 2207 /** 2208 * Is valid parameter 2209 * @param {String} paramName 2210 */ 2211 2212 var isValidParameter = function isValidParameter(paramName) { 2213 return Object.prototype.hasOwnProperty.call(defaultParams, paramName); 2214 }; 2215 /** 2216 * Is valid parameter for Swal.update() method 2217 * @param {String} paramName 2218 */ 2219 2220 var isUpdatableParameter = function isUpdatableParameter(paramName) { 2221 return updatableParams.indexOf(paramName) !== -1; 2222 }; 2223 /** 2224 * Is deprecated parameter 2225 * @param {String} paramName 2226 */ 2227 2228 var isDeprecatedParameter = function isDeprecatedParameter(paramName) { 2229 return deprecatedParams[paramName]; 2230 }; 2231 2232 var checkIfParamIsValid = function checkIfParamIsValid(param) { 2233 if (!isValidParameter(param)) { 2234 warn("Unknown parameter \"".concat(param, "\"")); 2235 } 2236 }; 2237 2238 var checkIfToastParamIsValid = function checkIfToastParamIsValid(param) { 2239 if (toastIncompatibleParams.indexOf(param) !== -1) { 2240 warn("The parameter \"".concat(param, "\" is incompatible with toasts")); 2241 } 2242 }; 2243 2244 var checkIfParamIsDeprecated = function checkIfParamIsDeprecated(param) { 2245 if (isDeprecatedParameter(param)) { 2246 warnAboutDepreation(param, isDeprecatedParameter(param)); 2247 } 2248 }; 2249 /** 2250 * Show relevant warnings for given params 2251 * 2252 * @param params 2253 */ 2254 2255 2256 var showWarningsForParams = function showWarningsForParams(params) { 2257 for (var param in params) { 2258 checkIfParamIsValid(param); 2259 2260 if (params.toast) { 2261 checkIfToastParamIsValid(param); 2262 } 2263 2264 checkIfParamIsDeprecated(param); 2265 } 2266 }; 2267 2268 2269 2270 var staticMethods = /*#__PURE__*/Object.freeze({ 2271 isValidParameter: isValidParameter, 2272 isUpdatableParameter: isUpdatableParameter, 2273 isDeprecatedParameter: isDeprecatedParameter, 2274 argsToParams: argsToParams, 2275 isVisible: isVisible$1, 2276 clickConfirm: clickConfirm, 2277 clickCancel: clickCancel, 2278 getContainer: getContainer, 2279 getPopup: getPopup, 2280 getTitle: getTitle, 2281 getContent: getContent, 2282 getHtmlContainer: getHtmlContainer, 2283 getImage: getImage, 2284 getIcon: getIcon, 2285 getIcons: getIcons, 2286 getCloseButton: getCloseButton, 2287 getActions: getActions, 2288 getConfirmButton: getConfirmButton, 2289 getCancelButton: getCancelButton, 2290 getHeader: getHeader, 2291 getFooter: getFooter, 2292 getTimerProgressBar: getTimerProgressBar, 2293 getFocusableElements: getFocusableElements, 2294 getValidationMessage: getValidationMessage, 2295 isLoading: isLoading, 2296 fire: fire, 2297 mixin: mixin, 2298 queue: queue, 2299 getQueueStep: getQueueStep, 2300 insertQueueStep: insertQueueStep, 2301 deleteQueueStep: deleteQueueStep, 2302 showLoading: showLoading, 2303 enableLoading: showLoading, 2304 getTimerLeft: getTimerLeft, 2305 stopTimer: stopTimer, 2306 resumeTimer: resumeTimer, 2307 toggleTimer: toggleTimer, 2308 increaseTimer: increaseTimer, 2309 isTimerRunning: isTimerRunning 2310 }); 2311 2312 /** 2313 * Enables buttons and hide loader. 2314 */ 2315 2316 function hideLoading() { 2317 // do nothing if popup is closed 2318 var innerParams = privateProps.innerParams.get(this); 2319 2320 if (!innerParams) { 2321 return; 2322 } 2323 2324 var domCache = privateProps.domCache.get(this); 2325 2326 if (!innerParams.showConfirmButton) { 2327 hide(domCache.confirmButton); 2328 2329 if (!innerParams.showCancelButton) { 2330 hide(domCache.actions); 2331 } 2332 } 2333 2334 removeClass([domCache.popup, domCache.actions], swalClasses.loading); 2335 domCache.popup.removeAttribute('aria-busy'); 2336 domCache.popup.removeAttribute('data-loading'); 2337 domCache.confirmButton.disabled = false; 2338 domCache.cancelButton.disabled = false; 2339 } 2340 2341 function getInput$1(instance) { 2342 var innerParams = privateProps.innerParams.get(instance || this); 2343 var domCache = privateProps.domCache.get(instance || this); 2344 2345 if (!domCache) { 2346 return null; 2347 } 2348 2349 return getInput(domCache.content, innerParams.input); 2350 } 2351 2352 var fixScrollbar = function fixScrollbar() { 2353 // for queues, do not do this more than once 2354 if (states.previousBodyPadding !== null) { 2355 return; 2356 } // if the body has overflow 2357 2358 2359 if (document.body.scrollHeight > window.innerHeight) { 2360 // add padding so the content doesn't shift after removal of scrollbar 2361 states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); 2362 document.body.style.paddingRight = "".concat(states.previousBodyPadding + measureScrollbar(), "px"); 2363 } 2364 };
2365 var undoScrollbar = function undoScrollbar() { 2366 if (states.previousBodyPadding !== null) { 2367 document.body.style.paddingRight = "".concat(states.previousBodyPadding, "px"); 2368 states.previousBodyPadding = null; 2369 } 2370 }; 2371 2372 /* istanbul ignore file */ 2373 2374 var iOSfix = function iOSfix() { 2375 var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; 2376 2377 if (iOS && !hasClass(document.body, swalClasses.iosfix)) { 2378 var offset = document.body.scrollTop; 2379 document.body.style.top = "".concat(offset * -1, "px"); 2380 addClass(document.body, swalClasses.iosfix); 2381 lockBodyScroll(); 2382 addBottomPaddingForTallPopups(); // #1948 2383 } 2384 }; 2385 2386 var addBottomPaddingForTallPopups = function addBottomPaddingForTallPopups() { 2387 var safari = !navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i); 2388 2389 if (safari) { 2390 var bottomPanelHeight = 44; 2391 2392 if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) { 2393 getContainer().style.paddingBottom = "".concat(bottomPanelHeight, "px"); 2394 } 2395 } 2396 }; 2397 2398 var lockBodyScroll = function lockBodyScroll() { 2399 // #1246 2400 var container = getContainer(); 2401 var preventTouchMove; 2402 2403 container.ontouchstart = function (e) { 2404 preventTouchMove = shouldPreventTouchMove(e.target); 2405 }; 2406 2407 container.ontouchmove = function (e) { 2408 if (preventTouchMove) { 2409 e.preventDefault(); 2410 e.stopPropagation(); 2411 } 2412 }; 2413 }; 2414 2415 var shouldPreventTouchMove = function shouldPreventTouchMove(target) { 2416 var container = getContainer(); 2417 2418 if (target === container) { 2419 return true; 2420 } 2421 2422 if (!isScrollable(container) && target.tagName !== 'INPUT' && // #1603 2423 !(isScrollable(getContent()) && // #1944 2424 getContent().contains(target))) { 2425 return true; 2426 } 2427 2428 return false; 2429 }; 2430 2431 var undoIOSfix = function undoIOSfix() { 2432 if (hasClass(document.body, swalClasses.iosfix)) { 2433 var offset = parseInt(document.body.style.top, 10); 2434 removeClass(document.body, swalClasses.iosfix); 2435 document.body.style.top = ''; 2436 document.body.scrollTop = offset * -1; 2437 } 2438 }; 2439 2440 /* istanbul ignore file */ 2441 2442 var isIE11 = function isIE11() { 2443 return !!window.MSInputMethodContext && !!document.documentMode; 2444 }; // Fix IE11 centering sweetalert2/issues/933 2445 2446 2447 var fixVerticalPositionIE = function fixVerticalPositionIE() { 2448 var container = getContainer(); 2449 var popup = getPopup(); 2450 container.style.removeProperty('align-items'); 2451 2452 if (popup.offsetTop < 0) { 2453 container.style.alignItems = 'flex-start'; 2454 } 2455 }; 2456 2457 var IEfix = function IEfix() { 2458 if (typeof window !== 'undefined' && isIE11()) { 2459 fixVerticalPositionIE(); 2460 window.addEventListener('resize', fixVerticalPositionIE); 2461 } 2462 }; 2463 var undoIEfix = function undoIEfix() { 2464 if (typeof window !== 'undefined' && isIE11()) { 2465 window.removeEventListener('resize', fixVerticalPositionIE); 2466 } 2467 }; 2468 2469 // Adding aria-hidden="true" to elements outside of the active modal dialog ensures that 2470 // elements not within the active modal dialog will not be surfaced if a user opens a screen 2471 // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. 2472 2473 var setAriaHidden = function setAriaHidden() { 2474 var bodyChildren = toArray(document.body.children); 2475 bodyChildren.forEach(function (el) { 2476 if (el === getContainer() || contains(el, getContainer())) { 2477 return; 2478 } 2479 2480 if (el.hasAttribute('aria-hidden')) { 2481 el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden')); 2482 } 2483 2484 el.setAttribute('aria-hidden', 'true'); 2485 }); 2486 }; 2487 var unsetAriaHidden = function unsetAriaHidden() { 2488 var bodyChildren = toArray(document.body.children); 2489 bodyChildren.forEach(function (el) { 2490 if (el.hasAttribute('data-previous-aria-hidden')) { 2491 el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden')); 2492 el.removeAttribute('data-previous-aria-hidden'); 2493 } else { 2494 el.removeAttribute('aria-hidden'); 2495 } 2496 }); 2497 }; 2498 2499 /** 2500 * This module containts `WeakMap`s for each effectively-"private property" that a `Swal` has. 2501 * For example, to set the private property "foo" of `this` to "bar", you can `privateProps.foo.set(this, 'bar')` 2502 * This is the approach that Babel will probably take to implement private methods/fields 2503 * https://github.com/tc39/proposal-private-methods 2504 * https://github.com/babel/babel/pull/7555 2505 * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module* 2506 * then we can use that language feature. 2507 */ 2508 var privateMethods = { 2509 swalPromiseResolve: new WeakMap() 2510 }; 2511 2512 /* 2513 * Instance method to close sweetAlert 2514 */ 2515
2516 function removePopupAndResetState(instance, container, isToast$$1, onAfterClose) { 2517 if (isToast$$1) { 2518 triggerOnAfterCloseAndDispose(instance, onAfterClose); 2519 } else { 2520 restoreActiveElement().then(function () { 2521 return triggerOnAfterCloseAndDispose(instance, onAfterClose); 2522 }); 2523 globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { 2524 capture: globalState.keydownListenerCapture 2525 }); 2526 globalState.keydownHandlerAdded = false; 2527 } 2528 2529 if (container.parentNode && !document.body.getAttribute('data-swal2-queue-step')) { 2530 container.parentNode.removeChild(container); 2531 } 2532 2533 if (isModal()) { 2534 undoScrollbar(); 2535 undoIOSfix(); 2536 undoIEfix(); 2537 unsetAriaHidden(); 2538 } 2539 2540 removeBodyClasses(); 2541 } 2542 2543 function removeBodyClasses() { 2544 removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['toast-column']]); 2545 } 2546 2547 function close(resolveValue) { 2548 var popup = getPopup(); 2549 2550 if (!popup) { 2551 return; 2552 } 2553 2554 var innerParams = privateProps.innerParams.get(this); 2555 2556 if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { 2557 return; 2558 } 2559 2560 var swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); 2561 removeClass(popup, innerParams.showClass.popup); 2562 addClass(popup, innerParams.hideClass.popup); 2563 var backdrop = getContainer(); 2564 removeClass(backdrop, innerParams.showClass.backdrop); 2565 addClass(backdrop, innerParams.hideClass.backdrop); 2566 handlePopupAnimation(this, popup, innerParams); 2567 2568 if (typeof resolveValue !== 'undefined') { 2569 resolveValue.isDismissed = typeof resolveValue.dismiss !== 'undefined'; 2570 resolveValue.isConfirmed = typeof resolveValue.dismiss === 'undefined'; 2571 } else { 2572 resolveValue = { 2573 isDismissed: true, 2574 isConfirmed: false 2575 }; 2576 } // Resolve Swal promise 2577 2578 2579 swalPromiseResolve(resolveValue || {}); 2580 } 2581 2582 var handlePopupAnimation = function handlePopupAnimation(instance, popup, innerParams) { 2583 var container = getContainer(); // If animation is supported, animate 2584 2585 var animationIsSupported = animationEndEvent && hasCssAnimation(popup); 2586 var onClose = innerParams.onClose, 2587 onAfterClose = innerParams.onAfterClose; 2588 2589 if (onClose !== null && typeof onClose === 'function') { 2590 onClose(popup); 2591 } 2592 2593 if (animationIsSupported) { 2594 animatePopup(instance, popup, container, onAfterClose); 2595 } else { 2596 // Otherwise, remove immediately 2597 removePopupAndResetState(instance, container, isToast(), onAfterClose); 2598 } 2599 }; 2600 2601 var animatePopup = function animatePopup(instance, popup, container, onAfterClose) { 2602 globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, isToast(), onAfterClose); 2603 popup.addEventListener(animationEndEvent, function (e) { 2604 if (e.target === popup) { 2605 globalState.swalCloseEventFinishedCallback(); 2606 delete globalState.swalCloseEventFinishedCallback; 2607 } 2608 }); 2609 }; 2610 2611 var triggerOnAfterCloseAndDispose = function triggerOnAfterCloseAndDispose(instance, onAfterClose) { 2612 setTimeout(function () { 2613 if (typeof onAfterClose === 'function') { 2614 onAfterClose(); 2615 } 2616 2617 instance._destroy(); 2618 }); 2619 }; 2620 2621 function setButtonsDisabled(instance, buttons, disabled) { 2622 var domCache = privateProps.domCache.get(instance); 2623 buttons.forEach(function (button) { 2624 domCache[button].disabled = disabled; 2625 }); 2626 } 2627 2628 function setInputDisabled(input, disabled) { 2629 if (!input) { 2630 return false; 2631 } 2632 2633 if (input.type === 'radio') { 2634 var radiosContainer = input.parentNode.parentNode; 2635 var radios = radiosContainer.querySelectorAll('input'); 2636 2637 for (var i = 0; i < radios.length; i++) { 2638 radios[i].disabled = disabled; 2639 } 2640 } else { 2641 input.disabled = disabled; 2642 } 2643 } 2644 2645 function enableButtons() { 2646 setButtonsDisabled(this, ['confirmButton', 'cancelButton'], false); 2647 } 2648 function disableButtons() { 2649 setButtonsDisabled(this, ['confirmButton', 'cancelButton'], true); 2650 } 2651 function enableInput() { 2652 return setInputDisabled(this.getInput(), false); 2653 } 2654 function disableInput() { 2655 return setInputDisabled(this.getInput(), true); 2656 } 2657 2658 function showValidationMessage(error) { 2659 var domCache = privateProps.domCache.get(this); 2660 setInnerHtml(domCache.validationMessage, error); 2661 var popupComputedStyle = window.getComputedStyle(domCache.popup); 2662 domCache.validationMessage.style.marginLeft = "-".concat(popupComputedStyle.getPropertyValue('padding-left')); 2663 domCache.validationMessage.style.marginRight = "-".concat(popupComputedStyle.getPropertyValue('padding-right')); 2664 show(domCache.validationMessage); 2665 var input = this.getInput(); 2666 2667 if (input) { 2668 input.setAttribute('aria-invalid', true); 2669 input.setAttribute('aria-describedBy', swalClasses['validation-message']); 2670 focusInput(input); 2671 addClass(input, swalClasses.inputerror); 2672 } 2673 } // Hide block with validation message 2674 2675 function resetValidationMessage$1() { 2676 var domCache = privateProps.domCache.get(this); 2677 2678 if (domCache.validationMessage) { 2679 hide(domCache.validationMessage); 2680 } 2681 2682 var input = this.getInput(); 2683 2684 if (input) { 2685 input.removeAttribute('aria-invalid'); 2686 input.removeAttribute('aria-describedBy'); 2687 removeClass(input, swalClasses.inputerror); 2688 } 2689 } 2690 2691 function getProgressSteps$1() { 2692 var domCache = privateProps.domCache.get(this); 2693 return domCache.progressSteps; 2694 } 2695 2696 var Timer = /*#__PURE__*/function () { 2697 function Timer(callback, delay) { 2698 _classCallCheck(this, Timer); 2699 2700 this.callback = callback; 2701 this.remaining = delay; 2702 this.running = false;
2703 this.start(); 2704 } 2705 2706 _createClass(Timer, [{ 2707 key: "start", 2708 value: function start() { 2709 if (!this.running) { 2710 this.running = true; 2711 this.started = new Date(); 2712 this.id = setTimeout(this.callback, this.remaining); 2713 } 2714 2715 return this.remaining; 2716 } 2717 }, { 2718 key: "stop", 2719 value: function stop() { 2720 if (this.running) { 2721 this.running = false; 2722 clearTimeout(this.id); 2723 this.remaining -= new Date() - this.started; 2724 } 2725 2726 return this.remaining; 2727 } 2728 }, { 2729 key: "increase", 2730 value: function increase(n) { 2731 var running = this.running; 2732 2733 if (running) { 2734 this.stop(); 2735 } 2736 2737 this.remaining += n; 2738 2739 if (running) { 2740 this.start(); 2741 } 2742 2743 return this.remaining; 2744 } 2745 }, { 2746 key: "getTimerLeft", 2747 value: function getTimerLeft() { 2748 if (this.running) { 2749 this.stop(); 2750 this.start(); 2751 } 2752 2753 return this.remaining; 2754 } 2755 }, { 2756 key: "isRunning", 2757 value: function isRunning() { 2758 return this.running; 2759 } 2760 }]); 2761 2762 return Timer; 2763 }(); 2764 2765 var defaultInputValidators = { 2766 email: function email(string, validationMessage) { 2767 return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); 2768 }, 2769 url: function url(string, validationMessage) { 2770 // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 2771 return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); 2772 } 2773 }; 2774 2775 function setDefaultInputValidators(params) { 2776 // Use default `inputValidator` for supported input types if not provided 2777 if (!params.inputValidator) { 2778 Object.keys(defaultInputValidators).forEach(function (key) { 2779 if (params.input === key) { 2780 params.inputValidator = defaultInputValidators[key]; 2781 } 2782 }); 2783 } 2784 } 2785 2786 function validateCustomTargetElement(params) { 2787 // Determine if the custom target element is valid 2788 if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) { 2789 warn('Target parameter is not valid, defaulting to "body"'); 2790 params.target = 'body'; 2791 } 2792 } 2793 /** 2794 * Set type, text and actions on popup 2795 * 2796 * @param params 2797 * @returns {boolean} 2798 */ 2799 2800 2801 function setParameters(params) { 2802 setDefaultInputValidators(params); // showLoaderOnConfirm && preConfirm 2803 2804 if (params.showLoaderOnConfirm && !params.preConfirm) { 2805 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'); 2806 } // params.animation will be actually used in renderPopup.js 2807 // but in case when params.animation is a function, we need to call that function 2808 // before popup (re)initialization, so it'll be possible to check Swal.isVisible() 2809 // inside the params.animation function 2810 2811 2812 params.animation = callIfFunction(params.animation); 2813 validateCustomTargetElement(params); // Replace newlines with <br> in title 2814 2815 if (typeof params.title === 'string') { 2816 params.title = params.title.split('\n').join('<br />'); 2817 } 2818 2819 init(params); 2820 } 2821 2822 /** 2823 * Open popup, add necessary classes and styles, fix scrollbar 2824 * 2825 * @param {Array} params 2826 */ 2827 2828 var openPopup = function openPopup(params) { 2829 var container = getContainer(); 2830 var popup = getPopup(); 2831 2832 if (typeof params.onBeforeOpen === 'function') { 2833 params.onBeforeOpen(popup); 2834 } 2835 2836 var bodyStyles = window.getComputedStyle(document.body); 2837 var initialBodyOverflow = bodyStyles.overflowY; 2838 addClasses$1(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' 2839 2840 setScrollingVisibility(container, popup); 2841 2842 if (isModal()) { 2843 fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow); 2844 setAriaHidden(); 2845 } 2846 2847 if (!isToast() && !globalState.previousActiveElement) { 2848 globalState.previousActiveElement = document.activeElement; 2849 } 2850 2851 if (typeof params.onOpen === 'function') { 2852 setTimeout(function () { 2853 return params.onOpen(popup); 2854 }); 2855 } 2856 2857 removeClass(container, swalClasses['no-transition']); 2858 }; 2859 2860 function swalOpenAnimationFinished(event) { 2861 var popup = getPopup(); 2862 2863 if (event.target !== popup) { 2864 return; 2865 } 2866 2867 var container = getContainer(); 2868 popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); 2869 container.style.overflowY = 'auto'; 2870 } 2871 2872 var setScrollingVisibility = function setScrollingVisibility(container, popup) { 2873 if (animationEndEvent && hasCssAnimation(popup)) { 2874 container.style.overflowY = 'hidden'; 2875 popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); 2876 } else { 2877 container.style.overflowY = 'auto'; 2878 } 2879 }; 2880 2881 var fixScrollContainer = function fixScrollContainer(container, scrollbarPadding, initialBodyOverflow) { 2882 iOSfix(); 2883 IEfix(); 2884 2885 if (scrollbarPadding && initialBodyOverflow !== 'hidden') { 2886 fixScrollbar(); 2887 } // sweetalert2/issues/1247 2888 2889 2890 setTimeout(function () { 2891 container.scrollTop = 0; 2892 }); 2893 }; 2894 2895 var addClasses$1 = function addClasses(container, popup, params) { 2896 addClass(container, params.showClass.backdrop); 2897 show(popup); // Animate popup right after showing it 2898 2899 addClass(popup, params.showClass.popup); 2900 addClass([document.documentElement, document.body], swalClasses.shown); 2901 2902 if (params.heightAuto && params.backdrop && !params.toast) { 2903 addClass([document.documentElement, document.body], swalClasses['he
2903ight-auto']); 2904 } 2905 }; 2906 2907 var handleInputOptionsAndValue = function handleInputOptionsAndValue(instance, params) { 2908 if (params.input === 'select' || params.input === 'radio') { 2909 handleInputOptions(instance, params); 2910 } else if (['text', 'email', 'number', 'tel', 'textarea'].indexOf(params.input) !== -1 && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { 2911 handleInputValue(instance, params); 2912 } 2913 }; 2914 var getInputValue = function getInputValue(instance, innerParams) { 2915 var input = instance.getInput(); 2916 2917 if (!input) { 2918 return null; 2919 } 2920 2921 switch (innerParams.input) { 2922 case 'checkbox': 2923 return getCheckboxValue(input); 2924 2925 case 'radio': 2926 return getRadioValue(input); 2927 2928 case 'file': 2929 return getFileValue(input); 2930 2931 default: 2932 return innerParams.inputAutoTrim ? input.value.trim() : input.value; 2933 } 2934 }; 2935 2936 var getCheckboxValue = function getCheckboxValue(input) { 2937 return input.checked ? 1 : 0; 2938 }; 2939 2940 var getRadioValue = function getRadioValue(input) { 2941 return input.checked ? input.value : null; 2942 }; 2943 2944 var getFileValue = function getFileValue(input) { 2945 return input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; 2946 }; 2947 2948 var handleInputOptions = function handleInputOptions(instance, params) { 2949 var content = getContent(); 2950 2951 var processInputOptions = function processInputOptions(inputOptions) { 2952 return populateInputOptions[params.input](content, formatInputOptions(inputOptions), params); 2953 }; 2954 2955 if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { 2956 showLoading(); 2957 asPromise(params.inputOptions).then(function (inputOptions) { 2958 instance.hideLoading(); 2959 processInputOptions(inputOptions); 2960 }); 2961 } else if (_typeof(params.inputOptions) === 'object') { 2962 processInputOptions(params.inputOptions); 2963 } else { 2964 error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(_typeof(params.inputOptions))); 2965 } 2966 }; 2967 2968 var handleInputValue = function handleInputValue(instance, params) { 2969 var input = instance.getInput(); 2970 hide(input); 2971 asPromise(params.inputValue).then(function (inputValue) { 2972 input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : "".concat(inputValue); 2973 show(input); 2974 input.focus(); 2975 instance.hideLoading(); 2976 })["catch"](function (err) { 2977 error("Error in inputValue promise: ".concat(err)); 2978 input.value = ''; 2979 show(input); 2980 input.focus(); 2981 instance.hideLoading(); 2982 }); 2983 }; 2984 2985 var populateInputOptions = { 2986 select: function select(content, inputOptions, params) { 2987 var select = getChildByClass(content, swalClasses.select); 2988 2989 var renderOption = function renderOption(parent, optionLabel, optionValue) { 2990 var option = document.createElement('option'); 2991 option.value = optionValue; 2992 setInnerHtml(option, optionLabel); 2993 2994 if (params.inputValue.toString() === optionValue.toString()) { 2995 option.selected = true; 2996 } 2997 2998 parent.appendChild(option); 2999 }; 3000 3001 inputOptions.forEach(function (inputOption) { 3002 var optionValue = inputOption[0]; 3003 var optionLabel = inputOption[1]; // <optgroup> spec: 3004 // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 3005 // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." 3006 // check whether this is a <optgroup> 3007 3008 if (Array.isArray(optionLabel)) { 3009 // if it is an array, then it is an <optgroup> 3010 var optgroup = document.createElement('optgroup'); 3011 optgroup.label = optionValue; 3012 optgroup.disabled = false; // not configurable for now 3013 3014 select.appendChild(optgroup); 3015 optionLabel.forEach(function (o) { 3016 return renderOption(optgroup, o[1], o[0]); 3017 }); 3018 } else { 3019 // case of <option> 3020 renderOption(select, optionLabel, optionValue); 3021 } 3022 }); 3023 select.focus(); 3024 }, 3025 radio: function radio(content, inputOptions, params) { 3026 var radio = getChildByClass(content, swalClasses.radio); 3027 inputOptions.forEach(function (inputOption) { 3028 var radioValue = inputOption[0]; 3029 var radioLabel = inputOption[1]; 3030 var radioInput = document.createElement('input'); 3031 var radioLabelElement = document.createElement('label'); 3032 radioInput.type = 'radio'; 3033 radioInput.name = swalClasses.radio; 3034 radioInput.value = radioValue; 3035 3036 if (params.inputValue.toString() === radioValue.toString()) { 3037 radioInput.checked = true; 3038 } 3039 3040 var label = document.createElement('span'); 3041 setInnerHtml(label, radioLabel); 3042 label.className = swalClasses.label; 3043 radioLabelElement.appendChild(radioInput); 3044 radioLabelElement.appendChild(label); 3045 radio.appendChild(radioLabelElement); 3046 }); 3047 var radios = radio.querySelectorAll('input'); 3048 3049 if (radios.length) { 3050 radios[0].focus(); 3051 } 3052 } 3053 }; 3054 /** 3055 * Converts `inputOptions` into an array of `[value, label]`s 3056 * @param inputOptions 3057 */ 3058 3059 var formatInputOptions = function formatInputOptions(inputOptions) { 3060 var result = []; 3061 3062 if (typeof Map !== 'undefined' && inputOptions instanceof Map) { 3063 inputOptions.forEach(function (value, key) { 3064 var valueFormatted = value; 3065 3066 if (_typeof(valueFormatted) === 'object') { 3067 // case of <optgroup> 3068 valueFormatted = formatInputOptions(valueFormatted); 3069 } 3070 3071 result.push([key, valueFormatted]); 3072 }); 3073 } else {
3074 Object.keys(inputOptions).forEach(function (key) { 3075 var valueFormatted = inputOptions[key]; 3076 3077 if (_typeof(valueFormatted) === 'object') { 3078 // case of <optgroup> 3079 valueFormatted = formatInputOptions(valueFormatted); 3080 } 3081 3082 result.push([key, valueFormatted]); 3083 }); 3084 } 3085 3086 return result; 3087 }; 3088 3089 var handleConfirmButtonClick = function handleConfirmButtonClick(instance, innerParams) { 3090 instance.disableButtons(); 3091 3092 if (innerParams.input) { 3093 handleConfirmWithInput(instance, innerParams); 3094 } else { 3095 confirm(instance, innerParams, true); 3096 } 3097 }; 3098 var handleCancelButtonClick = function handleCancelButtonClick(instance, dismissWith) { 3099 instance.disableButtons(); 3100 dismissWith(DismissReason.cancel); 3101 }; 3102 3103 var handleConfirmWithInput = function handleConfirmWithInput(instance, innerParams) { 3104 var inputValue = getInputValue(instance, innerParams); 3105 3106 if (innerParams.inputValidator) { 3107 instance.disableInput(); 3108 var validationPromise = Promise.resolve().then(function () { 3109 return asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)); 3110 }); 3111 validationPromise.then(function (validationMessage) { 3112 instance.enableButtons(); 3113 instance.enableInput(); 3114 3115 if (validationMessage) { 3116 instance.showValidationMessage(validationMessage); 3117 } else { 3118 confirm(instance, innerParams, inputValue); 3119 } 3120 }); 3121 } else if (!instance.getInput().checkValidity()) { 3122 instance.enableButtons(); 3123 instance.showValidationMessage(innerParams.validationMessage); 3124 } else { 3125 confirm(instance, innerParams, inputValue); 3126 } 3127 }; 3128 3129 var succeedWith = function succeedWith(instance, value) { 3130 instance.closePopup({ 3131 value: value 3132 }); 3133 }; 3134 3135 var confirm = function confirm(instance, innerParams, value) { 3136 if (innerParams.showLoaderOnConfirm) { 3137 showLoading(); // TODO: make showLoading an *instance* method 3138 } 3139 3140 if (innerParams.preConfirm) { 3141 instance.resetValidationMessage(); 3142 var preConfirmPromise = Promise.resolve().then(function () { 3143 return asPromise(innerParams.preConfirm(value, innerParams.validationMessage)); 3144 }); 3145 preConfirmPromise.then(function (preConfirmValue) { 3146 if (isVisible(getValidationMessage()) || preConfirmValue === false) { 3147 instance.hideLoading(); 3148 } else { 3149 succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); 3150 } 3151 }); 3152 } else { 3153 succeedWith(instance, value); 3154 } 3155 }; 3156 3157 var addKeydownHandler = function addKeydownHandler(instance, globalState, innerParams, dismissWith) { 3158 if (globalState.keydownTarget && globalState.keydownHandlerAdded) { 3159 globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { 3160 capture: globalState.keydownListenerCapture 3161 }); 3162 globalState.keydownHandlerAdded = false; 3163 } 3164 3165 if (!innerParams.toast) { 3166 globalState.keydownHandler = function (e) { 3167 return keydownHandler(instance, e, dismissWith); 3168 }; 3169 3170 globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); 3171 globalState.keydownListenerCapture = innerParams.keydownListenerCapture; 3172 globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { 3173 capture: globalState.keydownListenerCapture 3174 }); 3175 globalState.keydownHandlerAdded = true; 3176 } 3177 }; // Focus handling 3178 3179 var setFocus = function setFocus(innerParams, index, increment) { 3180 var focusableElements = getFocusableElements(); // search for visible elements and select the next possible match 3181 3182 for (var i = 0; i < focusableElements.length; i++) { 3183 index = index + increment; // rollover to first item 3184 3185 if (index === focusableElements.length) { 3186 index = 0; // go to last item 3187 } else if (index === -1) { 3188 index = focusableElements.length - 1; 3189 } 3190 3191 return focusableElements[index].focus(); 3192 } // no visible focusable elements, focus the popup 3193 3194 3195 getPopup().focus(); 3196 }; 3197 var arrowKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Left', 'Right', 'Up', 'Down' // IE11 3198 ]; 3199 var escKeys = ['Escape', 'Esc' // IE11 3200 ]; 3201
3202 var keydownHandler = function keydownHandler(instance, e, dismissWith) { 3203 var innerParams = privateProps.innerParams.get(instance); 3204 3205 if (innerParams.stopKeydownPropagation) { 3206 e.stopPropagation(); 3207 } // ENTER 3208 3209 3210 if (e.key === 'Enter') { 3211 handleEnter(instance, e, innerParams); // TAB 3212 } else if (e.key === 'Tab') { 3213 handleTab(e, innerParams); // ARROWS - switch focus between buttons 3214 } else if (arrowKeys.indexOf(e.key) !== -1) { 3215 handleArrows(); // ESC 3216 } else if (escKeys.indexOf(e.key) !== -1) { 3217 handleEsc(e, innerParams, dismissWith); 3218 } 3219 }; 3220 3221 var handleEnter = function handleEnter(instance, e, innerParams) { 3222 // #720 #721 3223 if (e.isComposing) { 3224 return; 3225 } 3226 3227 if (e.target && instance.getInput() && e.target.outerHTML === instance.getInput().outerHTML) { 3228 if (['textarea', 'file'].indexOf(innerParams.input) !== -1) { 3229 return; // do not submit 3230 } 3231 3232 clickConfirm(); 3233 e.preventDefault(); 3234 } 3235 }; 3236 3237 var handleTab = function handleTab(e, innerParams) { 3238 var targetElement = e.target; 3239 var focusableElements = getFocusableElements(); 3240 var btnIndex = -1; 3241 3242 for (var i = 0; i < focusableElements.length; i++) { 3243 if (targetElement === focusableElements[i]) { 3244 btnIndex = i; 3245 break; 3246 } 3247 } 3248 3249 if (!e.shiftKey) { 3250 // Cycle to the next button 3251 setFocus(innerParams, btnIndex, 1); 3252 } else { 3253 // Cycle to the prev button 3254 setFocus(innerParams, btnIndex, -1); 3255 } 3256 3257 e.stopPropagation(); 3258 e.preventDefault(); 3259 }; 3260 3261 var handleArrows = function handleArrows() { 3262 var confirmButton = getConfirmButton(); 3263 var cancelButton = getCancelButton(); // focus Cancel button if Confirm button is currently focused 3264 3265 if (document.activeElement === confirmButton && isVisible(cancelButton)) { 3266 cancelButton.focus(); // and vice versa 3267 } else if (document.activeElement === cancelButton && isVisible(confirmButton)) { 3268 confirmButton.focus(); 3269 } 3270 }; 3271 3272 var handleEsc = function handleEsc(e, innerParams, dismissWith) { 3273 if (callIfFunction(innerParams.allowEscapeKey)) { 3274 e.preventDefault();
3275 dismissWith(DismissReason.esc); 3276 } 3277 }; 3278 3279 var handlePopupClick = function handlePopupClick(instance, domCache, dismissWith) { 3280 var innerParams = privateProps.innerParams.get(instance); 3281 3282 if (innerParams.toast) { 3283 handleToastClick(instance, domCache, dismissWith); 3284 } else { 3285 // Ignore click events that had mousedown on the popup but mouseup on the container 3286 // This can happen when the user drags a slider 3287 handleModalMousedown(domCache); // Ignore click events that had mousedown on the container but mouseup on the popup 3288 3289 handleContainerMousedown(domCache); 3290 handleModalClick(instance, domCache, dismissWith); 3291 } 3292 }; 3293 3294 var handleToastClick = function handleToastClick(instance, domCache, dismissWith) { 3295 // Closing toast by internal click 3296 domCache.popup.onclick = function () { 3297 var innerParams = privateProps.innerParams.get(instance); 3298 3299 if (innerParams.showConfirmButton || innerParams.showCancelButton || innerParams.showCloseButton || innerParams.input) { 3300 return; 3301 } 3302 3303 dismissWith(DismissReason.close); 3304 }; 3305 }; 3306 3307 var ignoreOutsideClick = false; 3308 3309 var handleModalMousedown = function handleModalMousedown(domCache) { 3310 domCache.popup.onmousedown = function () { 3311 domCache.container.onmouseup = function (e) { 3312 domCache.container.onmouseup = undefined; // We only check if the mouseup target is the container because usually it doesn't 3313 // have any other direct children aside of the popup 3314 3315 if (e.target === domCache.container) { 3316 ignoreOutsideClick = true; 3317 } 3318 }; 3319 }; 3320 }; 3321 3322 var handleContainerMousedown = function handleContainerMousedown(domCache) { 3323 domCache.container.onmousedown = function () { 3324 domCache.popup.onmouseup = function (e) { 3325 domCache.popup.onmouseup = undefined; // We also need to check if the mouseup target is a child of the popup 3326 3327 if (e.target === domCache.popup || domCache.popup.contains(e.target)) { 3328 ignoreOutsideClick = true; 3329 } 3330 }; 3331 }; 3332 }; 3333 3334 var handleModalClick = function handleModalClick(instance, domCache, dismissWith) { 3335 domCache.container.onclick = function (e) { 3336 var innerParams = privateProps.innerParams.get(instance); 3337 3338 if (ignoreOutsideClick) { 3339 ignoreOutsideClick = false; 3340 return; 3341 } 3342 3343 if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) { 3344 dismissWith(DismissReason.backdrop); 3345 } 3346 }; 3347 }; 3348 3349 function _main(userParams) { 3350 showWarningsForParams(userParams); 3351 3352 if (globalState.currentInstance) { 3353 globalState.currentInstance._destroy(); 3354 } 3355 3356 globalState.currentInstance = this; 3357 var innerParams = prepareParams(userParams); 3358 setParameters(innerParams); 3359 Object.freeze(innerParams); // clear the previous timer 3360 3361 if (globalState.timeout) { 3362 globalState.timeout.stop(); 3363 delete globalState.timeout; 3364 } // clear the restore focus timeout 3365 3366 3367 clearTimeout(globalState.restoreFocusTimeout); 3368 var domCache = populateDomCache(this); 3369 render(this, innerParams); 3370 privateProps.innerParams.set(this, innerParams); 3371 return swalPromise(this, domCache, innerParams); 3372 } 3373 3374 var prepareParams = function prepareParams(userParams) { 3375 var showClass = _extends({}, defaultParams.showClass, userParams.showClass); 3376 3377 var hideClass = _extends({}, defaultParams.hideClass, userParams.hideClass); 3378 3379 var params = _extends({}, defaultParams, userParams); 3380 3381 params.showClass = showClass; 3382 params.hideClass = hideClass; // @deprecated 3383 3384 if (userParams.animation === false) { 3385 params.showClass = { 3386 popup: 'swal2-noanimation', 3387 backdrop: 'swal2-noanimation' 3388 }; 3389 params.hideClass = {}; 3390 } 3391 3392 return params; 3393 }; 3394 3395 var swalPromise = function swalPromise(instance, domCache, innerParams) { 3396 return new Promise(function (resolve) { 3397 // functions to handle all closings/dismissals 3398 var dismissWith = function dismissWith(dismiss) { 3399 instance.closePopup({
3400 dismiss: dismiss 3401 }); 3402 }; 3403 3404 privateMethods.swalPromiseResolve.set(instance, resolve); 3405 3406 domCache.confirmButton.onclick = function () { 3407 return handleConfirmButtonClick(instance, innerParams); 3408 }; 3409 3410 domCache.cancelButton.onclick = function () { 3411 return handleCancelButtonClick(instance, dismissWith); 3412 }; 3413 3414 domCache.closeButton.onclick = function () { 3415 return dismissWith(DismissReason.close); 3416 }; 3417 3418 handlePopupClick(instance, domCache, dismissWith); 3419 addKeydownHandler(instance, globalState, innerParams, dismissWith); 3420 3421 if (innerParams.toast && (innerParams.input || innerParams.footer || innerParams.showCloseButton)) { 3422 addClass(document.body, swalClasses['toast-column']); 3423 } else { 3424 removeClass(document.body, swalClasses['toast-column']); 3425 } 3426 3427 handleInputOptionsAndValue(instance, innerParams); 3428 openPopup(innerParams); 3429 setupTimer(globalState, innerParams, dismissWith); 3430 initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) 3431 3432 setTimeout(function () { 3433 domCache.container.scrollTop = 0; 3434 }); 3435 }); 3436 }; 3437 3438 var populateDomCache = function populateDomCache(instance) { 3439 var domCache = { 3440 popup: getPopup(), 3441 container: getContainer(), 3442 content: getContent(), 3443 actions: getActions(), 3444 confirmButton: getConfirmButton(), 3445 cancelButton: getCancelButton(), 3446 closeButton: getCloseButton(), 3447 validationMessage: getValidationMessage(), 3448 progressSteps: getProgressSteps() 3449 }; 3450 privateProps.domCache.set(instance, domCache); 3451 return domCache; 3452 }; 3453 3454 var setupTimer = function setupTimer(globalState$$1, innerParams, dismissWith) { 3455 var timerProgressBar = getTimerProgressBar(); 3456 hide(timerProgressBar); 3457 3458 if (innerParams.timer) { 3459 globalState$$1.timeout = new Timer(function () { 3460 dismissWith('timer'); 3461 delete globalState$$1.timeout; 3462 }, innerParams.timer); 3463 3464 if (innerParams.timerProgressBar) { 3465 show(timerProgressBar); 3466 setTimeout(function () { 3467 if (globalState$$1.timeout.running) { 3468 // timer can be already stopped at this point 3469 animateTimerProgressBar(innerParams.timer); 3470 } 3471 }); 3472 } 3473 } 3474 }; 3475 3476 var initFocus = function initFocus(domCache, innerParams) { 3477 if (innerParams.toast) { 3478 return; 3479 } 3480 3481 if (!callIfFunction(innerParams.allowEnterKey)) { 3482 return blurActiveElement(); 3483 } 3484 3485 if (innerParams.focusCancel && isVisible(domCache.cancelButton)) { 3486 return domCache.cancelButton.focus(); 3487 } 3488 3489 if (innerParams.focusConfirm && isVisible(domCache.confirmButton)) { 3490 return domCache.confirmButton.focus(); 3491 } 3492 3493 setFocus(innerParams, -1, 1); 3494 }; 3495 3496 var blurActiveElement = function blurActiveElement() { 3497 if (document.activeElement && typeof document.activeElement.blur === 'function') { 3498 document.activeElement.blur(); 3499 } 3500 }; 3501 3502 /** 3503 * Updates popup parameters. 3504 */ 3505 3506 function update(params) { 3507 var popup = getPopup(); 3508 var innerParams = privateProps.innerParams.get(this); 3509 3510 if (!popup || hasClass(popup, innerParams.hideClass.popup)) { 3511 return warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); 3512 } 3513 3514 var validUpdatableParams = {}; // assign valid params from `params` to `defaults` 3515 3516 Object.keys(params).forEach(function (param) { 3517 if (Swal.isUpdatableParameter(param)) { 3518 validUpdatableParams[param] = params[param]; 3519 } else { 3520 warn("Invalid parameter to update: \"".concat(param, "\". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js")); 3521 } 3522 }); 3523 3524 var updatedParams = _extends({}, innerParams, validUpdatableParams); 3525 3526 render(this, updatedParams); 3527 privateProps.innerParams.set(this, updatedParams); 3528 Object.defineProperties(this, { 3529 params: { 3530 value: _extends({}, this.params, params), 3531 writable: false, 3532 enumerable: true 3533 } 3534 }); 3535 } 3536 3537 function _destroy() { 3538 var domCache = privateProps.domCache.get(this); 3539 var innerParams = privateProps.innerParams.get(this); 3540 3541 if (!innerParams) { 3542 return; // This instance has already been destroyed 3543 } // Check if there is another Swal closing 3544 3545 3546 if (domCache.popup && globalState.swalCloseEventFinishedCallback) { 3547 globalState.swalCloseEventFinishedCallback(); 3548 delete globalState.swalCloseEventFinishedCallback; 3549 } // Check if there is a swal disposal defer timer 3550 3551 3552 if (globalState.deferDisposalTimer) { 3553 clearTimeout(globalState.deferDisposalTimer); 3554 delete globalState.deferDisposalTimer; 3555 } 3556 3557 if (typeof innerParams.onDestroy === 'function') { 3558 innerParams.onDestroy(); 3559 } 3560 3561 disposeSwal(this); 3562 } 3563 3564 var disposeSwal = function disposeSwal(instance) { 3565 // Unset this.params so GC will dispose it (#1569) 3566 delete instance.params; // Unset globalState props so GC will dispose globalState (#1569) 3567 3568 delete globalState.keydownHandler; 3569 delete globalState.keydownTarget; // Unset WeakMaps so GC will be able to dispose them (#1569) 3570 3571 unsetWeakMaps(privateProps); 3572 unsetWeakMaps(privateMethods); 3573 }; 3574 3575 var unsetWeakMaps = function unsetWeakMaps(obj) { 3576 for (var i in obj) { 3577 obj[i] = new WeakMap(); 3578 } 3579 }; 3580 3581 3582 3583 var instanceMethods = /*#__PURE__*/Object.freeze({ 3584 hideLoading: hideLoading, 3585 disableLoading: hideLoading, 3586 getInput: getInput$1, 3587 close: close, 3588 closePopup: close, 3589 closeModal: close, 3590 closeToast: close, 3591 enableButtons: enableButtons, 3592 disableButtons: disableButtons, 3593 enableInput: enableInput, 3594 disableInput: disableInput, 3595 showValidationMessage: showValidationMessage, 3596 resetValidationMessage: resetValidationMessage$1, 3597 getProgressSteps: getProgressSteps$1, 3598 _main: _main, 3599 update: update, 3600 _destroy: _destroy 3601 }); 3602 3603 var currentInstance; 3604 3605 var SweetAlert = /*#__PURE__*/function () { 3606 function SweetAlert() { 3607 _classCallCheck(this, SweetAlert); 3608 3609 // Prevent run in Node env 3610 if (typeof window === 'undefined') { 3611 return; 3612 } // Check for the existence of Promise 3613 3614 3615 if (typeof Promise === 'undefined') { 3616 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)'); 3617 } 3618 3619 currentInstance = this; 3620 3621 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 3622 args[_key] = arguments[_key]; 3623 } 3624 3625 var outerParams = Object.freeze(this.constructor.argsToParams(args)); 3626 Object.defineProperties(this, { 3627 params: { 3628 value: outerParams, 3629 writable: false, 3630 enumerable: true, 3631 configurable: true 3632 } 3633 }); 3634 3635 var promise = this._main(this.params); 3636 3637 privateProps.promise.set(this, promise); 3638 } // `catch` cannot be the name of a module export, so we define our thenable methods here instead 3639 3640 3641 _createClass(SweetAlert, [{ 3642 key: "then", 3643 value: function then(onFulfilled) { 3644 var promise = privateProps.promise.get(this); 3645 return promise.then(onFulfilled); 3646 } 3647 }, {
3648 key: "finally", 3649 value: function _finally(onFinally) { 3650 var promise = privateProps.promise.get(this); 3651 return promise["finally"](onFinally); 3652 } 3653 }]); 3654 3655 return SweetAlert; 3656 }(); // Assign instance methods from src/instanceMethods/*.js to prototype 3657 3658 3659 _extends(SweetAlert.prototype, instanceMethods); // Assign static methods from src/staticMethods/*.js to constructor 3660 3661 3662 _extends(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility 3663 3664 3665 Object.keys(instanceMethods).forEach(function (key) { 3666 SweetAlert[key] = function () { 3667 if (currentInstance) { 3668 var _currentInstance; 3669 3670 return (_currentInstance = currentInstance)[key].apply(_currentInstance, arguments); 3671 } 3672 }; 3673 }); 3674 SweetAlert.DismissReason = DismissReason; 3675 SweetAlert.version = '9.17.2'; 3676 3677 var Swal = SweetAlert; 3678 Swal["default"] = Swal; 3679 3680 return Swal; 3681 3682})); 3683if (typeof this !== 'undefined' && this.Sweetalert2){ this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} 3684 3685"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;
3685top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.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):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:.3125em;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-actions.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;width:2.5em;height:2.5em;margin:.46875em;padding:0;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:.25em solid transparent;border-radius:100%;border-color:transparent;background-color:transparent!important;color:transparent!important;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-actions.swal2-loading .swal2-styled.swal2-cancel{margin-right:30px;margin-left:30px}.swal2-actions.swal2-loading :not(.swal2-styled).swal2-confirm::after{content:\"\";display:inline-block;width:15px;height:15px;margin-left:5px;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border:3px solid #999;border-radius:50%;border-right-color:transparent;box-shadow:1px 1px 1px #fff}.swal2-styled{margin:.3125em;padding:.625em 2em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#3085d6;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#aaa;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(50,100,150,.4)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:.3125em;border-bottom-left-radius:.3125em}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:0;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 3px #c4e6f5}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::-ms-input-placeholder,.swal2-input::-ms-input-placeholder,.swal2-textarea::-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-validation-message{display:none;align-items:center;justify-content:center;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;
3685left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{align-items:center;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;width:2em;height:2em;border-radius:2em;background:#3085d6;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#3085d6}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;width:2.5em;height:.4em;margin:0 -1px;background:#3085d6}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-moz-document url-prefix(){.swal2-close:focus{outline:2px solid rgba(50,100,150,.4)}
vendor: 4,063 bytes, line 3685
3685}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
3685body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}"); 3686},{}],4:[function(require,module,exports){ 3687!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t="undefined"!=typeof globalThis?globalThis:t||self).LazyLoad=n()}(this,(function(){"use strict";function t(){return(t=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t}).apply(this,arguments)}var n="undefined"!=typeof window,e=n&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),i=n&&"IntersectionObserver"in window,o=n&&"classList"in document.createElement("p"),r=n&&window.devicePixelRatio>1,a={elements_selector:".lazy",container:e||n?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",class_entered:"entered",class_exited:"exited",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},c=function(n){return t({},a,n)},s=function(t,n){var e,i="LazyLoad::Initialized",o=new t(n);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(t){(e=document.createEvent("CustomEvent")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)}
vendor: 4,950 bytes, line 3687
3687,l="loading",u="loaded",d="applied",f="error",_="native",g="data-",v="ll-status",b=function(t,n){return t.getAttribute(g+n)},p=function(t){return b(t,v)},h=function(t,n){return function(t,n,e){var i="data-ll-status";null!==e?t.setAttribute(i,e):t.removeAttribute(i)}(t,0,n)},m=function(t){return h(t,null)},E=function(t){return null===p(t)},y=function(t){return p(t)===_},I=[l,u,d,f],A=function(t,n,e,i){t&&(void 0===i?void 0===e?t(n):t(n,e):t(n,e,i))},L=function(t,n){o?t.classList.add(n):t.className+=(t.className?" ":"")+n},w=function(t,n){o?t.classList.remove(n):t.className=t.className.replace(new RegExp("(^|\\s+)"+n+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")},k=function(t){return t.llTempImage},O=function(t,n){if(n){var e=n._observer;e&&e.unobserve(t)}},x=function(t,n){t&&(t.loadingCount+=n)},z=function(t,n){t&&(t.toLoadCount=n)},C=function(t){for(var n,e=[],i=0;n=t.children[i];i+=1)"SOURCE"===n.tagName&&e.push(n);return e},N=function(t,n,e){e&&t.setAttribute(n,e)},M=function(t,n){t.removeAttribute(n)},R=function(t){return!!t.llOriginalAttrs},T=function(t){if(!R(t)){var n={};n.src=t.getAttribute("src"),n.srcset=t.getAttribute("srcset"),n.sizes=t.getAttribute("sizes"),t.llOriginalAttrs=n}},G=function(t){if(R(t)){var n=t.llOriginalAttrs;N(t,"src",n.src),N(t,"srcset",n.srcset),N(t,"sizes",n.sizes)}},D=function(t,n){N(t,"sizes",b(t,n.data_sizes)),N(t,"srcset",b(t,n.data_srcset)),N(t,"src",b(t,n.data_src))},V=function(t){M(t,"src"),M(t,"srcset"),M(t,"sizes")},j=function(t,n){var e=t.parentNode;e&&"PICTURE"===e.tagName&&C(e).forEach(n)},F={IMG:function(t,n){j(t,(function(t){T(t),D(t,n)})),T(t),D(t,n)},IFRAME:function(t,n){N(t,"src",b(t,n.data_src))},VIDEO:function(t,n){!function(t,e){C(t).forEach((function(t){N(t,"src",b(t,n.data_src))}))}(t),N(t,"poster",b(t,n.data_poster)),N(t,"src",b(t,n.data_src)),t.load()}},P=function(t,n){var e=F[t.tagName];e&&e(t,n)},S=function(t,n,e){x(e,1),L(t,n.class_loading),h(t,l),A(n.callback_loading,t,e)},U=["IMG","IFRAME","VIDEO"],$=function(t,n){!n||function(t){return t.loadingCount>0}(n)||function(t){return t.toLoadCount>0}(n)||A(t.callback_finish,n)},q=function(t,n,e){t.addEventListener(n,e),t.llEvLisnrs[n]=e},H=function(t,n,e){t.removeEventListener(n,e)},B=function(t){return!!t.llEvLisnrs},J=function(t){if(B(t)){var n=t.llEvLisnrs;for(var e in n){var i=n[e];H(t,e,i)}delete t.llEvLisnrs}},K=function(t,n,e){!function(t){delete t.llTempImage}(t),x(e,-1),function(t){t&&(t.toLoadCount-=1)}(e),w(t,n.class_loading),n.unobserve_completed&&O(t,e)},Q=function(t,n,e){var i=k(t)||t;B(i)||function(t,n,e){B(t)||(t.llEvLisnrs={});var i="VIDEO"===t.tagName?"loadeddata":"load";q(t,i,n),q(t,"error",e)}(i,(function(o){!function(t,n,e,i){var o=y(n);K(n,e,i),L(n,e.class_loaded),h(n,u),A(e.callback_loaded,n,i),o||$(e,i)}(0,t,n,e),J(i)}),(function(o){!function(t,n,e,i){var o=y(n);K(n,e,i),L(n,e.class_error),h(n,f),A(e.callback_error,n,i),o||$(e,i)}(0,t,n,e),J(i)}))},W=function(t,n,e){!function(t){t.llTempImage=document.createElement("IMG")}(t),Q(t,n,e),function(t,n,e){var i=b(t,n.data_bg),o=b(t,n.data_bg_hidpi),a=r&&o?o:i;a&&(t.style.backgroundImage='url("'.concat(a,'")'),k(t).setAttribute("src",a),S(t,n,e))}(t,n,e),function(t,n,e){var i=b(t,n.data_bg_multi),o=b(t,n.data_bg_multi_hidpi),a=r&&o?o:i;a&&(t.style.backgroundImage=a,function(t,n,e){L(t,n.class_applied),h(t,d),n.unobserve_completed&&O(t,n),A(n.callback_applied,t,e)}(t,n,e))}(t,n,e)},X=function(t,n,e){!function(t){return U.indexOf(t.tagName)>-1}(t)?W(t,n,e):function(t,n,e){Q(t,n,e),P(t,n),S(t,n,e)}(t,n,e)},Y=["IMG","IFRAME","VIDEO"],Z=function(t){return t.use_native&&"loading"in HTMLImageElement.prototype},tt=function(t,n,e){t.forEach((function(t){return function(t){return t.isIntersecting||t.intersectionRatio>0}(t)?function(t,n,e,i){var o=function(t){return I.indexOf(p(t))>=0}(t);h(t,"entered"),L(t,e.class_entered),w(t,e.class_exited),function(t,n,e){n.unobserve_entered&&O(t,e)}(t,e,i),A(e.callback_enter,t,n,i),o||X(t,e,i)}(t.target,t,n,e):function(t,n,e,i){E(t)||(L(t,e.class_exited),function(t,n,e,i){e.cancel_on_exit&&function(t){return p(t)===l}(t)&&"IMG"===t.tagName&&(J(t),function(t){j(t,(function(t){V(t)})),V(t)}(t),function(t){j(t,(function(t){G(t)})),G(t)}(t),w(t,e.class_loading),x(i,-1),m(t),A(e.callback_cancel,t,n,i))}(t,n,e,i),A(e.callback_exit,t,n,i))}(t.target,t,n,e)}))},nt=function(t){return Array.prototype.slice.call(t)},et=function(t){return t.container.querySelectorAll(t.elements_selector)},it=function(t){return function(t){return p(t)===f}(t)},ot=function(t,n){return function(t){return nt(t).filter(E)}(t||et(n))},rt=function(t,e){var o=c(t);this._settings=o,this.loadingCount=0,function(t,n){i&&!Z(t)&&(n._observer=new IntersectionObserver((function(e){tt(e,t,n)}),function(t){return{root:t.container===document?null:t.container,rootMargin:t.thresholds||t.threshold+"px"}}(t)))}(o,this),function(t,e){n&&window.addEventListener("online",(function(){!function(t,n){var e;
3687(e=et(t),nt(e).filter(it)).forEach((function(n){w(n,t.class_error),m(n)})),n.update()}(t,e)}))}(o,this),this.update(e)};return rt.prototype={update:function(t){var n,o,r=this._settings,a=ot(t,r);z(this,a.length),!e&&i?Z(r)?function(t,n,e){t.forEach((function(t){-1!==Y.indexOf(t.tagName)&&function(t,n,e){t.setAttribute("loading","lazy"),Q(t,n,e),P(t,n),h(t,_)}(t,n,e)})),z(e,0)}(a,r,this):(o=a,function(t){t.disconnect()}(n=this._observer),function(t,n){n.forEach((function(n){t.observe(n)}))}(n,o)):this.loadAll(a)},destroy:function(){this._observer&&this._observer.disconnect(),et(this._settings).forEach((function(t){delete t.llOriginalAttrs})),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(t){var n=this,e=this._settings;ot(t,e).forEach((function(t){O(t,n),X(t,e,n)}))}},rt.load=function(t,n){var e=c(n);X(t,e)},rt.resetStatus=function(t){m(t)},n&&function(t,n){if(n)if(n.length)for(var e,i=0;e=n[i];i+=1)s(t,e);else s(t,n)}(rt,window.lazyLoadOptions),rt})); 3688 3689},{}],5:[function(require,module,exports){ 3690"use strict"; 3691 3692var _sweetalert = _interopRequireDefault(require("sweetalert2")); 3693 3694// var _aos = _interopRequireDefault(require("aos")); 3695 3696var _rellax = _interopRequireDefault(require("rellax")); 3697 3698var _vanillaLazyload = _interopRequireDefault(require("vanilla-lazyload")); 3699 3700function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 3701 3702// import Canvas from "./Canvas"; 3703window.Swal = _sweetalert.default; 3704 3705// _aos.default.init({ 3706// once: true, 3707// mirror: false, 3708// duration: 700, 3709// delay: 0, 3710// }); 3711 3712new _rellax.default('.rellax'); 3713new _vanillaLazyload.default(); // new Canvas(); 3714 3715},{"aos":1,"rellax":2,"sweetalert2":3,"vanilla-lazyload":4}]},{},[5]);
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.