{"version":3,"file":"/js/site.js","mappings":"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","sources":["webpack://@dryven/ig-windkraft/webpack/runtime/chunk loaded","webpack://@dryven/ig-windkraft/./node_modules/aos/dist/aos.js","webpack://@dryven/ig-windkraft/./resources/js/modules/accordion.js","webpack://@dryven/ig-windkraft/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://@dryven/ig-windkraft/./vendor/ddm-studio/cookie-byte/resources/js/cookie-consent.js","webpack://@dryven/ig-windkraft/./vendor/ddm-studio/cookie-byte/resources/js/cookie-modal.js","webpack://@dryven/ig-windkraft/./vendor/ddm-studio/cookie-byte/resources/js/cookie-cover.js","webpack://@dryven/ig-windkraft/./vendor/ddm-studio/cookie-byte/resources/js/cookie-covers.js","webpack://@dryven/ig-windkraft/./resources/js/modules/cookie-byte.js","webpack://@dryven/ig-windkraft/./resources/js/form/form-assets.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/types/options.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/index.js","webpack://@dryven/ig-windkraft/./resources/js/form/date-picker.js","webpack://@dryven/ig-windkraft/./resources/js/globals.js","webpack://@dryven/ig-windkraft/./resources/js/form/dropdown.js","webpack://@dryven/ig-windkraft/./resources/js/form/form.js","webpack://@dryven/ig-windkraft/./resources/js/classes/slideable.js","webpack://@dryven/ig-windkraft/./resources/js/navigation/alert-notice.js","webpack://@dryven/ig-windkraft/./resources/js/classes/toggle.js","webpack://@dryven/ig-windkraft/./resources/js/navigation/header-menu.js","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/lightgallery.es5.js","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/plugins/video/lg-video.es5.js","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/css/lightgallery.css?949a","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/css/lg-video.css?b32a","webpack://@dryven/ig-windkraft/./resources/js/modules/media-viewer.js","webpack://@dryven/ig-windkraft/./resources/js/modules/modal.js","webpack://@dryven/ig-windkraft/./resources/js/modules/responsive-image.js","webpack://@dryven/ig-windkraft/./resources/js/modules/video.js","webpack://@dryven/ig-windkraft/./node_modules/countup.js/dist/countUp.min.js","webpack://@dryven/ig-windkraft/./resources/js/modules/number-animation.js","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/utils.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/swiper-core.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/modules/navigation.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/modules/pagination.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/modules/autoplay.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/effect-target.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/effect-virtual-transition-end.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/modules/effect-fade.mjs","webpack://@dryven/ig-windkraft/./node_modules/swiper/shared/effect-init.mjs","webpack://@dryven/ig-windkraft/./resources/js/modules/hero-nico.js","webpack://@dryven/ig-windkraft/./resources/js/modules/slider-martin.js","webpack://@dryven/ig-windkraft/./resources/js/modules/slider-albert.js","webpack://@dryven/ig-windkraft/./resources/js/modules/aos.js","webpack://@dryven/ig-windkraft/./node_modules/@googlemaps/js-api-loader/dist/index.mjs","webpack://@dryven/ig-windkraft/./resources/js/modules/maps.js","webpack://@dryven/ig-windkraft/./node_modules/@kurkle/color/dist/color.esm.js","webpack://@dryven/ig-windkraft/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://@dryven/ig-windkraft/./node_modules/chart.js/dist/chart.js","webpack://@dryven/ig-windkraft/./node_modules/chart.js/auto/auto.js","webpack://@dryven/ig-windkraft/./resources/js/modules/chart.js","webpack://@dryven/ig-windkraft/./resources/js/site.js","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/images/loading.gif","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/fonts/lg.svg","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/fonts/lg.ttf","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/fonts/lg.woff2","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/fonts/lg.woff","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://@dryven/ig-windkraft/./node_modules/flatpickr/dist/l10n/de.js","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/css/lg-video.css","webpack://@dryven/ig-windkraft/./node_modules/lightgallery/css/lightgallery.css","webpack://@dryven/ig-windkraft/./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js","webpack://@dryven/ig-windkraft/./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://@dryven/ig-windkraft/./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/getUrl.js","webpack://@dryven/ig-windkraft/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@dryven/ig-windkraft/webpack/bootstrap","webpack://@dryven/ig-windkraft/webpack/runtime/compat get default export","webpack://@dryven/ig-windkraft/webpack/runtime/define property getters","webpack://@dryven/ig-windkraft/webpack/runtime/hasOwnProperty shorthand","webpack://@dryven/ig-windkraft/webpack/runtime/jsonp chunk loading","webpack://@dryven/ig-windkraft/webpack/runtime/nonce","webpack://@dryven/ig-windkraft/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","!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}])});","/**\n * ACCORDION.JS\n * Initializes all accordions used on a page\n */\n\nexport default class Accordion {\n\n\tstatic initAll() {\n\t\tdocument.addEventListener('livewire:init', () => {\n\t\t\tLivewire.hook('morphed', () => {\n\t\t\t\tnew Accordion();\n\t\t\t});\n\t\t});\n\n\t\treturn new Accordion();\n\t}\n\n\tconstructor() {\n\t\tconst accordions = document.querySelectorAll('.accordion');\n\n\t\tif (accordions.length === 0)\n\t\t\treturn;\n\t\n\t\taccordions.forEach((accordion) => {\n\t\t\tconst accordionItems = accordion.querySelectorAll('.accordion-item');\n\n\t\t\taccordionItems.forEach((accordionItem) => {\n\t\t\t\tconst accordionToggle = accordionItem.querySelector('.accordion-toggle');\n\n\t\t\t\taccordionToggle.addEventListener('change', () => {\n\t\t\t\t\taccordionItems.forEach((item) => {\n\t\t\t\t\t\tthis.toggleAccordionItem(item, accordionItem === item && accordionToggle.checked);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Opens or closes passed accordion item\n\t * @param {Element} accordionItem Accordion item container of a single accordion item ('.accordion-item')\n\t * @param {Boolean} open Open/Close\n\t */\n\ttoggleAccordionItem(accordionItem, open) {\n\t\tlet checkbox = accordionItem.querySelector('.accordion-toggle');\n\t\tlet accordionContent = accordionItem.querySelector('.accordion-content');\n\n\t\tcheckbox.checked = open;\n\t\taccordionContent.style.height = (open ? accordionContent.scrollHeight : 0) + 'px';\n\n\t\tsetTimeout(() => {\n\t\t\taccordionContent.style.height = (open ? 'auto' : 0) + 'px';\n\t\t}, 300);\n\t}\n}","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","\"use strict\";\n\nimport Cookies from 'js-cookie';\n\n/**\n * Class for handling cookie requests, changes and callbacks\n */\nexport class CookieConsent {\n\t/**\n\t * Creates the instance for handling cookie requests, changes and callbacks.\n\t *\n\t * Available options:\n\t * - callbacks: object with arrays of functions, which are called when a cookie category has been consented to\n\t * - autorun: if the cookie categories' callbacks / code snippets should be immediately be run at CookieByte's init\n\t * - prefix: the prefix for the consent cookie key names\n\t *\n\t * @param {{\n\t * autorun: boolean,\n\t * callbacks: Object<Array<function>>,\n\t * prefix: string\n\t * }} options\n\t */\n\tconstructor(options = {}) {\n\t\tthis._defaults = {\n\t\t\tautorun: true,\n\t\t\tcallbacks: {},\n\t\t\tprefix: \"cookie-byte-consent-\"\n\t\t};\n\n\t\tthis._options = Object.assign({}, this._defaults, options);\n\n\t\t// Add trailing dash to prefix if none exists\n\t\tif (!this._options.prefix.endsWith(\"-\")) {\n\t\t\tthis._options.prefix += \"-\";\n\t\t}\n\n\t\tthis._registerCPCallbacks();\n\n\t\tif (this._options.autorun) {\n\t\t\tthis.runCallbacks();\n\t\t}\n\n\t\t// Add linkers to the dependent categories\n\t\tthis.cookieModal = null;\n\t\tthis.cookieCovers = null;\n\t}\n\n\t/**\n\t * Adds a callback function to a cookie category\n\t *\n\t * @param {string} cookieCategory the cookie category\n\t * @param {function} callback the callback function to be called when the cookie category has been consented to\n\t */\n\tregisterCallback(cookieCategory, callback) {\n\t\t// Create callback array if it doesn't exist already\n\t\tif (!Array.isArray(this._options.callbacks[cookieCategory])) {\n\t\t\tthis._options.callbacks[cookieCategory] = [];\n\t\t}\n\n\t\tthis._options.callbacks[cookieCategory].push(callback);\n\t}\n\n\t/**\n\t * Removes the callbacks added to a cookie category or a list of cookie categories.\n\t *\n\t * @param {string} cookieCategories the cookie categories\n\t */\n\tunregisterCallback(cookieCategories) {\n\t\tthis._runSplitList(cookieCategories, (cookieCategory) => {\n\t\t\tdelete this._options.callbacks[cookieCategory];\n\t\t});\n\t}\n\n\t/**\n\t * Runs the callback function of a cookie category if it has been consented to.\n\t *\n\t * @param {string} cookieCategory the cookie category\n\t */\n\trunCallback(cookieCategory) {\n\t\t// Don't bother if the cookie category has no consent or callback function\n\t\tif (!this.hasConsent(cookieCategory)) return;\n\t\tif (!(cookieCategory in this._options.callbacks)) return;\n\n\t\tthis._options.callbacks[cookieCategory].forEach((callback) => {\n\t\t\tif (typeof callback === \"function\") callback();\n\t\t});\n\n\t\tdelete this._options.callbacks[cookieCategory];\n\t}\n\n\t/**\n\t * Runs all the callback functions which cookie categories have been consented to.\n\t */\n\trunCallbacks() {\n\t\tObject.keys(this._options.callbacks).forEach((cookieCategory) => {\n\t\t\tthis.runCallback(cookieCategory);\n\t\t});\n\t}\n\n\t/**\n\t * Checks whether the cookie category or cookie categories have already been consented to.\n\t *\n\t * @param {string} cookieCategories a comma-separated list of the cookie categories to check for\n\t * @returns {boolean} whether the cookie categories have been consented to\n\t */\n\thasConsent(cookieCategories) {\n\t\tlet consent = false;\n\n\t\tconst arr = String(cookieCategories).split(\",\");\n\n\t\tfor (const cookieCategory of arr) {\n\t\t\tconsent = Cookies.get(this._options.prefix + cookieCategory) === \"true\";\n\n\t\t\t// Return false if the current cookie category hasn't been consented to\n\t\t\tif (!consent) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn consent;\n\t}\n\n\t/**\n\t * Consents to the cookie categories.\n\t *\n\t * @param {string} cookieCategories a comma-separated list of the cookie category to consent to\n\t */\n\tconsent(cookieCategories) {\n\t\tthis.setConsent(cookieCategories, true);\n\t}\n\n\t/**\n\t * Sets the consent for a list of cookie categories.\n\t *\n\t * @param {string} cookieCategories a comma-separated list of the cookie categories to set\n\t * @param {boolean, string} value\n\t */\n\tsetConsent(cookieCategories, value) {\n\t\tthis._runSplitList(cookieCategories, (cookieType) => {\n\t\t\tCookies.set(this._options.prefix + cookieType, value === true || value === \"true\", { expires: 365 }); // 365 days\n\n\t\t\tthis.runCallback(cookieType);\n\t\t});\n\t}\n\n\t/**\n\t * Register all JavaScript snippets that were found on the page.\n\t *\n\t * @private\n\t */\n\t_registerCPCallbacks() {\n\t\tconst snippets = document.querySelectorAll('script[type=\"text/snippetscript\"]');\n\n\t\tif (snippets.length === 0) return;\n\n\t\tsnippets.forEach((snippet) => {\n\t\t\tconst cookieCategory = snippet.dataset.category;\n\t\t\tconst snippetCode = snippet.text.trim();\n\n\t\t\tthis.registerCallback(String(cookieCategory), Function(snippetCode));\n\t\t});\n\t}\n\n\t/**\n\t * Runs a function on a comma-seperated list of strings.\n\t *\n\t * @param {string} str the comma-seperated list\n\t * @param {function} func the function to iterate over\n\t * @private\n\t */\n\t_runSplitList(str, func) {\n\t\t// First split the string into pieces\n\t\tlet arr = String(str).split(\",\");\n\n\t\tarr.forEach(func);\n\t}\n}\n","\"use strict\";\n\nimport {CookieConsent} from \"./cookie-consent\";\n\nconst DISPLAY_SLEEP_TIME = 300;\n\n/**\n * Class for initializing the cookie modal and its actions.\n */\nexport class CookieModal {\n\t/**\n\t * Initializes the cookie modal if it is found on the page.\n\t *\n\t * @param {CookieConsent} instance the CookieConsent instance\n\t */\n\tconstructor(instance) {\n\t\tthis._instance = instance;\n\t\tthis._instance.cookieModal = this;\n\n\t\t// We assume that there only exists one modal per page\n\t\tthis._modal = document.querySelector(\".ddmcm\");\n\t\tif (this._modal === null) return;\n\n\t\t// Find all cookie category checkboxes\n\t\tthis._modalCheckboxes = this._modal.querySelectorAll('.ddmcm-categories input[data-ddmcm-category][type=\"checkbox\"]');\n\t\tif (this._modalCheckboxes.length === 0) return;\n\n\t\t// Select all checkboxes which already have consent\n\t\tthis._getUncheckedModals().forEach((check) => {\n\t\t\tcheck.checked = this._instance.hasConsent(check.name);\n\t\t});\n\n\t\t// Make a button select all options and therefore consent to all categories\n\t\tthis._initButton(\"#ddmcm-button-all\", () => {\n\t\t\tthis.checkAll();\n\t\t});\n\n\t\t// Make a button just consent the selected categories\n\t\tthis._initButton(\"#ddmcm-button-selected\");\n\n\t\t// Init cookie category accordion\n\t\tthis._initAccordion();\n\n\t\t// Show the cookie notice if it hasn't already been interacted with\n\t\tif (!this._instance.hasConsent(\"showed\")) this.show();\n\t}\n\n\t/**\n\t * Shows the cookie modal.\n\t */\n\tshow() {\n\t\tthis._modal.style.display = \"block\";\n\n\t\t// Cancel the race condition for a smooth animation\n\t\tsetTimeout(() => {\n\t\t\tthis._modal.style.opacity = \"1\";\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Hides the cookie modal.\n\t */\n\thide() {\n\t\tthis._modal.style.opacity = \"0\";\n\n\t\tsetTimeout(() => {\n\t\t\tthis._modal.style.display = \"none\";\n\t\t}, DISPLAY_SLEEP_TIME);\n\t}\n\n\t/**\n\t * Hides the cookie modal if all cookie categories have been consented to.\n\t */\n\thideIfConsented() {\n\t\tconst allConsented = Array.prototype.every.call(this._modalCheckboxes, (check) =>\n\t\t\tthis._instance.hasConsent(check.name)\n\t\t);\n\n\t\tif (allConsented) this._finalize();\n\t}\n\n\t/**\n\t * Selects all the cookie category checkboxes.\n\t */\n\tcheckAll() {\n\t\tthis._getUncheckedModals().forEach((check) => check.click());\n\t}\n\n\t/**\n\t * Consents for all selected cookie category checkboxes.\n\t *\n\t * @private\n\t */\n\t_pushSettings() {\n\t\tthis._modalCheckboxes.forEach((check) => {\n\t\t\tthis._instance.setConsent(check.name, check.checked);\n\t\t});\n\t}\n\n\t/**\n\t * Consents for all selected cookie category checkboxes and hides the cookie modal.\n\t *\n\t * @private\n\t */\n\t_finalize() {\n\t\tthis.hide();\n\t\tthis._instance.consent(\"showed\");\n\n\t\t// Try to hide the cookie covers' that have their cookie categories' consent\n\t\tif (this._instance.cookieCovers !== null) {\n\t\t\tthis._instance.cookieCovers.hideConsented();\n\t\t}\n\t}\n\n\t/**\n\t * Returns all currently unselected checkboxes.\n\t *\n\t * @returns {NodeListOf<HTMLInputElement>}\n\t * @private\n\t */\n\t_getUncheckedModals() {\n\t\treturn this._modal.querySelectorAll('.ddmcm-categories input[data-ddmcm-category][type=\"checkbox\"]:not(:checked)');\n\t}\n\n\t/**\n\t * Initializes a button in the cookie modal for saving and consenting to the selected categories.\n\t *\n\t * @param {HTMLButtonElement|string} element the button element or a selector\n\t * @param {function|null} prepare the callback that is run before the settings are saved\n\t * @private\n\t */\n\t_initButton(element, prepare = null) {\n\t\tif (typeof element === \"string\") {\n\t\t\telement = this._modal.querySelector(element);\n\t\t}\n\n\t\tif (element === null) return;\n\n\t\telement.addEventListener(\"click\", (event) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tif (typeof prepare === \"function\") {\n\t\t\t\tprepare();\n\t\t\t}\n\n\t\t\tthis._pushSettings();\n\t\t\tthis._finalize();\n\t\t});\n\t}\n\n\t/**\n\t * Initializes the functionality to expand and collapse each cookie category like an accordion\n\t * \n\t * @private \n\t */\n\t_initAccordion() {\n\t\tconst accordion = this._modal.querySelector('.ddmcm-accordion');\n\n\t\tif (!accordion)\n\t\t\treturn;\n\t\n\t\tconst accordionItems = accordion.querySelectorAll('.ddmcm-accordion-item');\n\n\t\taccordionItems.forEach((accordionItem) => {\n\t\t\tconst accordionToggle = accordionItem.querySelector('.ddmcm-accordion-toggle input[type=\"checkbox\"]');\n\n\t\t\tif (!accordionToggle)\n\t\t\t\treturn;\n\n\t\t\taccordionToggle.addEventListener('change', () => {\n\t\t\t\taccordionItems.forEach((item) => {\n\t\t\t\t\tthis._toggleAccordionItem(item, accordionItem === item && accordionToggle.checked);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Opens or closes passed accordion item\n\t * @param {Element} accordionItem Accordion item container of a single accordion item ('.accordion-item')\n\t * @param {Boolean} open Open/Close\n\t */\n\t_toggleAccordionItem(accordionItem, open) {\n\t\tlet checkbox = accordionItem.querySelector('.ddmcm-accordion-toggle input[type=\"checkbox\"]');\n\t\tlet accordionContent = accordionItem.querySelector('.ddmcm-accordion-content');\n\n\t\tif (!checkbox | !accordionContent)\n\t\t\treturn;\n\n\t\tcheckbox.checked = open;\n\t\taccordionContent.style.height = (open ? accordionContent.scrollHeight : 0) + 'px';\n\n\t\t// set it again after transition end, so that nothing is cut off\n\t\t// sometimes there are issues in the scrollHeight calculation\n\t\tsetTimeout(() => {\n\t\t\taccordionContent.style.height = (open ? accordionContent.scrollHeight : 0) + 'px';\n\t\t}, 500);\n\t}\n}\n","\"use strict\";\n\nimport {CookieConsent} from \"./cookie-consent\";\n\n/**\n * Class for initializing a cookie cover.\n */\nexport class CookieCover {\n\t/**\n\t * Initialize the cookie cover.\n\t *\n\t * @param {CookieConsent} instance the CookieConsent instance\n\t * @param {HTMLElement} element the cookie cover's element\n\t */\n\tconstructor(instance, element) {\n\t\tthis._instance = instance;\n\t\tthis.element = element;\n\t\tthis.handle = element.dataset.handle;\n\t\tthis.categories = element.dataset.categories;\n\t\tthis.htmlSnippet = this._fetchHTMLSnippet();\n\n\t\tif (this.hasConsent()) this.hide();\n\t\telse this.show();\n\n\t\t// Make a button consent the cookie cover's categories\n\t\tthis._initButton(\".ddmcc-button-accept\");\n\t}\n\n\t/**\n\t * Shows the cookie cover.\n\t */\n\tshow() {\n\t\tthis.element.style.display = \"block\";\n\n\t\tsetTimeout(() => {\n\t\t\tthis.element.style.opacity = \"1\";\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Hides the cookie cover by removing it and optionally add the html snippet.\n\t */\n\thide() {\n\t\tthis.element.style.opacity = \"0\";\n\t\tthis.element.style.display = \"none\";\n\n\t\tthis._insertHTMLSnippet();\n\t}\n\n\t/**\n\t * Checks whether the cookie cover's categories have consent.\n\t *\n\t * @returns {boolean}\n\t */\n\thasConsent() {\n\t\treturn this._instance.hasConsent(this.categories);\n\t}\n\n\t/**\n\t * Try to get the HTML snippet as a string.\n\t *\n\t * @returns {string|null} either the snippet code or null if none could be found\n\t * @private\n\t */\n\t_fetchHTMLSnippet() {\n\t\tconst snippetElement = this.element.querySelector('textarea[data-html-snippet]');\n\t\tif (snippetElement === null) return null;\n\n\t\treturn snippetElement.value.trim();\n\t}\n\n\t/**\n\t * Inserts the HTML snippet above the cookie cover in the DOM and sets the property to null afterwards.\n\t *\n\t * @private\n\t */\n\t_insertHTMLSnippet() {\n\t\tif (this.htmlSnippet === null) return;\n\n\t\tconst helperElement = document.createElement('div');\n\t\thelperElement.innerHTML = this.htmlSnippet;\n\n\t\t// Script tags are not being executed if they are just pasted into the DOM using\n\t\t// .innerHTML, so this method will add them the native way\n\t\tthis._makeScriptTagsExecutable(helperElement);\n\n\t\t// Insert the snippet before the cookie cover\n\t\tthis.element.insertAdjacentElement('beforebegin', helperElement);\n\n\t\t// remove the div-wrapper\n\t\thelperElement.replaceWith(...helperElement.childNodes);\n\n\t\t// Set htmlSnippet to null, so it won't be inserted again when calling this method\n\t\tthis.htmlSnippet = null;\n\t}\n\n\t/**\n\t * Makes all script tags executable that are child elements of the passed element\n\t * Re-adds the scripts using appendChild, which enables the native script functionality\n\t *\n\t * @param {HTMLElement} parentElement of the script tags\n\t */\n\t_makeScriptTagsExecutable(parentElement) {\n\t\tconst scriptTags = parentElement.querySelectorAll('script');\n\n\t\tArray.from(scriptTags).forEach(originalScript => {\n\t\t\tconst newScript = document.createElement('script');\n\n\t\t\t// re-add all attributes\n\t\t\tArray.from(originalScript.attributes).forEach(attr => {\n\t\t\t\tnewScript.setAttribute(attr.name, attr.value);\n\t\t\t});\n\n\t\t\t// re-add contents, if any\n\t\t\tconst scriptText = document.createTextNode(originalScript.innerHTML);\n\t\t\tnewScript.appendChild(scriptText);\n\n\t\t\t// replace original node with new one\n\t\t\toriginalScript.parentNode.replaceChild(newScript, originalScript);\n\t\t});\n\t}\n\n\t/**\n\t * Initializes a button in the cookie cover for consenting to their categories.\n\t *\n\t * @param {HTMLButtonElement|string} element the button element or a selector\n\t * @private\n\t */\n\t_initButton(element) {\n\t\tif (typeof element === \"string\") {\n\t\t\telement = this.element.querySelector(element);\n\t\t}\n\n\t\tif (element === null) return;\n\n\t\telement.addEventListener(\"click\", (event) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._instance.consent(this.categories);\n\n\t\t\t// Hide all cookie covers that now can be shown\n\t\t\tthis._instance.cookieCovers.hideConsented();\n\n\t\t\t// Try to hide the cookie modal if this cookie cover ended up accepting all cookie categories\n\t\t\tif (this._instance.cookieModal) {\n\t\t\t\tthis._instance.cookieModal.hideIfConsented();\n\t\t\t}\n\t\t});\n\t}\n}","\"use strict\";\n\nimport {CookieConsent} from \"./cookie-consent\";\nimport {CookieCover} from \"./cookie-cover\";\n\n/**\n * Class for initializing the cookie covers on the current page.\n */\nexport class CookieCovers {\n\t/**\n\t * Initializes the cookie covers if there are any on the page.\n\t *\n\t * @param {CookieConsent} instance the CookieConsent instance\n\t */\n\tconstructor(instance) {\n\t\tthis._instance = instance;\n\t\tthis._instance.cookieCovers = this;\n\t\tthis.cookieCovers = [];\n\n\t\t// Now, there could be more than one of these, so keep that in mind\n\t\tthis._covers = document.querySelectorAll(\".ddmcc\");\n\t\tif (this._covers.length === 0) return;\n\n\t\tthis._covers.forEach((cover) => {\n\t\t\tthis.cookieCovers.push(new CookieCover(this._instance, cover));\n\t\t});\n\t}\n\n\t/**\n\t * Returns the cookie covers' elements with a given handle.\n\t *\n\t * @param {string} handle the handle of the cookie cover to look for\n\t * @returns {Array<CookieCover>} the cookie covers' elements with a given handle\n\t *\n\t * @deprecated Only used by other deprecated methods. Should be removed by 1.2.\n\t */\n\tgetCoversByHandle(handle) {\n\t\treturn this.cookieCovers.filter((cover) => {\n\t\t\treturn cover.handle === handle;\n\t\t});\n\t}\n\n\t/**\n\t * Shows the cookie cover with the given handle.\n\t *\n\t * @param {HTMLElement|string} cover the cookie covers' element or handle\n\t *\n\t * @deprecated Use the show() function of the CookieCover object itself. Should be removed by 1.2.\n\t */\n\tshow(cover) {\n\t\tlet covers = this.getCoversByHandle(cover);\n\n\t\tcovers.forEach((cover) => {\n\t\t\tcover.show();\n\t\t});\n\t}\n\n\t/**\n\t * Hides the cookie cover with the given handle.\n\t *\n\t * @param {HTMLElement|string} cover the cookie covers' element or handle\n\t *\n\t * @deprecated Use the hide() function of the CookieCover object itself. Should be removed by 1.2.\n\t */\n\thide(cover) {\n\t\tlet covers = this.getCoversByHandle(cover);\n\n\t\tcovers.forEach((cover) => {\n\t\t\tcover.hide();\n\t\t});\n\t}\n\n\t/**\n\t * Hides all cookie covers which have been consented to since the\n\t * initialization.\n\t */\n\thideConsented() {\n\t\tif (this._covers.length === 0) return;\n\n\t\tthis._covers.forEach((cover) => {\n\t\t\tif (this._instance.hasConsent(cover.dataset.categories)) this.hide(cover.dataset.handle);\n\t\t});\n\t}\n}\n","/**\n * COOKIE-BYTE.JS\n */\n\nimport {CookieConsent, CookieCovers, CookieModal} from '../../../vendor/ddm-studio/cookie-byte';\n\nexport default class CookieByte {\n\n\tstatic init() {\n\t\treturn new CookieByte();\n\t}\n\n\tconstructor() {\n\t\twindow.CookieConsent = new CookieConsent();\n\t\twindow.CookieModal = new CookieModal(window.CookieConsent);\n\t\twindow.CookieCovers = new CookieCovers(window.CookieConsent);\n\t}\n}","\nexport default class FormAssets {\n\n\tstatic init() {\n\t\treturn new FormAssets();\n\t}\n\n\tconstructor() {\n\t\twindow.assetsHandler = this.assetsHandler;\n\t}\n\n\tassetsHandler() {\n\t\treturn {\n\t\t\tselectedImage: null,\n\t\t\tfileNames: [],\n\t\t\tfiles: [],\n\n\t\t\tclearSelection() {\n\t\t\t\tthis.fileNames = null;\n\t\t\t\tthis.files = [];\n\t\t\t},\n\n\t\t\tloadImage() {\n\t\t\t\tvar reader = new FileReader();\n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tthis.selectedImage = 'url(' + e.target.result + ')';\n\t\t\t\t};\n\n\t\t\t\tif (this.files?.length > 0)\n\t\t\t\t\treader.readAsDataURL(this.files[0]);\n\t\t\t\telse this.selectedImage = null;\n\t\t\t},\n\n\t\t\tselectedFilesChanged(input) {\n\t\t\t\tthis.files = Object.values(input.files);\n\t\t\t\tif (input.accept.includes('image'))\n\t\t\t\t\tthis.loadImage();\n\t\t\t},\n\t\t}\n\t}\n}","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","import flatpickr from 'flatpickr';\nimport { German } from \"flatpickr/dist/l10n/de.js\";\n\nexport default class DatePicker {\n\n\tstatic init() {\n\t\tdocument.querySelectorAll('.date-picker').forEach((input) => {\n\t\t\tconst date = input.value ?? input.getAttribute('value');\n\t\t\tconst minDate = input.getAttribute('data-min-date');\n\t\t\tconst maxDate = input.getAttribute('data-max-date');\n\t\t\tconst inline = input.getAttribute('data-inline') == '1';\n\t\n\t\t\tlet options = {\n\t\t\t\tlocale: German,\n\t\t\t\tdateFormat: 'Y-m-d',\n\t\t\t\tdisableMobile: true,\n\t\t\t\tinline: inline,\n\t\t\t\taltInput: true,\n\t\t\t\taltFormat: 'd.m.Y' \n\t\t\t};\n\t\n\t\t\tif(minDate) options.minDate = minDate;\n\t\t\tif(minDate) options.maxDate = maxDate;\n\t\n\t\t\tconst datePicker = flatpickr(input, options);\n\t\t\tif (date)\n\t\t\t\tdatePicker.setDate(date);\n\t\t});\n\t}\n}","/**\n * GLOBALS.JS\n *\n * Global user-specific constants to be used for more than one module.\n */\n\n// Enables the switch between standard and inverted headermenu\nexport const ENABLE_TRANSPARENT_HEADER = false;\n// Enables the navigation item highlighting based on anchorlinks\nexport const ENABLE_HIGHLIGHTED_NAVIGATION = false;\n// Enables dropdown menu in header menu\nexport const ENABLE_DROPDOWN_MENU = true;\n\n/*\n\tSCREEN BREAKPOINT GLOBALS\n These should be set accordingly to the screen breakpoints in tailwind.config.js\n */\nexport const BREAKPOINT_SM = convertRemToPixels(40);\nexport const BREAKPOINT_MD = convertRemToPixels(48);\nexport const BREAKPOINT_LG = convertRemToPixels(64);\nexport const BREAKPOINT_XL = convertRemToPixels(80);\nexport const BREAKPOINT_2XL = convertRemToPixels(96);\nexport const IS_MOBILE_DEVICE = isMobileDevice();\n\n/**\n * Converts size value from 'rem' to 'px'.\n * @param remValue size in 'rem'\n * @returns {number} size in 'px'\n */\nfunction convertRemToPixels(remValue) {\n\treturn remValue * parseFloat(getComputedStyle(document.documentElement).fontSize);\n}\n\nfunction isMobileDevice() {\n\tlet check = false;\n\t(function(a){if(/(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.test(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.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);\n\treturn check;\n}","import * as GLOBALS from '../globals';\n\nexport default class DropdownMenu {\n\n\tstatic init() {\n\t\treturn new DropdownMenu();\n\t}\n\n\tconstructor() {\n\t\tdocument.querySelectorAll('select').forEach((select) => {\n\t\t\tselect.addEventListener('change', () => select.blur());\n\t\t});\n\n\t\twindow.dropdown = this.initSelect;\n\t}\n\n\tinitSelect() {\n\t\treturn {\n\t\t\tdata: new Map(),\n\t\t\tdisabled: false,\n\t\t\tdomElement: null,\n\t\t\temptyOptionsMessage: 'Keine Ergebnisse gefunden',\n\t\t\tfocusedOptionIndex: null,\n\t\t\tmultiple: null,\n\t\t\topen: false,\n\t\t\toptions: new Map(),\n\t\t\tplaceholder: 'Auswählen...',\n\t\t\tsearch: '',\n\t\t\tuseTagMultiselect: true,\n\t\t\tvalue: null,\n\t\t\thandle: '',\n\n\t\t\tget filteredValue() {\n\t\t\t\tlet options = Array.from(this.options.keys());\n\n\t\t\t\tif (this.multiple)\n\t\t\t\t\treturn (this.value ?? []).filter((value) => {\n\t\t\t\t\t\treturn options.includes(value);\n\t\t\t\t\t});\n\n\n\t\t\t\tif (!options.includes(this.value)) return null;\n\n\t\t\t\treturn this.value;\n\t\t\t},\n\n\t\t\tget hasValue() {\n\t\t\t\treturn this.multiple\n\t\t\t\t\t? (Array.isArray(this.value) && this.value.length > 0)\n\t\t\t\t\t: this.value;\n\t\t\t},\n\n\t\t\tget isMobileDevice() {\n\t\t\t\treturn GLOBALS.IS_MOBILE_DEVICE;\n\t\t\t},\n\n\t\t\tget selectionSummary() {\n\t\t\t\tlet value = this.filteredValue;\n\n\t\t\t\tif (this.multiple & this.useTagMultiselect)\n\t\t\t\t\treturn this.placeholder;\n\n\t\t\t\tif (this.multiple & !this.useTagMultiselect) {\n\t\t\t\t\tvalue = value.map((key) => {\n\t\t\t\t\t\treturn this.options.get(key);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn value.join(', ');\n\t\t\t\t}\n\n\t\t\t\tif (!this.multiple && value)\n\t\t\t\t\treturn this.options.get(value);\n\n\t\t\t\treturn this.placeholder;\n\t\t\t},\n\n\t\t\tisSelected: function (key) {\n\t\t\t\tif (this.multiple)\n\t\t\t\t\treturn (this.value ?? []).includes(key);\n\t\t\t\telse return this.value == key;\n\t\t\t},\n\n\t\t\tcloseListbox: function () {\n\t\t\t\tthis.open = false;\n\t\t\t\tthis.focusedOptionIndex = null;\n\t\t\t\tthis.search = '';\n\t\t\t},\n\n\t\t\t// handles value changes in DOM-Element (select)\n\t\t\tdomElementValueChanged: function () {\n\t\t\t\tif (this.multiple)\n\t\t\t\t\tthis.value = [...this.domElement.options].filter(option => option.selected).map(option => option.value);\n\t\t\t\telse this.value = this.domElement.value;\n\t\t\t},\n\n\t\t\t// next item in list will be focused when arrow-down is pressed\n\t\t\tfocusNextOption: function () {\n\t\t\t\tif (this.focusedOptionIndex === null) return this.focusedOptionIndex = this.options.keys().length - 1;\n\n\t\t\t\tif (this.focusedOptionIndex + 1 >= this.options.keys().length) return;\n\n\t\t\t\tthis.focusedOptionIndex++;\n\n\t\t\t\tthis.$refs.listbox.children[this.focusedOptionIndex].scrollIntoView({\n\t\t\t\t\tblock: \"nearest\"\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t// previous item in list will be focused when arrow-up is pressed\n\t\t\tfocusPreviousOption: function () {\n\t\t\t\tif (this.focusedOptionIndex === null) return this.focusedOptionIndex = 0;\n\n\t\t\t\tif (this.focusedOptionIndex <= 0) return;\n\n\t\t\t\tthis.focusedOptionIndex--;\n\n\t\t\t\tthis.$refs.listbox.children[this.focusedOptionIndex].scrollIntoView({\n\t\t\t\t\tblock: \"nearest\"\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t// setup of custom dropdown using existing values from inner SELECT-element (DOM-Element)\n\t\t\tinitDropdown: function (el) {\n\t\t\t\tthis.domElement = el.querySelector('select');\n\t\t\t\tthis.updateOptions();\n\n\t\t\t\tthis.multiple = !!this.domElement.hasAttribute('multiple');\n\t\t\t\tthis.placeholder = this.domElement.getAttribute('placeholder') ? this.domElement.getAttribute('placeholder') : this.placeholder;\n\t\t\t\tthis.handle = this.domElement.getAttribute('handle');\n\n\t\t\t\tthis.domElement.addEventListener('change', this.domElementValueChanged.bind(this));\n\n\t\t\t\twindow.addEventListener('remove-item-from-livewire', event => {\n\t\t\t\t\tif (this.handle == event.detail[1]) {\n\t\t\t\t\t\tif (!this.multiple) {\n\t\t\t\t\t\t\tthis.value = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.removeItem(event.detail[0]);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// poll domElement changes every 500ms\n\t\t\t\tsetInterval(() => {\n\t\t\t\t\tthis.updateOptions();\n\t\t\t\t\tthis.disabled = this.domElement.disabled;\n\t\t\t\t}, 500);\n\n\t\t\t\tthis.$nextTick(this.domElementValueChanged.bind(this));\n\t\t\t\tthis.$watch('search', this.searchChanged.bind(this));\n\t\t\t\tthis.$watch('value', this.updateDomElement.bind(this));\n\t\t\t},\n\n\t\t\t// removes an item from multi-selection\n\t\t\tremoveItem: function (key) {\n\t\t\t\tif (this.multiple) {\n\t\t\t\t\tthis.value = this.value.filter(function (item) {\n\t\t\t\t\t\treturn item !== key;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.value = null;\n\t\t\t\t}\n\n\t\t\t\tthis.updateDomElement();\n\t\t\t\tthis.triggerChange();\n\t\t\t},\n\n\t\t\t// filters the selection list based on current search term \n\t\t\tsearchChanged: function (term) {\n\t\t\t\tif (!this.open || !term || typeof term !== 'string') return this.options = this.data;\n\n\t\t\t\tthis.options = new Map(this.data);\n\n\t\t\t\tconst filteredEntries = Array.from(this.data.keys())\n\t\t\t\t\t.filter((key) => this.data.get(key).toLowerCase().includes(term.toLowerCase()))\n\t\t\t\t\t.reduce((options, key) => {\n\t\t\t\t\t\toptions[key] = this.data.get(key);\n\t\t\t\t\t\treturn options;\n\t\t\t\t\t}, {});\n\n\t\t\t\tthis.options.forEach((value, key) => {\n\t\t\t\t\tif (!(key in filteredEntries)) {\n\t\t\t\t\t\tthis.options.delete(key);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t},\n\n\t\t\t// handles value selection for single and multiple choice\n\t\t\tselectOption: function () {\n\t\t\t\tif (!this.open)\n\t\t\t\t\treturn this.toggleListboxVisibility();\n\n\t\t\t\tlet selectedValue = Array.from(this.options.keys())[this.focusedOptionIndex];\n\n\t\t\t\tif (this.multiple) {\n\n\t\t\t\t\tif (!selectedValue)\n\t\t\t\t\t\tthis.value = [];\n\n\t\t\t\t\t// remove item if user unselected it\n\t\t\t\t\tif (this.value.includes(selectedValue))\n\t\t\t\t\t\tthis.removeItem(selectedValue);\n\t\t\t\t\t// otherwise add it\n\t\t\t\t\telse this.value.push(selectedValue);\n\n\t\t\t\t\t// remove empty values\n\t\t\t\t\tthis.value = this.value.filter(function (item) {\n\t\t\t\t\t\treturn item != '';\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse this.value = selectedValue;\n\n\t\t\t\tthis.closeListbox();\n\t\t\t\tthis.triggerChange();\n\t\t\t},\n\n\t\t\t// shows/hides the selection list\n\t\t\ttoggleListboxVisibility: function () {\n\t\t\t\tif (this.open)\n\t\t\t\t\treturn this.closeListbox();\n\n\t\t\t\tthis.focusedOptionIndex = Array.from(this.options.keys()).indexOf(this.multiple ? this.value[0] : this.value);\n\n\t\t\t\tif (this.focusedOptionIndex < 0)\n\t\t\t\t\tthis.focusedOptionIndex = 0;\n\n\t\t\t\tthis.open = true;\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.$refs.search.focus();\n\n\t\t\t\t\tthis.$refs.listbox.children[this.focusedOptionIndex].scrollIntoView({\n\t\t\t\t\t\tblock: \"nearest\"\n\t\t\t\t\t});\n\t\t\t\t}, 100);\n\t\t\t},\n\n\t\t\ttriggerChange: function() {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.domElement.dispatchEvent(new Event('change', { 'bubbles': true }));\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t// updates the DOM-Element with the currently selected value(s)\n\t\t\tupdateDomElement: function () {\t\t\t\t\n\t\t\t\tlet options = [...this.domElement.options];\n\n\t\t\t\tif (this.multiple)\n\t\t\t\t\toptions.forEach((option) => {\n\t\t\t\t\t\toption.selected = this.value.some(v => v == option.value);\n\t\t\t\t\t});\n\t\t\t\telse this.domElement.value = this.value;\n\t\t\t},\n\n\t\t\t\n\t\t\t// loads all available options from DOM-element\n\t\t\tupdateOptions: function () {\n\t\t\t\tif (this.open) return;\n\n\t\t\t\tconst domOptions = [...this.domElement.options];\n\t\t\t\tconst data = new Map();\n\n\t\t\t\tdomOptions.forEach((option) => {\n\t\t\t\t\tdata.set(option.value, option.text);\n\t\t\t\t});\n\t\t\t\tthis.data = this.options = data;\n\t\t\t},\n\t\t}\n\t}\n}\n","import FormAssets from './form-assets';\nimport DatePicker from './date-picker';\nimport DropdownMenu from './dropdown';\n\n/**\n * FORM.JS\n */\nexport default class Form {\n\n static init() {\n return new Form();\n }\n\n constructor() {\n document.addEventListener('alpine:initialized', () => {\n DatePicker.init();\n });\n DropdownMenu.init();\n FormAssets.init();\n window.form = this.alpineFormLogic;\n }\n\n initForm(form) {\n if (!form)\n return;\n\n FormAssets.init(form);\n }\n\n alpineFormLogic() {\n return {\n form: null,\n formErrors: {},\n loading: false,\n formSucceeded: false,\n formFailed: false,\n requiredFieldsEmpty: false,\n\n get formData() {\n let formData = new FormData();\n\n new FormData(this.form).forEach((value, key) => {\n if (value)\n formData.append(key, value);\n });\n\n return formData;\n },\n\n get showSuccessMessage() {\n return !this.loading && this.formSucceeded;\n },\n\n get showErrorMessage() {\n return !this.loading && this.formFailed;\n },\n\n get showFieldsMissingMessage() {\n return this.requiredFieldsEmpty;\n },\n\n get redirect() {\n let input = this.form.querySelector('input[name=\"redirect_uri\"]');\n return input ? input.value : null;\n },\n\n initForm(parentElement) {\n this.form = parentElement.querySelector('form');\n this.form.addEventListener('submit', (event) => {\n event.preventDefault();\n this.submitData();\n });\n },\n\n reset() {\n this.form.reset();\n this.form.querySelectorAll('input[type=\"file\"]').forEach((input) => {\n input.value = null;\n input.setAttribute('value', null);\n input.dispatchEvent(new Event('change'));\n });\n },\n\n submitData() {\n this.loading = true;\n this.formSucceeded = false;\n this.formFailed = false;\n this.requiredFieldsEmpty = false;\n this.formErrors = {};\n\n fetch(this.form.action, {\n method: 'POST',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest'\n },\n body: this.formData\n })\n .then((response) => {\n if (![200, 400, 422].includes(response.status))\n throw 'Form error';\n return response.json();\n })\n .then(data => {\n if (data?.error || data?.errors) {\n this.formErrors = data?.error ?? data?.errors;\n this.requiredFieldsEmpty = true;\n } else {\n if (this.redirect) {\n window.location.href = this.redirect;\n return;\n }\n this.formSucceeded = true;\n this.reset();\n }\n })\n .catch((error) => {\n this.formSucceeded = false;\n this.formFailed = true;\n })\n .finally(() => {\n this.loading = false;\n });\n }\n }\n }\n}","const STATE_UP = 'UP';\nconst STATE_DOWN = 'DOWN';\n\nexport default class Slideable {\n\n\tconstructor(element, duration = 300, targetDisplay = 'block') {\n\t\tthis.element = element;\n\t\tthis.duration = duration;\n\t\tthis.originalStyle = {};\n\t\tthis.targetDisplay = targetDisplay;\n\t\tthis.originalDisplay = null;\n\t\tthis.state = STATE_UP;\n\t}\n\n\t_prepare() {\n\t\tthis._calculateSize();\n\n\t\tObject.assign(this.originalStyle, this.element.style);\n\t\tthis.originalDisplay = window.getComputedStyle(this.element).display;\n\n\t\tObject.assign(\n\t\t\tthis.element.style,\n\t\t\t{\n\t\t\t\toverflow: 'hidden',\n\t\t\t\ttransition: `height ${this.duration}ms cubic-bezier(0.37, 0, 0.63, 1)`,\n\t\t\t},\n\t\t);\n\t}\n\n\t_finalize() {\n\t\tthis.element.style = this.originalStyle;\n\n\t\tif (this.state === STATE_UP && this.isHidden())\n\t\t\tthis.element.style.display = this.targetDisplay;\n\n\t\tif (this.state === STATE_DOWN && !this.isHidden())\n\t\t\tthis.element.style.display = 'none';\n\t}\n\n\t_calculateSize() {\n\t\tlet display = window.getComputedStyle(this.element).display;\n\t\tif (this.isHidden()) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\tthis.height = this.element.getBoundingClientRect().height;\n\t\tthis.element.style.display = display;\n\t}\n\n\tdown(callbackDown = null) {\n\t\tthis.state = STATE_UP;\n\t\tthis._prepare();\n\n\t\tthis.element.style.height = '0';\n\t\tthis.element.style.display = this.originalDisplay === 'none' ? 'block' : this.originalDisplay;\n\n\t\tsetTimeout(() => {\n\t\t\tthis.element.style.height = this.height + 'px';\n\t\t}, 10);\n\n\t\tsetTimeout(() => {\n\t\t\tthis._finalize();\n\n\t\t\tif (typeof callbackDown === 'function') callbackDown();\n\t\t}, this.duration + 10);\n\t}\n\n\tup(callbackUp = null) {\n\t\tthis.state = STATE_DOWN;\n\t\tthis._prepare();\n\t\tthis.element.style.height = this.height + 'px';\n\n\t\tsetTimeout(() => {\n\t\t\tthis.element.style.height = 0;\n\t\t}, 10);\n\n\t\tsetTimeout(() => {\n\t\t\tthis.element.style.display = 'none';\n\t\t\tthis._finalize();\n\n\t\t\tif (typeof callbackUp === 'function') callbackUp();\n\t\t}, this.duration + 10);\n\n\t}\n\n\ttoggle(callbackUp = null, callbackDown = null) {\n\t\tif (this.isHidden()) return this.down(callbackDown);\n\t\telse this.up(callbackUp);\n\t}\n\n\tisHidden() {\n\t\treturn window.getComputedStyle(this.element).display === 'none';\n\t}\n}\n","/**\n * ALERT-NOTICE.JS\n */\n\nimport Cookies from 'js-cookie';\nimport Slideable from '../classes/slideable';\n\nconst COOKIE_IDENTIFIER = 'alert-noticed';\n\nexport default class AlertNotice {\n\n\t/**\n\t * Initializes the alert notice in the header navigation menu.\n\t */\n\tstatic init() {\n\t\treturn new AlertNotice();\n\t}\n\n\tconstructor() {\n\t\tconst mainElement = document.getElementById('alert-notice');\n\t\tconst slideableMainElement = new Slideable(mainElement);\n\n\t\tif (mainElement === null)\n\t\t\treturn;\n\n\t\tthis.initCloseButton(mainElement, slideableMainElement);\n\t\tthis.initToggles(mainElement, slideableMainElement);\n\t\tthis.initLink(mainElement, slideableMainElement);\n\n\t\tif (Cookies.get(COOKIE_IDENTIFIER) !== 'true')\n\t\t\tslideableMainElement.down();\n\t}\n\n\t/**\n\t * Enables hiding the alert notice using the close button\n\t */\n\tinitCloseButton(alertNoticeElement, slideableAlertNoticeElement) {\n\t\tif (alertNoticeElement === null)\n\t\t\treturn;\n\n\t\tconst closeButton = alertNoticeElement.querySelector('.alert-notice__close-button');\n\n\t\tcloseButton.addEventListener('click', () => {\n\t\t\tslideableAlertNoticeElement.up();\n\t\t\tCookies.set(COOKIE_IDENTIFIER, 'true');\n\t\t});\n\t}\n\n\t/**\n\t * Enables toggling the alert notice using an element which has following attribute set to true:\n\t * [data-toggle-alert-notice=\"true\"]\n\t */\n\tinitToggles(alertNoticeElement, slideableAlertNoticeElement) {\n\t\tif (alertNoticeElement === null)\n\t\t\treturn;\n\n\t\tconst toggleButtons = document.querySelectorAll('[data-toggle-alert-notice=\"true\"]');\n\n\t\tif (toggleButtons.length === 0)\n\t\t\treturn;\n\n\t\ttoggleButtons.forEach((toggleButton) => {\n\t\t\ttoggleButton.addEventListener('click', () => {\n\t\t\t\tCookies.set(COOKIE_IDENTIFIER, slideableAlertNoticeElement.isHidden() ? 'false' : 'true');\n\t\t\t\tslideableAlertNoticeElement.toggle();\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Sets the cookie to shown, once the alert notice is clicked\n\t */\n\tinitLink(alertNoticeElement) {\n\t\tif (alertNoticeElement === null)\n\t\t\treturn;\n\n\t\tconst link = alertNoticeElement.querySelector('.alert-notice__link');\n\n\t\tif (!link)\n\t\t\treturn;\n\n\t\tlink.addEventListener('click', () => {\n\t\t\tCookies.set(COOKIE_IDENTIFIER, 'true');\n\t\t});\n\t}\n\n}","export default class Toggle {\n\t/**\n\t * Toggle object which uses the aria-pressed attribute.\n\t *\n\t * @param element {HTMLElement}\n\t * @param callback {function}\n\t */\n\tconstructor(element, callback) {\n\t\tthis.ATTRIBUTE = 'aria-pressed';\n\t\tthis.element = element;\n\t\tthis.state = this.pressed();\n\t\tthis.callback = callback;\n\n\t\tthis.element.addEventListener('click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tthis.toggle();\n\n\t\t\tif (typeof this.callback === 'function')\n\t\t\t\tthis.callback(event);\n\t\t});\n\t}\n\n\t/**\n\t * Returns and optionally sets the pressed state.\n\t *\n\t * @param bool {null|string}\n\t * @returns {string}\n\t */\n\tpressed(bool = null) {\n\t\tlet pressed = this.element.getAttribute(this.ATTRIBUTE) ?? 'false';\n\n\t\tif (bool === null)\n\t\t\treturn pressed;\n\n\t\tconst newPressed = String(bool);\n\t\tthis.element.setAttribute(this.ATTRIBUTE, newPressed);\n\t\treturn newPressed;\n\t}\n\n\t/**\n\t * Toggle the pressed state.\n\t */\n\ttoggle() {\n\t\tif (this.state === 'false')\n\t\t\tthis.state = this.pressed('true');\n\t\telse\n\t\t\tthis.state = this.pressed('false');\n\t}\n}\n","/**\n * NAVIGATION.JS\n *\n * Initialization and control for the header menu on desktop and mobile.\n */\n\nimport * as GLOBALS from '../globals';\nimport HighlightedNavigation from './navigation-highlight';\nimport AlertNotice from './alert-notice';\nimport Toggle from '../classes/toggle';\nimport Slideable from '../classes/slideable';\n\nexport default class HeaderMenu {\n\n\tstatic init() {\n\t\treturn new HeaderMenu();\n\t}\n\n\tconstructor() {\n\t\tconst headermenu = document.querySelector('.headermenu');\n\n\t\tif (headermenu === null)\n\t\t\treturn;\n\t\n\t\tAlertNotice.init();\n\t\n\t\tconst navigationList = headermenu.querySelector('.headermenu-items');\n\t\n\t\tif (navigationList === null || navigationList.childElementCount === 0)\n\t\t\treturn;\n\t\n\t\tthis.initHamburgerMenu(headermenu);\n\t\n\t\tif (GLOBALS.ENABLE_DROPDOWN_MENU) {\n\t\t\tthis.initDropdownMenu(headermenu);\n\t\t}\n\t\n\t\tif (GLOBALS.ENABLE_HIGHLIGHTED_NAVIGATION) {\n\t\t\tHighlightedNavigation.init(navigationList);\n\t\t}\n\t\n\t\tif (GLOBALS.ENABLE_TRANSPARENT_HEADER) {\n\t\t\tthis.initTransparentHeader(headermenu);\n\t\t}\n\n\t\tthis.recalculateViewHeight();\n\t\twindow.addEventListener('resize', this.recalculateViewHeight);\n\t\n\t\treturn true;\n\t}\n\n\t/**\n\t * Initializes the mobile hamburger menu button to toggle between open/closed.\n\t *\n\t * @return {boolean} successful?\n\t */\n\tinitHamburgerMenu(headermenu) {\n\t\tconst element = headermenu.querySelector('button.hamburger');\n\t\tconst navigationElements = headermenu.querySelectorAll('.nav-item');\n\n\t\tif (element === null)\n\t\t\treturn;\n\n\t\tconst slideableNavigationList = new Slideable(headermenu.querySelector('.headermenu-items'), 300, 'flex');\n\t\t\n\t\tnew Toggle(element, () => {\n\t\t\tslideableNavigationList.toggle();\n\t\t\tdocument.body.classList.toggle('modal-opened');\n\t\t});\n\n\t\tif (navigationElements !== null) {\n\t\t\tnavigationElements.forEach((navItem) => {\n\t\t\t\tconst link = navItem.querySelector('a');\n\t\t\t\tlink.addEventListener('click', () => {\n\t\t\t\t\tif(window.getComputedStyle(element).display === 'block') element.click();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Initializes the mobile dropdown menu buttons to toggle between open/closed.\n\t *\n\t * @return {boolean} successful?\n\t */\n\tinitDropdownMenu(headermenu) {\n\t\tconst elements = headermenu.querySelectorAll('.nav-item.has-children');\n\t\tconst burgermenu = headermenu.querySelector('button.hamburger');\n\n\t\tif (elements.length === 0)\n\t\t\treturn;\n\n\t\telements.forEach((navItem) => {\n\t\t\tconst dropDownItems = navItem.querySelectorAll('.nav-dropdown-item');\n\n\t\t\tdropDownItems.forEach((item) => {\n\t\t\t\tconst link = item.querySelector('a');\n\t\t\t\tlink.addEventListener('click', () => {\n\t\t\t\t\tif(window.getComputedStyle(burgermenu).display === 'block') burgermenu.click();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tvar dropdown = new Slideable(navItem.querySelector('.nav-dropdown'));\n\t\t\tnew Toggle(navItem.querySelector('button'), () => {\n\t\t\t\tdropdown.toggle();\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Initializes the functionality for the header menu to be transparent at the top of the page and get opaque once the user scrolled down a bit\n\t *\n\t * @param {Element} headermenu\n\t */\n\tinitTransparentHeader(headermenu) {\n\t\tif (document.querySelectorAll('.error-page').length > 0)\n\t\t\treturn;\n\n\t\t\tconst changeBasedOnScrollOffset = () => {\n\t\t\t\tlet scrollTop = document.documentElement.scrollTop;\n\t\t\t\tconst desktopHeader = headermenu.querySelector('.headermenu-items');\n\t\t\t\tconst logo = desktopHeader.querySelector('.logo');\n\t\t\t\tconst logoAlt = desktopHeader.querySelector('.logo-alt');\n\t\n\t\t\t\tif (Math.abs(scrollTop - window.innerHeight * 0.5) > headermenu.clientHeight) {\n\t\t\t\t\tif(scrollTop > window.innerHeight * 0.5) {\n\t\t\t\t\t\theadermenu.classList.remove('headermenu-transparent');\n\t\t\t\t\t\tif (logoAlt) {\n\t\t\t\t\t\t\tlogo.classList.remove('opacity-0');\n\t\t\t\t\t\t\tlogoAlt.classList.add('opacity-0');\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\theadermenu.classList.add('headermenu-transparent');\n\t\t\t\t\t\tif (logoAlt) {\n\t\t\t\t\t\t\tlogo.classList.add('opacity-0');\n\t\t\t\t\t\t\tlogoAlt.classList.remove('opacity-0');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\twindow.addEventListener('scroll', changeBasedOnScrollOffset);\n\n\t\tchangeBasedOnScrollOffset();\n\t}\n\n\trecalculateViewHeight() {\n\t\tlet vh = window.innerHeight * 0.01;\n\t\tdocument.documentElement.style.setProperty('--vh', `${vh}px`);\n\t}\n}","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar lightGalleryCoreSettings = {\r\n mode: 'lg-slide',\r\n easing: 'ease',\r\n speed: 400,\r\n licenseKey: '0000-0000-000-0000',\r\n height: '100%',\r\n width: '100%',\r\n addClass: '',\r\n startClass: 'lg-start-zoom',\r\n backdropDuration: 300,\r\n container: '',\r\n startAnimationDuration: 400,\r\n zoomFromOrigin: true,\r\n hideBarsDelay: 0,\r\n showBarsAfter: 10000,\r\n slideDelay: 0,\r\n supportLegacyBrowser: true,\r\n allowMediaOverlap: false,\r\n videoMaxSize: '1280-720',\r\n loadYouTubePoster: true,\r\n defaultCaptionHeight: 0,\r\n ariaLabelledby: '',\r\n ariaDescribedby: '',\r\n resetScrollPosition: true,\r\n hideScrollbar: false,\r\n closable: true,\r\n swipeToClose: true,\r\n closeOnTap: true,\r\n showCloseIcon: true,\r\n showMaximizeIcon: false,\r\n loop: true,\r\n escKey: true,\r\n keyPress: true,\r\n trapFocus: true,\r\n controls: true,\r\n slideEndAnimation: true,\r\n hideControlOnEnd: false,\r\n mousewheel: false,\r\n getCaptionFromTitleOrAlt: true,\r\n appendSubHtmlTo: '.lg-sub-html',\r\n subHtmlSelectorRelative: false,\r\n preload: 2,\r\n numberOfSlideItemsInDom: 10,\r\n selector: '',\r\n selectWithin: '',\r\n nextHtml: '',\r\n prevHtml: '',\r\n index: 0,\r\n iframeWidth: '100%',\r\n iframeHeight: '100%',\r\n iframeMaxWidth: '100%',\r\n iframeMaxHeight: '100%',\r\n download: true,\r\n counter: true,\r\n appendCounterTo: '.lg-toolbar',\r\n swipeThreshold: 50,\r\n enableSwipe: true,\r\n enableDrag: true,\r\n dynamic: false,\r\n dynamicEl: [],\r\n extraProps: [],\r\n exThumbImage: '',\r\n isMobile: undefined,\r\n mobileSettings: {\r\n controls: false,\r\n showCloseIcon: false,\r\n download: false,\r\n },\r\n plugins: [],\r\n strings: {\r\n closeGallery: 'Close gallery',\r\n toggleMaximize: 'Toggle maximize',\r\n previousSlide: 'Previous slide',\r\n nextSlide: 'Next slide',\r\n download: 'Download',\r\n playVideo: 'Play video',\r\n mediaLoadingFailed: 'Oops... Failed to load content...',\r\n },\r\n};\n\nfunction initLgPolyfills() {\r\n (function () {\r\n if (typeof window.CustomEvent === 'function')\r\n return false;\r\n function CustomEvent(event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n detail: null,\r\n };\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n window.CustomEvent = CustomEvent;\r\n })();\r\n (function () {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n }\r\n })();\r\n}\r\nvar lgQuery = /** @class */ (function () {\r\n function lgQuery(selector) {\r\n this.cssVenderPrefixes = [\r\n 'TransitionDuration',\r\n 'TransitionTimingFunction',\r\n 'Transform',\r\n 'Transition',\r\n ];\r\n this.selector = this._getSelector(selector);\r\n this.firstElement = this._getFirstEl();\r\n return this;\r\n }\r\n lgQuery.generateUUID = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n };\r\n lgQuery.prototype._getSelector = function (selector, context) {\r\n if (context === void 0) { context = document; }\r\n if (typeof selector !== 'string') {\r\n return selector;\r\n }\r\n context = context || document;\r\n var fl = selector.substring(0, 1);\r\n if (fl === '#') {\r\n return context.querySelector(selector);\r\n }\r\n else {\r\n return context.querySelectorAll(selector);\r\n }\r\n };\r\n lgQuery.prototype._each = function (func) {\r\n if (!this.selector) {\r\n return this;\r\n }\r\n if (this.selector.length !== undefined) {\r\n [].forEach.call(this.selector, func);\r\n }\r\n else {\r\n func(this.selector, 0);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {\r\n // prettier-ignore\r\n var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {\r\n return group1.toUpperCase();\r\n });\r\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\r\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\r\n el.style['webkit' + property] = value;\r\n el.style['moz' + property] = value;\r\n el.style['ms' + property] = value;\r\n el.style['o' + property] = value;\r\n }\r\n else {\r\n el.style[property] = value;\r\n }\r\n };\r\n lgQuery.prototype._getFirstEl = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return this.selector[0];\r\n }\r\n else {\r\n return this.selector;\r\n }\r\n };\r\n lgQuery.prototype.isEventMatched = function (event, eventName) {\r\n var eventNamespace = eventName.split('.');\r\n return event\r\n .split('.')\r\n .filter(function (e) { return e; })\r\n .every(function (e) {\r\n return eventNamespace.indexOf(e) !== -1;\r\n });\r\n };\r\n lgQuery.prototype.attr = function (attr, value) {\r\n if (value === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.getAttribute(attr);\r\n }\r\n this._each(function (el) {\r\n el.setAttribute(attr, value);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.find = function (selector) {\r\n return $LG(this._getSelector(selector, this.selector));\r\n };\r\n lgQuery.prototype.first = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return $LG(this.selector[0]);\r\n }\r\n else {\r\n return $LG(this.selector);\r\n }\r\n };\r\n lgQuery.prototype.eq = function (index) {\r\n return $LG(this.selector[index]);\r\n };\r\n lgQuery.prototype.parent = function () {\r\n return $LG(this.selector.parentElement);\r\n };\r\n lgQuery.prototype.get = function () {\r\n return this._getFirstEl();\r\n };\r\n lgQuery.prototype.removeAttr = function (attributes) {\r\n var attrs = attributes.split(' ');\r\n this._each(function (el) {\r\n attrs.forEach(function (attr) { return el.removeAttribute(attr); });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.wrap = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var wrapper = document.createElement('div');\r\n wrapper.className = className;\r\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\r\n this.firstElement.parentNode.removeChild(this.firstElement);\r\n wrapper.appendChild(this.firstElement);\r\n return this;\r\n };\r\n lgQuery.prototype.addClass = function (classNames) {\r\n if (classNames === void 0) { classNames = ''; }\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.add(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.removeClass = function (classNames) {\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.remove(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.hasClass = function (className) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.classList.contains(className);\r\n };\r\n lgQuery.prototype.hasAttribute = function (attribute) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.hasAttribute(attribute);\r\n };\r\n lgQuery.prototype.toggleClass = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n if (this.hasClass(className)) {\r\n this.removeClass(className);\r\n }\r\n else {\r\n this.addClass(className);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype.css = function (property, value) {\r\n var _this = this;\r\n this._each(function (el) {\r\n _this._setCssVendorPrefix(el, property, value);\r\n });\r\n return this;\r\n };\r\n // Need to pass separate namespaces for separate elements\r\n lgQuery.prototype.on = function (events, listener) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n events.split(' ').forEach(function (event) {\r\n if (!Array.isArray(lgQuery.eventListeners[event])) {\r\n lgQuery.eventListeners[event] = [];\r\n }\r\n lgQuery.eventListeners[event].push(listener);\r\n _this.selector.addEventListener(event.split('.')[0], listener);\r\n });\r\n return this;\r\n };\r\n // @todo - test this\r\n lgQuery.prototype.once = function (event, listener) {\r\n var _this = this;\r\n this.on(event, function () {\r\n _this.off(event);\r\n listener(event);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.off = function (event) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n Object.keys(lgQuery.eventListeners).forEach(function (eventName) {\r\n if (_this.isEventMatched(event, eventName)) {\r\n lgQuery.eventListeners[eventName].forEach(function (listener) {\r\n _this.selector.removeEventListener(eventName.split('.')[0], listener);\r\n });\r\n lgQuery.eventListeners[eventName] = [];\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.trigger = function (event, detail) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var customEvent = new CustomEvent(event.split('.')[0], {\r\n detail: detail || null,\r\n });\r\n this.firstElement.dispatchEvent(customEvent);\r\n return this;\r\n };\r\n // Does not support IE\r\n lgQuery.prototype.load = function (url) {\r\n var _this = this;\r\n fetch(url)\r\n .then(function (res) { return res.text(); })\r\n .then(function (html) {\r\n _this.selector.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.html = function (html) {\r\n if (html === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.innerHTML;\r\n }\r\n this._each(function (el) {\r\n el.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.append = function (html) {\r\n this._each(function (el) {\r\n if (typeof html === 'string') {\r\n el.insertAdjacentHTML('beforeend', html);\r\n }\r\n else {\r\n el.appendChild(html);\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.prepend = function (html) {\r\n this._each(function (el) {\r\n el.insertAdjacentHTML('afterbegin', html);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.remove = function () {\r\n this._each(function (el) {\r\n el.parentNode.removeChild(el);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.empty = function () {\r\n this._each(function (el) {\r\n el.innerHTML = '';\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.scrollTop = function (scrollTop) {\r\n if (scrollTop !== undefined) {\r\n document.body.scrollTop = scrollTop;\r\n document.documentElement.scrollTop = scrollTop;\r\n return this;\r\n }\r\n else {\r\n return (window.pageYOffset ||\r\n document.documentElement.scrollTop ||\r\n document.body.scrollTop ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.scrollLeft = function (scrollLeft) {\r\n if (scrollLeft !== undefined) {\r\n document.body.scrollLeft = scrollLeft;\r\n document.documentElement.scrollLeft = scrollLeft;\r\n return this;\r\n }\r\n else {\r\n return (window.pageXOffset ||\r\n document.documentElement.scrollLeft ||\r\n document.body.scrollLeft ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.offset = function () {\r\n if (!this.firstElement) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n };\r\n }\r\n var rect = this.firstElement.getBoundingClientRect();\r\n var bodyMarginLeft = $LG('body').style().marginLeft;\r\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\r\n return {\r\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\r\n top: rect.top + this.scrollTop(),\r\n };\r\n };\r\n lgQuery.prototype.style = function () {\r\n if (!this.firstElement) {\r\n return {};\r\n }\r\n return (this.firstElement.currentStyle ||\r\n window.getComputedStyle(this.firstElement));\r\n };\r\n // Width without padding and border even if box-sizing is used.\r\n lgQuery.prototype.width = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientWidth -\r\n parseFloat(style.paddingLeft) -\r\n parseFloat(style.paddingRight));\r\n };\r\n // Height without padding and border even if box-sizing is used.\r\n lgQuery.prototype.height = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientHeight -\r\n parseFloat(style.paddingTop) -\r\n parseFloat(style.paddingBottom));\r\n };\r\n lgQuery.eventListeners = {};\r\n return lgQuery;\r\n}());\r\nfunction $LG(selector) {\r\n initLgPolyfills();\r\n return new lgQuery(selector);\r\n}\n\nvar defaultDynamicOptions = [\r\n 'src',\r\n 'sources',\r\n 'subHtml',\r\n 'subHtmlUrl',\r\n 'html',\r\n 'video',\r\n 'poster',\r\n 'slideName',\r\n 'responsive',\r\n 'srcset',\r\n 'sizes',\r\n 'iframe',\r\n 'downloadUrl',\r\n 'download',\r\n 'width',\r\n 'facebookShareUrl',\r\n 'tweetText',\r\n 'iframeTitle',\r\n 'twitterShareUrl',\r\n 'pinterestShareUrl',\r\n 'pinterestText',\r\n 'fbHtml',\r\n 'disqusIdentifier',\r\n 'disqusUrl',\r\n];\r\n// Convert html data-attribute to camalcase\r\nfunction convertToData(attr) {\r\n // FInd a way for lgsize\r\n if (attr === 'href') {\r\n return 'src';\r\n }\r\n attr = attr.replace('data-', '');\r\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\r\n attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\r\n return attr;\r\n}\r\nvar utils = {\r\n /**\r\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\r\n */\r\n getSize: function (el, container, spacing, defaultLgSize) {\r\n if (spacing === void 0) { spacing = 0; }\r\n var LGel = $LG(el);\r\n var lgSize = LGel.attr('data-lg-size') || defaultLgSize;\r\n if (!lgSize) {\r\n return;\r\n }\r\n var isResponsiveSizes = lgSize.split(',');\r\n // if at-least two viewport sizes are available\r\n if (isResponsiveSizes[1]) {\r\n var wWidth = window.innerWidth;\r\n for (var i = 0; i < isResponsiveSizes.length; i++) {\r\n var size_1 = isResponsiveSizes[i];\r\n var responsiveWidth = parseInt(size_1.split('-')[2], 10);\r\n if (responsiveWidth > wWidth) {\r\n lgSize = size_1;\r\n break;\r\n }\r\n // take last item as last option\r\n if (i === isResponsiveSizes.length - 1) {\r\n lgSize = size_1;\r\n }\r\n }\r\n }\r\n var size = lgSize.split('-');\r\n var width = parseInt(size[0], 10);\r\n var height = parseInt(size[1], 10);\r\n var cWidth = container.width();\r\n var cHeight = container.height() - spacing;\r\n var maxWidth = Math.min(cWidth, width);\r\n var maxHeight = Math.min(cHeight, height);\r\n var ratio = Math.min(maxWidth / width, maxHeight / height);\r\n return { width: width * ratio, height: height * ratio };\r\n },\r\n /**\r\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\r\n * @param {jQuery Element}\r\n * @returns {String} Transform CSS string\r\n */\r\n getTransform: function (el, container, top, bottom, imageSize) {\r\n if (!imageSize) {\r\n return;\r\n }\r\n var LGel = $LG(el).find('img').first();\r\n if (!LGel.get()) {\r\n return;\r\n }\r\n var containerRect = container.get().getBoundingClientRect();\r\n var wWidth = containerRect.width;\r\n // using innerWidth to include mobile safari bottom bar\r\n var wHeight = container.height() - (top + bottom);\r\n var elWidth = LGel.width();\r\n var elHeight = LGel.height();\r\n var elStyle = LGel.style();\r\n var x = (wWidth - elWidth) / 2 -\r\n LGel.offset().left +\r\n (parseFloat(elStyle.paddingLeft) || 0) +\r\n (parseFloat(elStyle.borderLeft) || 0) +\r\n $LG(window).scrollLeft() +\r\n containerRect.left;\r\n var y = (wHeight - elHeight) / 2 -\r\n LGel.offset().top +\r\n (parseFloat(elStyle.paddingTop) || 0) +\r\n (parseFloat(elStyle.borderTop) || 0) +\r\n $LG(window).scrollTop() +\r\n top;\r\n var scX = elWidth / imageSize.width;\r\n var scY = elHeight / imageSize.height;\r\n var transform = 'translate3d(' +\r\n (x *= -1) +\r\n 'px, ' +\r\n (y *= -1) +\r\n 'px, 0) scale3d(' +\r\n scX +\r\n ', ' +\r\n scY +\r\n ', 1)';\r\n return transform;\r\n },\r\n getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {\r\n var title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\r\n return \"<div class=\\\"lg-video-cont lg-has-iframe\\\" style=\\\"width:\" + iframeWidth + \"; max-width:\" + iframeMaxWidth + \"; height: \" + iframeHeight + \"; max-height:\" + iframeMaxHeight + \"\\\">\\n <iframe class=\\\"lg-object\\\" frameborder=\\\"0\\\" \" + title + \" src=\\\"\" + src + \"\\\" allowfullscreen=\\\"true\\\"></iframe>\\n </div>\";\r\n },\r\n getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {\r\n var srcsetAttr = srcset ? \"srcset=\\\"\" + srcset + \"\\\"\" : '';\r\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\"\" : '';\r\n var imgMarkup = \"<img \" + altAttr + \" \" + srcsetAttr + \" \" + sizesAttr + \" class=\\\"lg-object lg-image\\\" data-index=\\\"\" + index + \"\\\" src=\\\"\" + src + \"\\\" />\";\r\n var sourceTag = '';\r\n if (sources) {\r\n var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;\r\n sourceTag = sourceObj.map(function (source) {\r\n var attrs = '';\r\n Object.keys(source).forEach(function (key) {\r\n // Do not remove the first space as it is required to separate the attributes\r\n attrs += \" \" + key + \"=\\\"\" + source[key] + \"\\\"\";\r\n });\r\n return \"<source \" + attrs + \"></source>\";\r\n });\r\n }\r\n return \"\" + sourceTag + imgMarkup;\r\n },\r\n // Get src from responsive src\r\n getResponsiveSrc: function (srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n var src = '';\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var _src = srcItms[i].split(' ');\r\n // Manage empty space\r\n if (_src[0] === '') {\r\n _src.splice(0, 1);\r\n }\r\n rsSrc.push(_src[0]);\r\n rsWidth.push(_src[1]);\r\n }\r\n var wWidth = window.innerWidth;\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n return src;\r\n },\r\n isImageLoaded: function (img) {\r\n if (!img)\r\n return false;\r\n // During the onload event, IE correctly identifies any images that\r\n // weren’t downloaded as not complete. Others should too. Gecko-based\r\n // browsers act like NS4 in that they report this incorrectly.\r\n if (!img.complete) {\r\n return false;\r\n }\r\n // However, they do have two very useful properties: naturalWidth and\r\n // naturalHeight. These give the true size of the image. If it failed\r\n // to load, either of these should be zero.\r\n if (img.naturalWidth === 0) {\r\n return false;\r\n }\r\n // No other way of checking: assume it’s ok.\r\n return true;\r\n },\r\n getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n }\r\n else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n }\r\n else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n return \"<div class=\\\"lg-video-cont \" + videoClass + \"\\\" style=\\\"\" + videoContStyle + \"\\\">\\n <div class=\\\"lg-video-play-button\\\">\\n <svg\\n viewBox=\\\"0 0 20 20\\\"\\n preserveAspectRatio=\\\"xMidYMid\\\"\\n focusable=\\\"false\\\"\\n aria-labelledby=\\\"\" + playVideoString + \"\\\"\\n role=\\\"img\\\"\\n class=\\\"lg-video-play-icon\\\"\\n >\\n <title>\" + playVideoString + \"</title>\\n <polygon class=\\\"lg-video-play-icon-inner\\\" points=\\\"1,0 20,10 1,20\\\"></polygon>\\n </svg>\\n <svg class=\\\"lg-video-play-icon-bg\\\" viewBox=\\\"0 0 50 50\\\" focusable=\\\"false\\\">\\n <circle cx=\\\"50%\\\" cy=\\\"50%\\\" r=\\\"20\\\"></circle></svg>\\n <svg class=\\\"lg-video-play-icon-circle\\\" viewBox=\\\"0 0 50 50\\\" focusable=\\\"false\\\">\\n <circle cx=\\\"50%\\\" cy=\\\"50%\\\" r=\\\"20\\\"></circle>\\n </svg>\\n </div>\\n \" + (dummyImg || '') + \"\\n <img class=\\\"lg-object lg-video-poster\\\" src=\\\"\" + _poster + \"\\\" />\\n </div>\";\r\n },\r\n getFocusableElements: function (container) {\r\n var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\r\n var visibleElements = [].filter.call(elements, function (element) {\r\n var style = window.getComputedStyle(element);\r\n return style.display !== 'none' && style.visibility !== 'hidden';\r\n });\r\n return visibleElements;\r\n },\r\n /**\r\n * @desc Create dynamic elements array from gallery items when dynamic option is false\r\n * It helps to avoid frequent DOM interaction\r\n * and avoid multiple checks for dynamic elments\r\n *\r\n * @returns {Array} dynamicEl\r\n */\r\n getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\r\n var dynamicElements = [];\r\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\r\n [].forEach.call(items, function (item) {\r\n var dynamicEl = {};\r\n for (var i = 0; i < item.attributes.length; i++) {\r\n var attr = item.attributes[i];\r\n if (attr.specified) {\r\n var dynamicAttr = convertToData(attr.name);\r\n var label = '';\r\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\r\n label = dynamicAttr;\r\n }\r\n if (label) {\r\n dynamicEl[label] = attr.value;\r\n }\r\n }\r\n }\r\n var currentItem = $LG(item);\r\n var alt = currentItem.find('img').first().attr('alt');\r\n var title = currentItem.attr('title');\r\n var thumb = exThumbImage\r\n ? currentItem.attr(exThumbImage)\r\n : currentItem.find('img').first().attr('src');\r\n dynamicEl.thumb = thumb;\r\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\r\n dynamicEl.subHtml = title || alt || '';\r\n }\r\n dynamicEl.alt = alt || title || '';\r\n dynamicElements.push(dynamicEl);\r\n });\r\n return dynamicElements;\r\n },\r\n isMobile: function () {\r\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n },\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n *\r\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\r\n */\r\n isVideo: function (src, isHTML5VIdeo, index) {\r\n if (!src) {\r\n if (isHTML5VIdeo) {\r\n return {\r\n html5: true,\r\n };\r\n }\r\n else {\r\n console.error('lightGallery :- data-src is not provided on slide item ' +\r\n (index + 1) +\r\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');\r\n return;\r\n }\r\n }\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i);\r\n var wistia = src.match(/https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/);\r\n if (youtube) {\r\n return {\r\n youtube: youtube,\r\n };\r\n }\r\n else if (vimeo) {\r\n return {\r\n vimeo: vimeo,\r\n };\r\n }\r\n else if (wistia) {\r\n return {\r\n wistia: wistia,\r\n };\r\n }\r\n },\r\n};\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\r\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\r\n// Unique id for each gallery\r\nvar lgId = 0;\r\nvar LightGallery = /** @class */ (function () {\r\n function LightGallery(element, options) {\r\n this.lgOpened = false;\r\n this.index = 0;\r\n // lightGallery modules\r\n this.plugins = [];\r\n // false when lightGallery load first slide content;\r\n this.lGalleryOn = false;\r\n // True when a slide animation is in progress\r\n this.lgBusy = false;\r\n this.currentItemsInDom = [];\r\n // Scroll top value before lightGallery is opened\r\n this.prevScrollTop = 0;\r\n this.bodyPaddingRight = 0;\r\n this.isDummyImageRemoved = false;\r\n this.dragOrSwipeEnabled = false;\r\n this.mediaContainerPosition = {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n if (!element) {\r\n return this;\r\n }\r\n lgId++;\r\n this.lgId = lgId;\r\n this.el = element;\r\n this.LGel = $LG(element);\r\n this.generateSettings(options);\r\n this.buildModules();\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.settings.dynamic &&\r\n this.settings.dynamicEl !== undefined &&\r\n !Array.isArray(this.settings.dynamicEl)) {\r\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\r\n }\r\n this.galleryItems = this.getItems();\r\n this.normalizeSettings();\r\n // Gallery items\r\n this.init();\r\n this.validateLicense();\r\n return this;\r\n }\r\n LightGallery.prototype.generateSettings = function (options) {\r\n // lightGallery settings\r\n this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);\r\n if (this.settings.isMobile &&\r\n typeof this.settings.isMobile === 'function'\r\n ? this.settings.isMobile()\r\n : utils.isMobile()) {\r\n var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\r\n this.settings = __assign(__assign({}, this.settings), mobileSettings);\r\n }\r\n };\r\n LightGallery.prototype.normalizeSettings = function () {\r\n if (this.settings.slideEndAnimation) {\r\n this.settings.hideControlOnEnd = false;\r\n }\r\n if (!this.settings.closable) {\r\n this.settings.swipeToClose = false;\r\n }\r\n // And reset it on close to get the correct value next time\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n // At the moment, Zoom from image doesn't support dynamic options\r\n // @todo add zoomFromOrigin support for dynamic images\r\n if (this.settings.dynamic) {\r\n this.zoomFromOrigin = false;\r\n }\r\n if (!this.settings.container) {\r\n this.settings.container = document.body;\r\n }\r\n // settings.preload should not be grater than $item.length\r\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\r\n };\r\n LightGallery.prototype.init = function () {\r\n var _this = this;\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.buildStructure();\r\n this.LGel.trigger(lGEvents.init, {\r\n instance: this,\r\n });\r\n if (this.settings.keyPress) {\r\n this.keyPress();\r\n }\r\n setTimeout(function () {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n _this.triggerPosterClick();\r\n }, 50);\r\n this.arrow();\r\n if (this.settings.mousewheel) {\r\n this.mousewheel();\r\n }\r\n if (!this.settings.dynamic) {\r\n this.openGalleryOnItemClick();\r\n }\r\n };\r\n LightGallery.prototype.openGalleryOnItemClick = function () {\r\n var _this = this;\r\n var _loop_1 = function (index) {\r\n var element = this_1.items[index];\r\n var $element = $LG(element);\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n // @todo manage all event listners - should have namespace that represent element\r\n var uuid = lgQuery.generateUUID();\r\n $element\r\n .attr('data-lg-id', uuid)\r\n .on(\"click.lgcustom-item-\" + uuid, function (e) {\r\n e.preventDefault();\r\n var currentItemIndex = _this.settings.index || index;\r\n _this.openGallery(currentItemIndex, element);\r\n });\r\n };\r\n var this_1 = this;\r\n // Using for loop instead of using bubbling as the items can be any html element.\r\n for (var index = 0; index < this.items.length; index++) {\r\n _loop_1(index);\r\n }\r\n };\r\n /**\r\n * Module constructor\r\n * Modules are build incrementally.\r\n * Gallery should be opened only once all the modules are initialized.\r\n * use moduleBuildTimeout to make sure this\r\n */\r\n LightGallery.prototype.buildModules = function () {\r\n var _this = this;\r\n this.settings.plugins.forEach(function (plugin) {\r\n _this.plugins.push(new plugin(_this, $LG));\r\n });\r\n };\r\n LightGallery.prototype.validateLicense = function () {\r\n if (!this.settings.licenseKey) {\r\n console.error('Please provide a valid license key');\r\n }\r\n else if (this.settings.licenseKey === '0000-0000-000-0000') {\r\n console.warn(\"lightGallery: \" + this.settings.licenseKey + \" license key is not valid for production use\");\r\n }\r\n };\r\n LightGallery.prototype.getSlideItem = function (index) {\r\n return $LG(this.getSlideItemId(index));\r\n };\r\n LightGallery.prototype.getSlideItemId = function (index) {\r\n return \"#lg-item-\" + this.lgId + \"-\" + index;\r\n };\r\n LightGallery.prototype.getIdName = function (id) {\r\n return id + \"-\" + this.lgId;\r\n };\r\n LightGallery.prototype.getElementById = function (id) {\r\n return $LG(\"#\" + this.getIdName(id));\r\n };\r\n LightGallery.prototype.manageSingleSlideClassName = function () {\r\n if (this.galleryItems.length < 2) {\r\n this.outer.addClass('lg-single-item');\r\n }\r\n else {\r\n this.outer.removeClass('lg-single-item');\r\n }\r\n };\r\n LightGallery.prototype.buildStructure = function () {\r\n var _this = this;\r\n var container = this.$container && this.$container.get();\r\n if (container) {\r\n return;\r\n }\r\n var controls = '';\r\n var subHtmlCont = '';\r\n // Create controls\r\n if (this.settings.controls) {\r\n controls = \"<button type=\\\"button\\\" id=\\\"\" + this.getIdName('lg-prev') + \"\\\" aria-label=\\\"\" + this.settings.strings['previousSlide'] + \"\\\" class=\\\"lg-prev lg-icon\\\"> \" + this.settings.prevHtml + \" </button>\\n <button type=\\\"button\\\" id=\\\"\" + this.getIdName('lg-next') + \"\\\" aria-label=\\\"\" + this.settings.strings['nextSlide'] + \"\\\" class=\\\"lg-next lg-icon\\\"> \" + this.settings.nextHtml + \" </button>\";\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n subHtmlCont =\r\n '<div class=\"lg-sub-html\" role=\"status\" aria-live=\"polite\"></div>';\r\n }\r\n var addClasses = '';\r\n if (this.settings.allowMediaOverlap) {\r\n // Do not remove space before last single quote\r\n addClasses += 'lg-media-overlap ';\r\n }\r\n var ariaLabelledby = this.settings.ariaLabelledby\r\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\r\n : '';\r\n var ariaDescribedby = this.settings.ariaDescribedby\r\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\r\n : '';\r\n var containerClassName = \"lg-container \" + this.settings.addClass + \" \" + (document.body !== this.settings.container ? 'lg-inline' : '');\r\n var closeIcon = this.settings.closable && this.settings.showCloseIcon\r\n ? \"<button type=\\\"button\\\" aria-label=\\\"\" + this.settings.strings['closeGallery'] + \"\\\" id=\\\"\" + this.getIdName('lg-close') + \"\\\" class=\\\"lg-close lg-icon\\\"></button>\"\r\n : '';\r\n var maximizeIcon = this.settings.showMaximizeIcon\r\n ? \"<button type=\\\"button\\\" aria-label=\\\"\" + this.settings.strings['toggleMaximize'] + \"\\\" id=\\\"\" + this.getIdName('lg-maximize') + \"\\\" class=\\\"lg-maximize lg-icon\\\"></button>\"\r\n : '';\r\n var template = \"\\n <div class=\\\"\" + containerClassName + \"\\\" id=\\\"\" + this.getIdName('lg-container') + \"\\\" tabindex=\\\"-1\\\" aria-modal=\\\"true\\\" \" + ariaLabelledby + \" \" + ariaDescribedby + \" role=\\\"dialog\\\"\\n >\\n <div id=\\\"\" + this.getIdName('lg-backdrop') + \"\\\" class=\\\"lg-backdrop\\\"></div>\\n\\n <div id=\\\"\" + this.getIdName('lg-outer') + \"\\\" class=\\\"lg-outer lg-use-css3 lg-css3 lg-hide-items \" + addClasses + \" \\\">\\n\\n <div id=\\\"\" + this.getIdName('lg-content') + \"\\\" class=\\\"lg-content\\\">\\n <div id=\\\"\" + this.getIdName('lg-inner') + \"\\\" class=\\\"lg-inner\\\">\\n </div>\\n \" + controls + \"\\n </div>\\n <div id=\\\"\" + this.getIdName('lg-toolbar') + \"\\\" class=\\\"lg-toolbar lg-group\\\">\\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n </div>\\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\r\n ? subHtmlCont\r\n : '') + \"\\n <div id=\\\"\" + this.getIdName('lg-components') + \"\\\" class=\\\"lg-components\\\">\\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\r\n ? subHtmlCont\r\n : '') + \"\\n </div>\\n </div>\\n </div>\\n \";\r\n $LG(this.settings.container).append(template);\r\n if (document.body !== this.settings.container) {\r\n $LG(this.settings.container).css('position', 'relative');\r\n }\r\n this.outer = this.getElementById('lg-outer');\r\n this.$lgComponents = this.getElementById('lg-components');\r\n this.$backdrop = this.getElementById('lg-backdrop');\r\n this.$container = this.getElementById('lg-container');\r\n this.$inner = this.getElementById('lg-inner');\r\n this.$content = this.getElementById('lg-content');\r\n this.$toolbar = this.getElementById('lg-toolbar');\r\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\r\n var outerClassNames = this.settings.mode + \" \";\r\n this.manageSingleSlideClassName();\r\n if (this.settings.enableDrag) {\r\n outerClassNames += 'lg-grab ';\r\n }\r\n this.outer.addClass(outerClassNames);\r\n this.$inner.css('transition-timing-function', this.settings.easing);\r\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\r\n if (this.settings.download) {\r\n this.$toolbar.append(\"<a id=\\\"\" + this.getIdName('lg-download') + \"\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\" aria-label=\\\"\" + this.settings.strings['download'] + \"\\\" download class=\\\"lg-download lg-icon\\\"></a>\");\r\n }\r\n this.counter();\r\n $LG(window).on(\"resize.lg.global\" + this.lgId + \" orientationchange.lg.global\" + this.lgId, function () {\r\n _this.refreshOnResize();\r\n });\r\n this.hideBars();\r\n this.manageCloseGallery();\r\n this.toggleMaximize();\r\n this.initModules();\r\n };\r\n LightGallery.prototype.refreshOnResize = function () {\r\n if (this.lgOpened) {\r\n var currentGalleryItem = this.galleryItems[this.index];\r\n var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;\r\n this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n if (__slideVideoInfo) {\r\n this.resizeVideoSlide(this.index, this.currentImageSize);\r\n }\r\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n this.outer\r\n .find('.lg-current .lg-dummy-img')\r\n .first()\r\n .attr('style', imgStyle);\r\n }\r\n this.LGel.trigger(lGEvents.containerResize);\r\n }\r\n };\r\n LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {\r\n var lgVideoStyle = this.getVideoContStyle(imageSize);\r\n var currentSlide = this.getSlideItem(index);\r\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\r\n };\r\n /**\r\n * Update slides dynamically.\r\n * Add, edit or delete slides dynamically when lightGallery is opened.\r\n * Modify the current gallery items and pass it via updateSlides method\r\n * @note\r\n * - Do not mutate existing lightGallery items directly.\r\n * - Always pass new list of gallery items\r\n * - You need to take care of thumbnails outside the gallery if any\r\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\r\n * @param items Gallery items\r\n * @param index After the update operation, which slide gallery should navigate to\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n *\r\n * // Adding slides dynamically\r\n * let galleryItems = [\r\n * // Access existing lightGallery items\r\n * // galleryItems are automatically generated internally from the gallery HTML markup\r\n * // or directly from galleryItems when dynamic gallery is used\r\n * ...plugin.galleryItems,\r\n * ...[\r\n * {\r\n * src: 'img/img-1.png',\r\n * thumb: 'img/thumb1.png',\r\n * },\r\n * ],\r\n * ];\r\n * plugin.updateSlides(\r\n * galleryItems,\r\n * plugin.index,\r\n * );\r\n *\r\n *\r\n * // Remove slides dynamically\r\n * galleryItems = JSON.parse(\r\n * JSON.stringify(updateSlideInstance.galleryItems),\r\n * );\r\n * galleryItems.shift();\r\n * updateSlideInstance.updateSlides(galleryItems, 1);\r\n * @see <a href=\"/demos/update-slides/\">Demo</a>\r\n */\r\n LightGallery.prototype.updateSlides = function (items, index) {\r\n if (this.index > items.length - 1) {\r\n this.index = items.length - 1;\r\n }\r\n if (items.length === 1) {\r\n this.index = 0;\r\n }\r\n if (!items.length) {\r\n this.closeGallery();\r\n return;\r\n }\r\n var currentSrc = this.galleryItems[index].src;\r\n this.galleryItems = items;\r\n this.updateControls();\r\n this.$inner.empty();\r\n this.currentItemsInDom = [];\r\n var _index = 0;\r\n // Find the current index based on source value of the slide\r\n this.galleryItems.some(function (galleryItem, itemIndex) {\r\n if (galleryItem.src === currentSrc) {\r\n _index = itemIndex;\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\r\n this.loadContent(_index, true);\r\n this.getSlideItem(_index).addClass('lg-current');\r\n this.index = _index;\r\n this.updateCurrentCounter(_index);\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n // Get gallery items based on multiple conditions\r\n LightGallery.prototype.getItems = function () {\r\n // Gallery items\r\n this.items = [];\r\n if (!this.settings.dynamic) {\r\n if (this.settings.selector === 'this') {\r\n this.items.push(this.el);\r\n }\r\n else if (this.settings.selector) {\r\n if (typeof this.settings.selector === 'string') {\r\n if (this.settings.selectWithin) {\r\n var selectWithin = $LG(this.settings.selectWithin);\r\n this.items = selectWithin\r\n .find(this.settings.selector)\r\n .get();\r\n }\r\n else {\r\n this.items = this.el.querySelectorAll(this.settings.selector);\r\n }\r\n }\r\n else {\r\n this.items = this.settings.selector;\r\n }\r\n }\r\n else {\r\n this.items = this.el.children;\r\n }\r\n return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\r\n }\r\n else {\r\n return this.settings.dynamicEl || [];\r\n }\r\n };\r\n LightGallery.prototype.shouldHideScrollbar = function () {\r\n return (this.settings.hideScrollbar &&\r\n document.body === this.settings.container);\r\n };\r\n LightGallery.prototype.hideScrollbar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\r\n var bodyRect = document.documentElement.getBoundingClientRect();\r\n var scrollbarWidth = window.innerWidth - bodyRect.width;\r\n $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');\r\n $LG(document.body).addClass('lg-overlay-open');\r\n };\r\n LightGallery.prototype.resetScrollBar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\r\n $LG(document.body).removeClass('lg-overlay-open');\r\n };\r\n /**\r\n * Open lightGallery.\r\n * Open gallery with specific slide by passing index of the slide as parameter.\r\n * @category lGPublicMethods\r\n * @param {Number} index - index of the slide\r\n * @param {HTMLElement} element - Which image lightGallery should zoom from\r\n *\r\n * @example\r\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\r\n * const dynamicGallery = lightGallery($dynamicGallery, {\r\n * dynamic: true,\r\n * dynamicEl: [\r\n * {\r\n * src: 'img/1.jpg',\r\n * thumb: 'img/thumb-1.jpg',\r\n * subHtml: '<h4>Image 1 title</h4><p>Image 1 descriptions.</p>',\r\n * },\r\n * ...\r\n * ],\r\n * });\r\n * $dynamicGallery.addEventListener('click', function () {\r\n * // Starts with third item.(Optional).\r\n * // This is useful if you want use dynamic mode with\r\n * // custom thumbnails (thumbnails outside gallery),\r\n * dynamicGallery.openGallery(2);\r\n * });\r\n *\r\n */\r\n LightGallery.prototype.openGallery = function (index, element) {\r\n var _this = this;\r\n if (index === void 0) { index = this.settings.index; }\r\n // prevent accidental double execution\r\n if (this.lgOpened)\r\n return;\r\n this.lgOpened = true;\r\n this.outer.removeClass('lg-hide-items');\r\n this.hideScrollbar();\r\n // Add display block, but still has opacity 0\r\n this.$container.addClass('lg-show');\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);\r\n this.currentItemsInDom = itemsToBeInsertedToDom;\r\n var items = '';\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n items = items + (\"<div id=\\\"\" + item + \"\\\" class=\\\"lg-item\\\"></div>\");\r\n });\r\n this.$inner.append(items);\r\n this.addHtml(index);\r\n var transform = '';\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;\r\n if (!this.settings.allowMediaOverlap) {\r\n this.setMediaContainerPosition(top, bottom);\r\n }\r\n var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;\r\n if (this.zoomFromOrigin && element) {\r\n this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);\r\n }\r\n if (!this.zoomFromOrigin || !transform) {\r\n this.outer.addClass(this.settings.startClass);\r\n this.getSlideItem(index).removeClass('lg-complete');\r\n }\r\n var timeout = this.settings.zoomFromOrigin\r\n ? 100\r\n : this.settings.backdropDuration;\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-components-open');\r\n }, timeout);\r\n this.index = index;\r\n this.LGel.trigger(lGEvents.beforeOpen);\r\n // add class lg-current to remove initial transition\r\n this.getSlideItem(index).addClass('lg-current');\r\n this.lGalleryOn = false;\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $LG(window).scrollTop();\r\n setTimeout(function () {\r\n // Need to check both zoomFromOrigin and transform values as we need to set set the\r\n // default opening animation if user missed to add the lg-size attribute\r\n if (_this.zoomFromOrigin && transform) {\r\n var currentSlide_1 = _this.getSlideItem(index);\r\n currentSlide_1.css('transform', transform);\r\n setTimeout(function () {\r\n currentSlide_1\r\n .addClass('lg-start-progress lg-start-end-progress')\r\n .css('transition-duration', _this.settings.startAnimationDuration + 'ms');\r\n _this.outer.addClass('lg-zoom-from-image');\r\n });\r\n setTimeout(function () {\r\n currentSlide_1.css('transform', 'translate3d(0, 0, 0)');\r\n }, 100);\r\n }\r\n setTimeout(function () {\r\n _this.$backdrop.addClass('in');\r\n _this.$container.addClass('lg-show-in');\r\n }, 10);\r\n setTimeout(function () {\r\n if (_this.settings.trapFocus &&\r\n document.body === _this.settings.container) {\r\n _this.trapFocus();\r\n }\r\n }, _this.settings.backdropDuration + 50);\r\n // lg-visible class resets gallery opacity to 1\r\n if (!_this.zoomFromOrigin || !transform) {\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-visible');\r\n }, _this.settings.backdropDuration);\r\n }\r\n // initiate slide function\r\n _this.slide(index, false, false, false);\r\n _this.LGel.trigger(lGEvents.afterOpen);\r\n });\r\n if (document.body === this.settings.container) {\r\n $LG('html').addClass('lg-on');\r\n }\r\n };\r\n /**\r\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\r\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\r\n * if you have dynamic captions for each media,\r\n * you can provide an appropriate height for the captions via allowMediaOverlap option\r\n */\r\n LightGallery.prototype.getMediaContainerPosition = function () {\r\n if (this.settings.allowMediaOverlap) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n }\r\n var top = this.$toolbar.get().clientHeight || 0;\r\n var subHtml = this.outer.find('.lg-components .lg-sub-html').get();\r\n var captionHeight = this.settings.defaultCaptionHeight ||\r\n (subHtml && subHtml.clientHeight) ||\r\n 0;\r\n var thumbContainer = this.outer.find('.lg-thumb-outer').get();\r\n var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\r\n var bottom = thumbHeight + captionHeight;\r\n return {\r\n top: top,\r\n bottom: bottom,\r\n };\r\n };\r\n LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\r\n if (top === void 0) { top = 0; }\r\n if (bottom === void 0) { bottom = 0; }\r\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\r\n };\r\n LightGallery.prototype.hideBars = function () {\r\n var _this = this;\r\n // Hide controllers if mouse doesn't move for some period\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n if (_this.settings.hideBarsDelay > 0) {\r\n _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n clearTimeout(_this.hideBarTimeout);\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBarTimeout = setTimeout(function () {\r\n _this.outer.addClass('lg-hide-items');\r\n }, _this.settings.hideBarsDelay);\r\n });\r\n _this.outer.trigger('mousemove.lg');\r\n }\r\n }, this.settings.showBarsAfter);\r\n };\r\n LightGallery.prototype.initPictureFill = function ($img) {\r\n if (this.settings.supportLegacyBrowser) {\r\n try {\r\n picturefill({\r\n elements: [$img.get()],\r\n });\r\n }\r\n catch (e) {\r\n console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n LightGallery.prototype.counter = function () {\r\n if (this.settings.counter) {\r\n var counterHtml = \"<div class=\\\"lg-counter\\\" role=\\\"status\\\" aria-live=\\\"polite\\\">\\n <span id=\\\"\" + this.getIdName('lg-counter-current') + \"\\\" class=\\\"lg-counter-current\\\">\" + (this.index + 1) + \" </span> /\\n <span id=\\\"\" + this.getIdName('lg-counter-all') + \"\\\" class=\\\"lg-counter-all\\\">\" + this.galleryItems.length + \" </span></div>\";\r\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\r\n }\r\n };\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n LightGallery.prototype.addHtml = function (index) {\r\n var subHtml;\r\n var subHtmlUrl;\r\n if (this.galleryItems[index].subHtmlUrl) {\r\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\r\n }\r\n else {\r\n subHtml = this.galleryItems[index].subHtml;\r\n }\r\n if (!subHtmlUrl) {\r\n if (subHtml) {\r\n // get first letter of sub-html\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.settings.subHtmlSelectorRelative &&\r\n !this.settings.dynamic) {\r\n subHtml = $LG(this.items)\r\n .eq(index)\r\n .find(subHtml)\r\n .first()\r\n .html();\r\n }\r\n else {\r\n subHtml = $LG(subHtml).first().html();\r\n }\r\n }\r\n }\r\n else {\r\n subHtml = '';\r\n }\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n if (subHtmlUrl) {\r\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\r\n }\r\n else {\r\n this.outer.find('.lg-sub-html').html(subHtml);\r\n }\r\n }\r\n else {\r\n var currentSlide = $LG(this.getSlideItemId(index));\r\n if (subHtmlUrl) {\r\n currentSlide.load(subHtmlUrl);\r\n }\r\n else {\r\n currentSlide.append(\"<div class=\\\"lg-sub-html\\\">\" + subHtml + \"</div>\");\r\n }\r\n }\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .addClass('lg-empty-html');\r\n }\r\n else {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .removeClass('lg-empty-html');\r\n }\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSubHtml, {\r\n index: index,\r\n });\r\n };\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\r\n */\r\n LightGallery.prototype.preload = function (index) {\r\n for (var i = 1; i <= this.settings.preload; i++) {\r\n if (i >= this.galleryItems.length - index) {\r\n break;\r\n }\r\n this.loadContent(index + i, false);\r\n }\r\n for (var j = 1; j <= this.settings.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n this.loadContent(index - j, false);\r\n }\r\n };\r\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n margin-left: -\" + imageSize.width / 2 + \"px;\\n margin-top: -\" + imageSize.height / 2 + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getVideoContStyle = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\r\n var $currentItem;\r\n if (!this.settings.dynamic) {\r\n $currentItem = $LG(this.items).eq(index);\r\n }\r\n if ($currentItem) {\r\n var _dummyImgSrc = void 0;\r\n if (!this.settings.exThumbImage) {\r\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\r\n }\r\n else {\r\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\r\n }\r\n if (!_dummyImgSrc)\r\n return '';\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n var dummyImgContent = \"<img \" + alt + \" style=\\\"\" + imgStyle + \"\\\" class=\\\"lg-dummy-img\\\" src=\\\"\" + _dummyImgSrc + \"\\\" />\";\r\n $currentSlide.addClass('lg-first-slide');\r\n this.outer.addClass('lg-first-slide-loading');\r\n return dummyImgContent;\r\n }\r\n return '';\r\n };\r\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n // Use the thumbnail as dummy image which will be resized to actual image size and\r\n // displayed on top of actual image\r\n var imgContent = '';\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\r\n }\r\n else {\r\n imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\r\n }\r\n var imgMarkup = \"<picture class=\\\"lg-img-wrap\\\"> \" + imgContent + \"</picture>\";\r\n $currentSlide.prepend(imgMarkup);\r\n };\r\n LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {\r\n var mediaObject = $slide.find('.lg-object').first();\r\n if (utils.isImageLoaded(mediaObject.get()) ||\r\n isHTML5VideoWithoutPoster) {\r\n onLoad();\r\n }\r\n else {\r\n mediaObject.on('load.lg error.lg', function () {\r\n onLoad && onLoad();\r\n });\r\n mediaObject.on('error.lg', function () {\r\n onError && onError();\r\n });\r\n }\r\n };\r\n /**\r\n *\r\n * @param $el Current slide item\r\n * @param index\r\n * @param delay Delay is 0 except first time\r\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\r\n * @param isFirstSlide\r\n */\r\n LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {\r\n var _this = this;\r\n this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {\r\n _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);\r\n }, function () {\r\n currentSlide.addClass('lg-complete lg-complete_');\r\n currentSlide.html('<span class=\"lg-error-msg\">' +\r\n _this.settings.strings['mediaLoadingFailed'] +\r\n '</span>');\r\n });\r\n };\r\n LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n // Adding delay for video slides without poster for better performance and user experience\r\n // Videos should start playing once once the gallery is completely loaded\r\n var _speed = isFirstSlide &&\r\n this.getSlideType(currentGalleryItem) === 'video' &&\r\n !currentGalleryItem.poster\r\n ? speed\r\n : 0;\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete lg-complete_');\r\n _this.LGel.trigger(lGEvents.slideItemLoad, {\r\n index: index,\r\n delay: delay || 0,\r\n isFirstSlide: isFirstSlide,\r\n });\r\n }, _speed);\r\n };\r\n LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {\r\n return !!(!this.lGalleryOn &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize);\r\n };\r\n // Add video slideInfo\r\n LightGallery.prototype.addSlideVideoInfo = function (items) {\r\n var _this = this;\r\n items.forEach(function (element, index) {\r\n element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);\r\n if (element.__slideVideoInfo &&\r\n _this.settings.loadYouTubePoster &&\r\n !element.poster &&\r\n element.__slideVideoInfo.youtube) {\r\n element.poster = \"//img.youtube.com/vi/\" + element.__slideVideoInfo.youtube[1] + \"/maxresdefault.jpg\";\r\n }\r\n });\r\n };\r\n /**\r\n * Load slide content into slide.\r\n * This is used to load content into slides that is not visible too\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n */\r\n LightGallery.prototype.loadContent = function (index, rec) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n var $currentSlide = $LG(this.getSlideItemId(index));\r\n var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n var src = currentGalleryItem.src;\r\n var video = currentGalleryItem.video;\r\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\r\n if (currentGalleryItem.responsive) {\r\n var srcDyItms = currentGalleryItem.responsive.split(',');\r\n src = utils.getResponsiveSrc(srcDyItms) || src;\r\n }\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n var lgVideoStyle = '';\r\n var iframe = !!currentGalleryItem.iframe;\r\n var isFirstSlide = !this.lGalleryOn;\r\n // delay for adding complete class. it is 0 except first time.\r\n var delay = 0;\r\n if (isFirstSlide) {\r\n if (this.zoomFromOrigin && this.currentImageSize) {\r\n delay = this.settings.startAnimationDuration + 10;\r\n }\r\n else {\r\n delay = this.settings.backdropDuration + 10;\r\n }\r\n }\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\r\n lgVideoStyle = this.getVideoContStyle(videoSize);\r\n }\r\n if (iframe) {\r\n var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (poster) {\r\n var dummyImg = '';\r\n var hasStartAnimation = isFirstSlide &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize;\r\n if (hasStartAnimation) {\r\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\r\n }\r\n var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (videoInfo) {\r\n var markup = \"<div class=\\\"lg-video-cont \\\" style=\\\"\" + lgVideoStyle + \"\\\"></div>\";\r\n $currentSlide.prepend(markup);\r\n }\r\n else {\r\n this.setImgMarkup(src, $currentSlide, index);\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n this.initPictureFill($img);\r\n }\r\n }\r\n if (poster || videoInfo) {\r\n this.LGel.trigger(lGEvents.hasVideo, {\r\n index: index,\r\n src: src,\r\n html5Video: _html5Video,\r\n hasPoster: !!poster,\r\n });\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });\r\n if (this.lGalleryOn &&\r\n this.settings.appendSubHtmlTo === '.lg-item') {\r\n this.addHtml(index);\r\n }\r\n }\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n // Only for first slide and zoomFromOrigin is enabled\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n setTimeout(function () {\r\n $currentSlide\r\n .removeClass('lg-start-end-progress lg-start-progress')\r\n .removeAttr('style');\r\n }, this.settings.startAnimationDuration + 100);\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n setTimeout(function () {\r\n if (_this.getSlideType(currentGalleryItem) === 'image') {\r\n var alt = currentGalleryItem.alt;\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n $currentSlide\r\n .find('.lg-img-wrap')\r\n .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n _this.initPictureFill($img);\r\n }\r\n }\r\n if (_this.getSlideType(currentGalleryItem) === 'image' ||\r\n (_this.getSlideType(currentGalleryItem) === 'video' &&\r\n poster)) {\r\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);\r\n // load remaining slides once the slide is completely loaded\r\n _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n }, function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n });\r\n }\r\n }, this.settings.startAnimationDuration + 100);\r\n }\r\n }\r\n // SLide content has been added to dom\r\n $currentSlide.addClass('lg-loaded');\r\n if (!this.isFirstSlideWithZoomAnimation() ||\r\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {\r\n this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));\r\n }\r\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\r\n if ((!this.zoomFromOrigin || !this.currentImageSize) &&\r\n $currentSlide.hasClass('lg-complete_') &&\r\n !this.lGalleryOn) {\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete');\r\n }, this.settings.backdropDuration);\r\n }\r\n // Content loaded\r\n // Need to set lGalleryOn before calling preload function\r\n this.lGalleryOn = true;\r\n if (rec === true) {\r\n if (!$currentSlide.hasClass('lg-complete_')) {\r\n $currentSlide\r\n .find('.lg-object')\r\n .first()\r\n .on('load.lg error.lg', function () {\r\n _this.preload(index);\r\n });\r\n }\r\n else {\r\n this.preload(index);\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Remove dummy image content and load next slides\r\n * Called only for the first time if zoomFromOrigin animation is enabled\r\n * @param index\r\n * @param $currentSlide\r\n * @param speed\r\n */\r\n LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {\r\n var _this = this;\r\n setTimeout(function () {\r\n $currentSlide.find('.lg-dummy-img').remove();\r\n $currentSlide.removeClass('lg-first-slide');\r\n _this.outer.removeClass('lg-first-slide-loading');\r\n _this.isDummyImageRemoved = true;\r\n _this.preload(index);\r\n }, speed + 300);\r\n };\r\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\r\n var _this = this;\r\n if (numberOfItems === void 0) { numberOfItems = 0; }\r\n var itemsToBeInsertedToDom = [];\r\n // Minimum 2 items should be there\r\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\r\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\r\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\r\n if (this.galleryItems.length <= 3) {\r\n this.galleryItems.forEach(function (_element, index) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + _this.lgId + \"-\" + index);\r\n });\r\n return itemsToBeInsertedToDom;\r\n }\r\n if (index < (this.galleryItems.length - 1) / 2) {\r\n for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\r\n }\r\n }\r\n else {\r\n for (var idx = index; idx <= this.galleryItems.length - 1 &&\r\n idx < index + possibleNumberOfItems / 2; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\r\n }\r\n }\r\n if (this.settings.loop) {\r\n if (index === this.galleryItems.length - 1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\r\n }\r\n else if (index === 0) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\r\n }\r\n }\r\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\r\n }\r\n return itemsToBeInsertedToDom;\r\n };\r\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\r\n var _this = this;\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n if (_this.currentItemsInDom.indexOf(item) === -1) {\r\n _this.$inner.append(\"<div id=\\\"\" + item + \"\\\" class=\\\"lg-item\\\"></div>\");\r\n }\r\n });\r\n this.currentItemsInDom.forEach(function (item) {\r\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\r\n $LG(\"#\" + item).remove();\r\n }\r\n });\r\n return itemsToBeInsertedToDom;\r\n };\r\n /**\r\n * Get previous index of the slide\r\n */\r\n LightGallery.prototype.getPreviousSlideIndex = function () {\r\n var prevIndex = 0;\r\n try {\r\n var currentItemId = this.outer\r\n .find('.lg-current')\r\n .first()\r\n .attr('id');\r\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\r\n }\r\n catch (error) {\r\n prevIndex = 0;\r\n }\r\n return prevIndex;\r\n };\r\n LightGallery.prototype.setDownloadValue = function (index) {\r\n if (this.settings.download) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||\r\n currentGalleryItem.downloadUrl === 'false';\r\n if (hideDownloadBtn) {\r\n this.outer.addClass('lg-hide-download');\r\n }\r\n else {\r\n var $download = this.getElementById('lg-download');\r\n this.outer.removeClass('lg-hide-download');\r\n $download.attr('href', currentGalleryItem.downloadUrl ||\r\n currentGalleryItem.src);\r\n if (currentGalleryItem.download) {\r\n $download.attr('download', currentGalleryItem.download);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\r\n var _this = this;\r\n if (this.lGalleryOn) {\r\n previousSlideItem.addClass('lg-slide-progress');\r\n }\r\n setTimeout(function () {\r\n // remove all transitions\r\n _this.outer.addClass('lg-no-trans');\r\n _this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-next-slide');\r\n if (direction === 'prev') {\r\n //prevslide\r\n currentSlideItem.addClass('lg-prev-slide');\r\n previousSlideItem.addClass('lg-next-slide');\r\n }\r\n else {\r\n // next slide\r\n currentSlideItem.addClass('lg-next-slide');\r\n previousSlideItem.addClass('lg-prev-slide');\r\n }\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function () {\r\n _this.outer.find('.lg-item').removeClass('lg-current');\r\n currentSlideItem.addClass('lg-current');\r\n // reset all transitions\r\n _this.outer.removeClass('lg-no-trans');\r\n }, 50);\r\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\r\n };\r\n /**\r\n * Goto a specific slide.\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n * @param {String} direction - Direction of the slide(next/prev)\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // to go to 3rd slide\r\n * plugin.slide(2);\r\n *\r\n */\r\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\r\n var _this = this;\r\n var prevIndex = this.getPreviousSlideIndex();\r\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\r\n // Prevent multiple call, Required for hsh plugin\r\n if (this.lGalleryOn && prevIndex === index) {\r\n return;\r\n }\r\n var numberOfGalleryItems = this.galleryItems.length;\r\n if (!this.lgBusy) {\r\n if (this.settings.counter) {\r\n this.updateCurrentCounter(index);\r\n }\r\n var currentSlideItem = this.getSlideItem(index);\r\n var previousSlideItem_1 = this.getSlideItem(prevIndex);\r\n var currentGalleryItem = this.galleryItems[index];\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));\r\n this.setDownloadValue(index);\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\r\n this.resizeVideoSlide(index, videoSize);\r\n }\r\n this.LGel.trigger(lGEvents.beforeSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: !!fromTouch,\r\n fromThumb: !!fromThumb,\r\n });\r\n this.lgBusy = true;\r\n clearTimeout(this.hideBarTimeout);\r\n this.arrowDisable(index);\r\n if (!direction) {\r\n if (index < prevIndex) {\r\n direction = 'prev';\r\n }\r\n else if (index > prevIndex) {\r\n direction = 'next';\r\n }\r\n }\r\n if (!fromTouch) {\r\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\r\n }\r\n else {\r\n this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-current lg-next-slide');\r\n var touchPrev = void 0;\r\n var touchNext = void 0;\r\n if (numberOfGalleryItems > 2) {\r\n touchPrev = index - 1;\r\n touchNext = index + 1;\r\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n else if (index === numberOfGalleryItems - 1 &&\r\n prevIndex === 0) {\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n }\r\n else {\r\n touchPrev = 0;\r\n touchNext = 1;\r\n }\r\n if (direction === 'prev') {\r\n this.getSlideItem(touchNext).addClass('lg-next-slide');\r\n }\r\n else {\r\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\r\n }\r\n currentSlideItem.addClass('lg-current');\r\n }\r\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\r\n if (!this.lGalleryOn) {\r\n this.loadContent(index, true);\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.loadContent(index, true);\r\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\r\n if (_this.settings.appendSubHtmlTo !== '.lg-item') {\r\n _this.addHtml(index);\r\n }\r\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n setTimeout(function () {\r\n _this.lgBusy = false;\r\n previousSlideItem_1.removeClass('lg-slide-progress');\r\n _this.LGel.trigger(lGEvents.afterSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: fromTouch,\r\n fromThumb: fromThumb,\r\n });\r\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n this.index = index;\r\n };\r\n LightGallery.prototype.updateCurrentCounter = function (index) {\r\n this.getElementById('lg-counter-current').html(index + 1 + '');\r\n };\r\n LightGallery.prototype.updateCounterTotal = function () {\r\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\r\n };\r\n LightGallery.prototype.getSlideType = function (item) {\r\n if (item.__slideVideoInfo) {\r\n return 'video';\r\n }\r\n else if (item.iframe) {\r\n return 'iframe';\r\n }\r\n else {\r\n return 'image';\r\n }\r\n };\r\n LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {\r\n var distanceX = endCoords.pageX - startCoords.pageX;\r\n var distanceY = endCoords.pageY - startCoords.pageY;\r\n var allowSwipe = false;\r\n if (this.swipeDirection) {\r\n allowSwipe = true;\r\n }\r\n else {\r\n if (Math.abs(distanceX) > 15) {\r\n this.swipeDirection = 'horizontal';\r\n allowSwipe = true;\r\n }\r\n else if (Math.abs(distanceY) > 15) {\r\n this.swipeDirection = 'vertical';\r\n allowSwipe = true;\r\n }\r\n }\r\n if (!allowSwipe) {\r\n return;\r\n }\r\n var $currentSlide = this.getSlideItem(this.index);\r\n if (this.swipeDirection === 'horizontal') {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n // reset opacity and transition duration\r\n this.outer.addClass('lg-dragging');\r\n // move current slide\r\n this.setTranslate($currentSlide, distanceX, 0);\r\n // move next and prev slide with current slide\r\n var width = $currentSlide.get().offsetWidth;\r\n var slideWidthAmount = (width * 15) / 100;\r\n var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\r\n this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);\r\n this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);\r\n }\r\n else if (this.swipeDirection === 'vertical') {\r\n if (this.settings.swipeToClose) {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n this.$container.addClass('lg-dragging-vertical');\r\n var opacity = 1 - Math.abs(distanceY) / window.innerHeight;\r\n this.$backdrop.css('opacity', opacity);\r\n var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\r\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\r\n if (Math.abs(distanceY) > 100) {\r\n this.outer\r\n .addClass('lg-hide-items')\r\n .removeClass('lg-components-open');\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\r\n var _this = this;\r\n var distance;\r\n // keep slide animation for any mode while dragg/swipe\r\n if (this.settings.mode !== 'lg-slide') {\r\n this.outer.addClass('lg-slide');\r\n }\r\n // set transition duration\r\n setTimeout(function () {\r\n _this.$container.removeClass('lg-dragging-vertical');\r\n _this.outer\r\n .removeClass('lg-dragging lg-hide-items')\r\n .addClass('lg-components-open');\r\n var triggerClick = true;\r\n if (_this.swipeDirection === 'horizontal') {\r\n distance = endCoords.pageX - startCoords.pageX;\r\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\r\n if (distance < 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToNextSlide(true);\r\n triggerClick = false;\r\n }\r\n else if (distance > 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToPrevSlide(true);\r\n triggerClick = false;\r\n }\r\n }\r\n else if (_this.swipeDirection === 'vertical') {\r\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\r\n if (_this.settings.closable &&\r\n _this.settings.swipeToClose &&\r\n distance > 100) {\r\n _this.closeGallery();\r\n return;\r\n }\r\n else {\r\n _this.$backdrop.css('opacity', 1);\r\n }\r\n }\r\n _this.outer.find('.lg-item').removeAttr('style');\r\n if (triggerClick &&\r\n Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\r\n // Trigger click if distance is less than 5 pix\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.swipeDirection = undefined;\r\n });\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function () {\r\n if (!_this.outer.hasClass('lg-dragging') &&\r\n _this.settings.mode !== 'lg-slide') {\r\n _this.outer.removeClass('lg-slide');\r\n }\r\n }, this.settings.speed + 100);\r\n };\r\n LightGallery.prototype.enableSwipe = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isMoved = false;\r\n var isSwiping = false;\r\n if (this.settings.enableSwipe) {\r\n this.$inner.on('touchstart.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if (($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) &&\r\n !_this.outer.hasClass('lg-zoomed') &&\r\n !_this.lgBusy &&\r\n e.touches.length === 1) {\r\n isSwiping = true;\r\n _this.touchAction = 'swipe';\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n }\r\n });\r\n this.$inner.on('touchmove.lg', function (e) {\r\n if (isSwiping &&\r\n _this.touchAction === 'swipe' &&\r\n e.touches.length === 1) {\r\n endCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords, e);\r\n isMoved = true;\r\n }\r\n });\r\n this.$inner.on('touchend.lg', function (event) {\r\n if (_this.touchAction === 'swipe') {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n }\r\n else if (isSwiping) {\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.touchAction = undefined;\r\n isSwiping = false;\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.enableDrag = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (this.settings.enableDrag) {\r\n this.outer.on('mousedown.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if ($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) {\r\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n isDraging = true;\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.outer.get().scrollLeft += 1;\r\n _this.outer.get().scrollLeft -= 1;\r\n // *\r\n _this.outer\r\n .removeClass('lg-grab')\r\n .addClass('lg-grabbing');\r\n _this.LGel.trigger(lGEvents.dragStart);\r\n }\r\n }\r\n }\r\n });\r\n $LG(window).on(\"mousemove.lg.global\" + this.lgId, function (e) {\r\n if (isDraging && _this.lgOpened) {\r\n isMoved = true;\r\n endCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords);\r\n _this.LGel.trigger(lGEvents.dragMove);\r\n }\r\n });\r\n $LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var target = $LG(event.target);\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n _this.LGel.trigger(lGEvents.dragEnd);\r\n }\r\n else if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.triggerPosterClick = function () {\r\n var _this = this;\r\n this.$inner.on('click.lg', function (event) {\r\n if (!_this.dragOrSwipeEnabled &&\r\n _this.isPosterElement($LG(event.target))) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageSwipeClass = function () {\r\n var _touchNext = this.index + 1;\r\n var _touchPrev = this.index - 1;\r\n if (this.settings.loop && this.galleryItems.length > 2) {\r\n if (this.index === 0) {\r\n _touchPrev = this.galleryItems.length - 1;\r\n }\r\n else if (this.index === this.galleryItems.length - 1) {\r\n _touchNext = 0;\r\n }\r\n }\r\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\r\n if (_touchPrev > -1) {\r\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\r\n }\r\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\r\n };\r\n /**\r\n * Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.goToNextSlide();\r\n * @see <a href=\"/demos/methods/\">Demo</a>\r\n */\r\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index + 1 < this.galleryItems.length) {\r\n this.index++;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = 0;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-right-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Go to previous slides\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery({});\r\n * plugin.goToPrevSlide();\r\n * @see <a href=\"/demos/methods/\">Demo</a>\r\n *\r\n */\r\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index > 0) {\r\n this.index--;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = this.galleryItems.length - 1;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-left-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.keyPress = function () {\r\n var _this = this;\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (_this.lgOpened &&\r\n _this.settings.escKey === true &&\r\n e.keyCode === 27) {\r\n e.preventDefault();\r\n if (_this.settings.allowMediaOverlap &&\r\n _this.outer.hasClass('lg-can-toggle') &&\r\n _this.outer.hasClass('lg-components-open')) {\r\n _this.outer.removeClass('lg-components-open');\r\n }\r\n else {\r\n _this.closeGallery();\r\n }\r\n }\r\n if (_this.lgOpened && _this.galleryItems.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.arrow = function () {\r\n var _this = this;\r\n this.getElementById('lg-prev').on('click.lg', function () {\r\n _this.goToPrevSlide();\r\n });\r\n this.getElementById('lg-next').on('click.lg', function () {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n LightGallery.prototype.arrowDisable = function (index) {\r\n // Disable arrows if settings.hideControlOnEnd is true\r\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\r\n var $prev = this.getElementById('lg-prev');\r\n var $next = this.getElementById('lg-next');\r\n if (index + 1 === this.galleryItems.length) {\r\n $next.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $next.removeAttr('disabled').removeClass('disabled');\r\n }\r\n if (index === 0) {\r\n $prev.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $prev.removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n };\r\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\r\n if (scaleX === void 0) { scaleX = 1; }\r\n if (scaleY === void 0) { scaleY = 1; }\r\n $el.css('transform', 'translate3d(' +\r\n xValue +\r\n 'px, ' +\r\n yValue +\r\n 'px, 0px) scale3d(' +\r\n scaleX +\r\n ', ' +\r\n scaleY +\r\n ', 1)');\r\n };\r\n LightGallery.prototype.mousewheel = function () {\r\n var _this = this;\r\n var lastCall = 0;\r\n this.outer.on('wheel.lg', function (e) {\r\n if (!e.deltaY || _this.galleryItems.length < 2) {\r\n return;\r\n }\r\n e.preventDefault();\r\n var now = new Date().getTime();\r\n if (now - lastCall < 1000) {\r\n return;\r\n }\r\n lastCall = now;\r\n if (e.deltaY > 0) {\r\n _this.goToNextSlide();\r\n }\r\n else if (e.deltaY < 0) {\r\n _this.goToPrevSlide();\r\n }\r\n });\r\n };\r\n LightGallery.prototype.isSlideElement = function (target) {\r\n return (target.hasClass('lg-outer') ||\r\n target.hasClass('lg-item') ||\r\n target.hasClass('lg-img-wrap'));\r\n };\r\n LightGallery.prototype.isPosterElement = function (target) {\r\n var playButton = this.getSlideItem(this.index)\r\n .find('.lg-video-play-button')\r\n .get();\r\n return (target.hasClass('lg-video-poster') ||\r\n target.hasClass('lg-video-play-button') ||\r\n (playButton && playButton.contains(target.get())));\r\n };\r\n /**\r\n * Maximize minimize inline gallery.\r\n * @category lGPublicMethods\r\n */\r\n LightGallery.prototype.toggleMaximize = function () {\r\n var _this = this;\r\n this.getElementById('lg-maximize').on('click.lg', function () {\r\n _this.$container.toggleClass('lg-inline');\r\n _this.refreshOnResize();\r\n });\r\n };\r\n LightGallery.prototype.invalidateItems = function () {\r\n for (var index = 0; index < this.items.length; index++) {\r\n var element = this.items[index];\r\n var $element = $LG(element);\r\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\r\n }\r\n };\r\n LightGallery.prototype.trapFocus = function () {\r\n var _this = this;\r\n this.$container.get().focus({\r\n preventScroll: true,\r\n });\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var isTabPressed = e.key === 'Tab' || e.keyCode === 9;\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n var focusableEls = utils.getFocusableElements(_this.$container.get());\r\n var firstFocusableEl = focusableEls[0];\r\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstFocusableEl) {\r\n lastFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n else {\r\n if (document.activeElement === lastFocusableEl) {\r\n firstFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageCloseGallery = function () {\r\n var _this = this;\r\n if (!this.settings.closable)\r\n return;\r\n var mousedown = false;\r\n this.getElementById('lg-close').on('click.lg', function () {\r\n _this.closeGallery();\r\n });\r\n if (this.settings.closeOnTap) {\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n this.outer.on('mousedown.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target)) {\r\n mousedown = true;\r\n }\r\n else {\r\n mousedown = false;\r\n }\r\n });\r\n this.outer.on('mousemove.lg', function () {\r\n mousedown = false;\r\n });\r\n this.outer.on('mouseup.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target) && mousedown) {\r\n if (!_this.outer.hasClass('lg-dragging')) {\r\n _this.closeGallery();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Close lightGallery if it is opened.\r\n *\r\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\r\n * @return returns the estimated time to close gallery completely including the close animation duration\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.closeGallery();\r\n *\r\n */\r\n LightGallery.prototype.closeGallery = function (force) {\r\n var _this = this;\r\n if (!this.lgOpened || (!this.settings.closable && !force)) {\r\n return 0;\r\n }\r\n this.LGel.trigger(lGEvents.beforeClose);\r\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\r\n $LG(window).scrollTop(this.prevScrollTop);\r\n }\r\n var currentItem = this.items[this.index];\r\n var transform;\r\n if (this.zoomFromOrigin && currentItem) {\r\n var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;\r\n var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;\r\n var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);\r\n transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);\r\n }\r\n if (this.zoomFromOrigin && transform) {\r\n this.outer.addClass('lg-closing lg-zoom-from-image');\r\n this.getSlideItem(this.index)\r\n .addClass('lg-start-end-progress')\r\n .css('transition-duration', this.settings.startAnimationDuration + 'ms')\r\n .css('transform', transform);\r\n }\r\n else {\r\n this.outer.addClass('lg-hide-items');\r\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\r\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\r\n this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n // Unbind all events added by lightGallery\r\n // @todo\r\n //this.$el.off('.lg.tm');\r\n this.destroyModules();\r\n this.lGalleryOn = false;\r\n this.isDummyImageRemoved = false;\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n clearTimeout(this.hideBarTimeout);\r\n this.hideBarTimeout = false;\r\n $LG('html').removeClass('lg-on');\r\n this.outer.removeClass('lg-visible lg-components-open');\r\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\r\n this.$backdrop.removeClass('in').css('opacity', 0);\r\n var removeTimeout = this.zoomFromOrigin && transform\r\n ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)\r\n : this.settings.backdropDuration;\r\n this.$container.removeClass('lg-show-in');\r\n // Once the closign animation is completed and gallery is invisible\r\n setTimeout(function () {\r\n if (_this.zoomFromOrigin && transform) {\r\n _this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n _this.$container.removeClass('lg-show');\r\n // Reset scrollbar\r\n _this.resetScrollBar();\r\n // Need to remove inline opacity as it is used in the stylesheet as well\r\n _this.$backdrop\r\n .removeAttr('style')\r\n .css('transition-duration', _this.settings.backdropDuration + 'ms');\r\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\r\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\r\n _this.$inner.empty();\r\n if (_this.lgOpened) {\r\n _this.LGel.trigger(lGEvents.afterClose, {\r\n instance: _this,\r\n });\r\n }\r\n if (_this.$container.get()) {\r\n _this.$container.get().blur();\r\n }\r\n _this.lgOpened = false;\r\n }, removeTimeout + 100);\r\n return removeTimeout + 100;\r\n };\r\n LightGallery.prototype.initModules = function () {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n module.init();\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly initiated\");\r\n }\r\n });\r\n };\r\n LightGallery.prototype.destroyModules = function (destroy) {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n if (destroy) {\r\n module.destroy();\r\n }\r\n else {\r\n module.closeGallery && module.closeGallery();\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\r\n }\r\n });\r\n };\r\n /**\r\n * Refresh lightGallery with new set of children.\r\n *\r\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\r\n *\r\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\r\n * @see <a href=\"/demos/dynamic-mode/\">Demo</a>\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // Delete or add children, then call\r\n * plugin.refresh();\r\n *\r\n */\r\n LightGallery.prototype.refresh = function (galleryItems) {\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n if (galleryItems) {\r\n this.galleryItems = galleryItems;\r\n }\r\n else {\r\n this.galleryItems = this.getItems();\r\n }\r\n this.updateControls();\r\n this.openGalleryOnItemClick();\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n LightGallery.prototype.updateControls = function () {\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.updateCounterTotal();\r\n this.manageSingleSlideClassName();\r\n };\r\n LightGallery.prototype.destroyGallery = function () {\r\n this.destroyModules(true);\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n $LG(window).off(\".lg.global\" + this.lgId);\r\n this.LGel.off('.lg');\r\n this.$container.remove();\r\n };\r\n /**\r\n * Destroy lightGallery.\r\n * Destroy lightGallery and its plugin instances completely\r\n *\r\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\r\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\r\n * You can use refresh method most of the times.\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.destroy();\r\n *\r\n */\r\n LightGallery.prototype.destroy = function () {\r\n var closeTimeout = this.closeGallery(true);\r\n if (closeTimeout) {\r\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\r\n }\r\n else {\r\n this.destroyGallery();\r\n }\r\n return closeTimeout;\r\n };\r\n return LightGallery;\r\n}());\n\nfunction lightGallery(el, options) {\r\n return new LightGallery(el, options);\r\n}\n\nexport default lightGallery;\n//# sourceMappingURL=lightgallery.es5.js.map\n","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar videoSettings = {\r\n autoplayFirstVideo: true,\r\n youTubePlayerParams: false,\r\n vimeoPlayerParams: false,\r\n wistiaPlayerParams: false,\r\n gotoNextSlideOnVideoEnd: true,\r\n autoplayVideoOnSlide: false,\r\n videojs: false,\r\n videojsTheme: '',\r\n videojsOptions: {},\r\n};\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar param = function (obj) {\r\n return Object.keys(obj)\r\n .map(function (k) {\r\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\r\n })\r\n .join('&');\r\n};\r\nvar paramsToObject = function (url) {\r\n var paramas = url\r\n .slice(1)\r\n .split('&')\r\n .map(function (p) { return p.split('='); })\r\n .reduce(function (obj, pair) {\r\n var _a = pair.map(decodeURIComponent), key = _a[0], value = _a[1];\r\n obj[key] = value;\r\n return obj;\r\n }, {});\r\n return paramas;\r\n};\r\nvar getYouTubeParams = function (videoInfo, youTubePlayerParamsSettings) {\r\n if (!videoInfo.youtube)\r\n return '';\r\n var slideUrlParams = videoInfo.youtube[2]\r\n ? paramsToObject(videoInfo.youtube[2])\r\n : '';\r\n // For youtube first params gets priority if duplicates found\r\n var defaultYouTubePlayerParams = {\r\n wmode: 'opaque',\r\n autoplay: 0,\r\n mute: 1,\r\n enablejsapi: 1,\r\n };\r\n var playerParamsSettings = youTubePlayerParamsSettings || {};\r\n var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);\r\n var youTubeParams = \"?\" + param(youTubePlayerParams);\r\n return youTubeParams;\r\n};\r\nvar isYouTubeNoCookie = function (url) {\r\n return url.includes('youtube-nocookie.com');\r\n};\r\nvar getVimeoURLParams = function (defaultParams, videoInfo) {\r\n if (!videoInfo || !videoInfo.vimeo)\r\n return '';\r\n var urlParams = videoInfo.vimeo[2] || '';\r\n var defaultPlayerParams = defaultParams && Object.keys(defaultParams).length !== 0\r\n ? '&' + param(defaultParams)\r\n : '';\r\n // Support private video\r\n var urlWithHash = videoInfo.vimeo[0].split('/').pop() || '';\r\n var urlWithHashWithParams = urlWithHash.split('?')[0] || '';\r\n var hash = urlWithHashWithParams.split('#')[0];\r\n var isPrivate = videoInfo.vimeo[1] !== hash;\r\n if (isPrivate) {\r\n urlParams = urlParams.replace(\"/\" + hash, '');\r\n }\r\n urlParams =\r\n urlParams[0] == '?' ? '&' + urlParams.slice(1) : urlParams || '';\r\n // For vimeo last params gets priority if duplicates found\r\n var vimeoPlayerParams = \"?autoplay=0&muted=1\" + (isPrivate ? \"&h=\" + hash : '') + defaultPlayerParams + urlParams;\r\n return vimeoPlayerParams;\r\n};\n\n/**\r\n * Video module for lightGallery\r\n * Supports HTML5, YouTube, Vimeo, wistia videos\r\n *\r\n *\r\n * @ref Wistia\r\n * https://wistia.com/support/integrations/wordpress(How to get url)\r\n * https://wistia.com/support/developers/embed-options#using-embed-options\r\n * https://wistia.com/support/developers/player-api\r\n * https://wistia.com/support/developers/construct-an-embed-code\r\n * http://jsfiddle.net/xvnm7xLm/\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video\r\n * https://wistia.com/support/embed-and-share/sharing-videos\r\n * https://private-sharing.wistia.com/medias/mwhrulrucj\r\n *\r\n * @ref Youtube\r\n * https://developers.google.com/youtube/player_parameters#enablejsapi\r\n * https://developers.google.com/youtube/iframe_api_reference\r\n * https://developer.chrome.com/blog/autoplay/#iframe-delegation\r\n *\r\n * @ref Vimeo\r\n * https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url\r\n * https://vimeo.zendesk.com/hc/en-us/articles/360000121668-Starting-playback-at-a-specific-timecode\r\n * https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters\r\n */\r\nvar Video = /** @class */ (function () {\r\n function Video(instance) {\r\n // get lightGallery core plugin instance\r\n this.core = instance;\r\n this.settings = __assign(__assign({}, videoSettings), this.core.settings);\r\n return this;\r\n }\r\n Video.prototype.init = function () {\r\n var _this = this;\r\n /**\r\n * Event triggered when video url found without poster\r\n * Append video HTML\r\n * Play if autoplayFirstVideo is true\r\n */\r\n this.core.LGel.on(lGEvents.hasVideo + \".video\", this.onHasVideo.bind(this));\r\n this.core.LGel.on(lGEvents.posterClick + \".video\", function () {\r\n var $el = _this.core.getSlideItem(_this.core.index);\r\n _this.loadVideoOnPosterClick($el);\r\n });\r\n this.core.LGel.on(lGEvents.slideItemLoad + \".video\", this.onSlideItemLoad.bind(this));\r\n // @desc fired immediately before each slide transition.\r\n this.core.LGel.on(lGEvents.beforeSlide + \".video\", this.onBeforeSlide.bind(this));\r\n // @desc fired immediately after each slide transition.\r\n this.core.LGel.on(lGEvents.afterSlide + \".video\", this.onAfterSlide.bind(this));\r\n };\r\n /**\r\n * @desc Event triggered when a slide is completely loaded\r\n *\r\n * @param {Event} event - lightGalley custom event\r\n */\r\n Video.prototype.onSlideItemLoad = function (event) {\r\n var _this = this;\r\n var _a = event.detail, isFirstSlide = _a.isFirstSlide, index = _a.index;\r\n // Should check the active slide as well as user may have moved to different slide before the first slide is loaded\r\n if (this.settings.autoplayFirstVideo &&\r\n isFirstSlide &&\r\n index === this.core.index) {\r\n // Delay is just for the transition effect on video load\r\n setTimeout(function () {\r\n _this.loadAndPlayVideo(index);\r\n }, 200);\r\n }\r\n // Should not call on first slide. should check only if the slide is active\r\n if (!isFirstSlide &&\r\n this.settings.autoplayVideoOnSlide &&\r\n index === this.core.index) {\r\n this.loadAndPlayVideo(index);\r\n }\r\n };\r\n /**\r\n * @desc Event triggered when video url or poster found\r\n * Append video HTML is poster is not given\r\n * Play if autoplayFirstVideo is true\r\n *\r\n * @param {Event} event - Javascript Event object.\r\n */\r\n Video.prototype.onHasVideo = function (event) {\r\n var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;\r\n if (!hasPoster) {\r\n // All functions are called separately if poster exist in loadVideoOnPosterClick function\r\n this.appendVideos(this.core.getSlideItem(index), {\r\n src: src,\r\n addClass: 'lg-object',\r\n index: index,\r\n html5Video: html5Video,\r\n });\r\n // Automatically navigate to next slide once video reaches the end.\r\n this.gotoNextSlideOnVideoEnd(src, index);\r\n }\r\n };\r\n /**\r\n * @desc fired immediately before each slide transition.\r\n * Pause the previous video\r\n * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.\r\n *\r\n * @param {Event} event - Javascript Event object.\r\n * @param {number} prevIndex - Previous index of the slide.\r\n * @param {number} index - Current index of the slide\r\n */\r\n Video.prototype.onBeforeSlide = function (event) {\r\n if (this.core.lGalleryOn) {\r\n var prevIndex = event.detail.prevIndex;\r\n this.pauseVideo(prevIndex);\r\n }\r\n };\r\n /**\r\n * @desc fired immediately after each slide transition.\r\n * Play video if autoplayVideoOnSlide option is enabled.\r\n *\r\n * @param {Event} event - Javascript Event object.\r\n * @param {number} prevIndex - Previous index of the slide.\r\n * @param {number} index - Current index of the slide\r\n * @todo should check on onSlideLoad as well if video is not loaded on after slide\r\n */\r\n Video.prototype.onAfterSlide = function (event) {\r\n var _this = this;\r\n var _a = event.detail, index = _a.index, prevIndex = _a.prevIndex;\r\n // Do not call on first slide\r\n var $slide = this.core.getSlideItem(index);\r\n if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {\r\n if ($slide.hasClass('lg-complete')) {\r\n setTimeout(function () {\r\n _this.loadAndPlayVideo(index);\r\n }, 100);\r\n }\r\n }\r\n };\r\n Video.prototype.loadAndPlayVideo = function (index) {\r\n var $slide = this.core.getSlideItem(index);\r\n var currentGalleryItem = this.core.galleryItems[index];\r\n if (currentGalleryItem.poster) {\r\n this.loadVideoOnPosterClick($slide, true);\r\n }\r\n else {\r\n this.playVideo(index);\r\n }\r\n };\r\n /**\r\n * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.\r\n * @param {number} index - Index of the slide\r\n */\r\n Video.prototype.playVideo = function (index) {\r\n this.controlVideo(index, 'play');\r\n };\r\n /**\r\n * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.\r\n * @param {number} index - Index of the slide\r\n */\r\n Video.prototype.pauseVideo = function (index) {\r\n this.controlVideo(index, 'pause');\r\n };\r\n Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {\r\n var video = '';\r\n var videoInfo = this.core.galleryItems[index]\r\n .__slideVideoInfo || {};\r\n var currentGalleryItem = this.core.galleryItems[index];\r\n var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;\r\n videoTitle = videoTitle ? 'title=\"' + videoTitle + '\"' : '';\r\n var commonIframeProps = \"allowtransparency=\\\"true\\\"\\n frameborder=\\\"0\\\"\\n scrolling=\\\"no\\\"\\n allowfullscreen\\n mozallowfullscreen\\n webkitallowfullscreen\\n oallowfullscreen\\n msallowfullscreen\";\r\n if (videoInfo.youtube) {\r\n var videoId = 'lg-youtube' + index;\r\n var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);\r\n var isYouTubeNoCookieURL = isYouTubeNoCookie(src);\r\n var youtubeURL = isYouTubeNoCookieURL\r\n ? '//www.youtube-nocookie.com/'\r\n : '//www.youtube.com/';\r\n video = \"<iframe allow=\\\"autoplay\\\" id=\" + videoId + \" class=\\\"lg-video-object lg-youtube \" + addClass + \"\\\" \" + videoTitle + \" src=\\\"\" + youtubeURL + \"embed/\" + (videoInfo.youtube[1] + youTubeParams) + \"\\\" \" + commonIframeProps + \"></iframe>\";\r\n }\r\n else if (videoInfo.vimeo) {\r\n var videoId = 'lg-vimeo' + index;\r\n var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);\r\n video = \"<iframe allow=\\\"autoplay\\\" id=\" + videoId + \" class=\\\"lg-video-object lg-vimeo \" + addClass + \"\\\" \" + videoTitle + \" src=\\\"//player.vimeo.com/video/\" + (videoInfo.vimeo[1] + playerParams) + \"\\\" \" + commonIframeProps + \"></iframe>\";\r\n }\r\n else if (videoInfo.wistia) {\r\n var wistiaId = 'lg-wistia' + index;\r\n var playerParams = param(this.settings.wistiaPlayerParams);\r\n playerParams = playerParams ? '?' + playerParams : '';\r\n video = \"<iframe allow=\\\"autoplay\\\" id=\\\"\" + wistiaId + \"\\\" src=\\\"//fast.wistia.net/embed/iframe/\" + (videoInfo.wistia[4] + playerParams) + \"\\\" \" + videoTitle + \" class=\\\"wistia_embed lg-video-object lg-wistia \" + addClass + \"\\\" name=\\\"wistia_embed\\\" \" + commonIframeProps + \"></iframe>\";\r\n }\r\n else if (videoInfo.html5) {\r\n var html5VideoMarkup = '';\r\n for (var i = 0; i < html5Video.source.length; i++) {\r\n html5VideoMarkup += \"<source src=\\\"\" + html5Video.source[i].src + \"\\\" type=\\\"\" + html5Video.source[i].type + \"\\\">\";\r\n }\r\n if (html5Video.tracks) {\r\n var _loop_1 = function (i) {\r\n var trackAttributes = '';\r\n var track = html5Video.tracks[i];\r\n Object.keys(track || {}).forEach(function (key) {\r\n trackAttributes += key + \"=\\\"\" + track[key] + \"\\\" \";\r\n });\r\n html5VideoMarkup += \"<track \" + trackAttributes + \">\";\r\n };\r\n for (var i = 0; i < html5Video.tracks.length; i++) {\r\n _loop_1(i);\r\n }\r\n }\r\n var html5VideoAttrs_1 = '';\r\n var videoAttributes_1 = html5Video.attributes || {};\r\n Object.keys(videoAttributes_1 || {}).forEach(function (key) {\r\n html5VideoAttrs_1 += key + \"=\\\"\" + videoAttributes_1[key] + \"\\\" \";\r\n });\r\n video = \"<video class=\\\"lg-video-object lg-html5 \" + (this.settings.videojs && this.settings.videojsTheme\r\n ? this.settings.videojsTheme + ' '\r\n : '') + \" \" + (this.settings.videojs ? ' video-js' : '') + \"\\\" \" + html5VideoAttrs_1 + \">\\n \" + html5VideoMarkup + \"\\n Your browser does not support HTML5 video.\\n </video>\";\r\n }\r\n return video;\r\n };\r\n /**\r\n * @desc - Append videos to the slide\r\n *\r\n * @param {HTMLElement} el - slide element\r\n * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo\r\n */\r\n Video.prototype.appendVideos = function (el, videoParams) {\r\n var _a;\r\n var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);\r\n el.find('.lg-video-cont').append(videoHtml);\r\n var $videoElement = el.find('.lg-video-object').first();\r\n if (videoParams.html5Video) {\r\n $videoElement.on('mousedown.lg.video', function (e) {\r\n e.stopPropagation();\r\n });\r\n }\r\n if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {\r\n try {\r\n return videojs($videoElement.get(), this.settings.videojsOptions);\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included videojs');\r\n }\r\n }\r\n };\r\n Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {\r\n var _this = this;\r\n var $videoElement = this.core\r\n .getSlideItem(index)\r\n .find('.lg-video-object')\r\n .first();\r\n var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};\r\n if (this.settings.gotoNextSlideOnVideoEnd) {\r\n if (videoInfo.html5) {\r\n $videoElement.on('ended', function () {\r\n _this.core.goToNextSlide();\r\n });\r\n }\r\n else if (videoInfo.vimeo) {\r\n try {\r\n // https://github.com/vimeo/player.js/#ended\r\n new Vimeo.Player($videoElement.get()).on('ended', function () {\r\n _this.core.goToNextSlide();\r\n });\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');\r\n }\r\n }\r\n else if (videoInfo.wistia) {\r\n try {\r\n window._wq = window._wq || [];\r\n // @todo Event is gettign triggered multiple times\r\n window._wq.push({\r\n id: $videoElement.attr('id'),\r\n onReady: function (video) {\r\n video.bind('end', function () {\r\n _this.core.goToNextSlide();\r\n });\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');\r\n }\r\n }\r\n }\r\n };\r\n Video.prototype.controlVideo = function (index, action) {\r\n var $videoElement = this.core\r\n .getSlideItem(index)\r\n .find('.lg-video-object')\r\n .first();\r\n var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};\r\n if (!$videoElement.get())\r\n return;\r\n if (videoInfo.youtube) {\r\n try {\r\n $videoElement.get().contentWindow.postMessage(\"{\\\"event\\\":\\\"command\\\",\\\"func\\\":\\\"\" + action + \"Video\\\",\\\"args\\\":\\\"\\\"}\", '*');\r\n }\r\n catch (e) {\r\n console.error(\"lightGallery:- \" + e);\r\n }\r\n }\r\n else if (videoInfo.vimeo) {\r\n try {\r\n new Vimeo.Player($videoElement.get())[action]();\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');\r\n }\r\n }\r\n else if (videoInfo.html5) {\r\n if (this.settings.videojs) {\r\n try {\r\n videojs($videoElement.get())[action]();\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included videojs');\r\n }\r\n }\r\n else {\r\n $videoElement.get()[action]();\r\n }\r\n }\r\n else if (videoInfo.wistia) {\r\n try {\r\n window._wq = window._wq || [];\r\n // @todo Find a way to destroy wistia player instance\r\n window._wq.push({\r\n id: $videoElement.attr('id'),\r\n onReady: function (video) {\r\n video[action]();\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');\r\n }\r\n }\r\n };\r\n Video.prototype.loadVideoOnPosterClick = function ($el, forcePlay) {\r\n var _this = this;\r\n // check slide has poster\r\n if (!$el.hasClass('lg-video-loaded')) {\r\n // check already video element present\r\n if (!$el.hasClass('lg-has-video')) {\r\n $el.addClass('lg-has-video');\r\n var _html = void 0;\r\n var _src = this.core.galleryItems[this.core.index].src;\r\n var video = this.core.galleryItems[this.core.index].video;\r\n if (video) {\r\n _html =\r\n typeof video === 'string' ? JSON.parse(video) : video;\r\n }\r\n var videoJsPlayer_1 = this.appendVideos($el, {\r\n src: _src,\r\n addClass: '',\r\n index: this.core.index,\r\n html5Video: _html,\r\n });\r\n this.gotoNextSlideOnVideoEnd(_src, this.core.index);\r\n var $tempImg = $el.find('.lg-object').first().get();\r\n // @todo make sure it is working\r\n $el.find('.lg-video-cont').first().append($tempImg);\r\n $el.addClass('lg-video-loading');\r\n videoJsPlayer_1 &&\r\n videoJsPlayer_1.ready(function () {\r\n videoJsPlayer_1.on('loadedmetadata', function () {\r\n _this.onVideoLoadAfterPosterClick($el, _this.core.index);\r\n });\r\n });\r\n $el.find('.lg-video-object')\r\n .first()\r\n .on('load.lg error.lg loadedmetadata.lg', function () {\r\n setTimeout(function () {\r\n _this.onVideoLoadAfterPosterClick($el, _this.core.index);\r\n }, 50);\r\n });\r\n }\r\n else {\r\n this.playVideo(this.core.index);\r\n }\r\n }\r\n else if (forcePlay) {\r\n this.playVideo(this.core.index);\r\n }\r\n };\r\n Video.prototype.onVideoLoadAfterPosterClick = function ($el, index) {\r\n $el.addClass('lg-video-loaded');\r\n this.playVideo(index);\r\n };\r\n Video.prototype.destroy = function () {\r\n this.core.LGel.off('.lg.video');\r\n this.core.LGel.off('.video');\r\n };\r\n return Video;\r\n}());\n\nexport default Video;\n//# sourceMappingURL=lg-video.es5.js.map\n","import api from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./lightgallery.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../laravel-mix/node_modules/css-loader/dist/cjs.js??clonedRuleSet-13.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-13.use[2]!./lg-video.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * MEDIA-VIEWER.JS\n */\n\nimport lightGallery from \"lightgallery\";\nimport lgVideo from \"lightgallery/plugins/video\";\nimport \"lightgallery/css/lightgallery.css\";\nimport \"lightgallery/css/lg-video.css\";\n\nexport default class MediaViewer {\n\n\tstatic init() {\n\t\treturn new MediaViewer();\n\t}\n\n\tconstructor() {\n\t\tconst lightGalleries = document.querySelectorAll(\".media-viewer\");\n\t\tconst instances = [];\n\t\tconst config = {\n\t\t\tselector: \".media-viewer-item\",\n\t\t\tlicenseKey: atob(\"SEo3S04tU1RHUjctUjhLR0YtQ1UzVzM=\"),\n\t\t\tplugins: [lgVideo],\n\t\t\tdownload: false,\n\t\t\tmobileSettings: {\n\t\t\t\tshowCloseIcon: true,\n\t\t\t\tdownload: false,\n\t\t\t},\n\t\t};\n\t\t\n\t\tif (lightGalleries.length === 0) return;\n\n\t\tlightGalleries.forEach((gallery) => {\n\t\t\tlet instance = lightGallery(gallery, config);\n\t\t\tinstances.push(instance);\n\n\t\t\t// adds a superflous history entry. This enables pressing the 'back' button \n\t\t\t// in the browser and closing the gallery without jumping back to previous page\n\t\t\tgallery.addEventListener('lgAfterOpen', (event) => {\n\t\t\t\thistory.pushState({ lg: \"close\" }, null, window.location.href); \t\n\t\t\t});\n\n\t\t\t// If the proper close button is used in the lightgallery, \n\t\t\t// the superflous history entry has to be removed\n\t\t\tgallery.addEventListener('lgBeforeClose', (event) => {\n\t\t\t\tif (history.state?.lg === \"close\") history.back();\n\t\t\t});\n\t\t});\n\n\t\t// close gallery when user clicks 'back'\n\t\twindow.onpopstate = function(event) { \n\t\t\tinstances.forEach((instance) => {\n\t\t\t\tinstance.closeGallery();\n\t\t\t});\n\t\t}\n\t}\n}\n","const TRIGGER_TYPE_TIME = 'time';\nconst TRIGGER_TYPE_SCROLL = 'scroll';\n\nexport default class Modal {\n\n\tstatic initAll() {\n\t\tconst modalTriggers = document.querySelectorAll(`[data-modal-trigger]`);\n\t\tconst modalsWithAutoTrigger = document.querySelectorAll('.modal[data-trigger-type=\"scroll\"], .modal[data-trigger-type=\"time\"]');\n\t\tconst activeModals = document.querySelectorAll('.modal.active');\n\n\t\t// init all elements to trigger the modal\n\t\tmodalTriggers.forEach((triggerElement) => {\n\t\t\ttriggerElement.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tlet selector = triggerElement.getAttribute('data-modal-trigger');\n\t\t\t\tlet modal = document.querySelector(selector);\n\t\t\t\tnew Modal(modal).show();\n\t\t\t});\n\t\t});\n\n\t\t// init already active modals\n\t\tactiveModals.forEach((modal) => new Modal(modal));\n\n\t\t// init modals that are triggered automatically\n\t\tmodalsWithAutoTrigger.forEach((modal) => new Modal(modal));\n\t}\n\n\tconstructor(modalElement) {\n\t\tif (!modalElement) {\n\t\t\tconsole.error('Can\\'t init modal with an undefined or null modal element ');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initTime = new Date();\n\t\tthis.element = modalElement;\n\t\tthis.wrapper = this.element.querySelector('.modal__wrapper');\n\t\tthis.panel = this.element.querySelector('.modal__panel');\n\t\tthis.dismissers = this.element.querySelectorAll('[data-modal-dismiss=\"1\"], [data-modal-dismiss=\"true\"]');\n\t\tthis.closeOnClickOutside = !!this.element.getAttribute('data-close-on-click-outside');\n\t\tthis.triggerType = this.element.getAttribute('data-trigger-type');\n\t\tthis.triggerWaitingPeriod = this.element.getAttribute('data-trigger-waiting-period');\n\n\t\t// close on click outside the modal, if enabled\n\t\tthis.wrapper.addEventListener('click', (e) => {\n\t\t\tlet isOutsideClick = !this.panel.contains(e.target);\n\n\t\t\tif (isOutsideClick && this.closeOnClickOutside)\n\t\t\t\tthis.hide();\n\t\t});\n\n\t\t// close on click on an element having the data-modal-dismiss attribute\n\t\tthis.dismissers.forEach((buttonDismiss) => {\n\t\t\tbuttonDismiss.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.hide()\n\t\t\t});\n\t\t});\n\n\t\tif (this.triggerType == TRIGGER_TYPE_TIME && this.triggerWaitingPeriod && !isNaN(this.triggerWaitingPeriod))\n\t\t\tthis.triggerAfter(this.triggerWaitingPeriod);\n\n\t\tif (this.triggerType == TRIGGER_TYPE_SCROLL)\n\t\t\tthis.triggerWhenVisible();\n\t}\n\n\tisVisible() {\n\t\treturn this.element.classList.contains('active');\n\t}\n\n\tasync triggerAfter(seconds) {\n\t\tawait this.pause(seconds * 1000);\n\t\tthis.show();\n\t\tthis.triggerExecuted = true;\n\t}\n\n\tasync triggerWhenVisible() {\n\t\tawait this.pause(this.triggerWaitingPeriod * 1000);\n\n\t\tlet observer = new IntersectionObserver((entries) => {\n\t\t\tif (this.triggerExecuted || entries[0].isIntersecting !== true)\n\t\t\t\treturn;\n\n\t\t\tthis.show();\n\t\t\tthis.triggerExecuted = true;\n\t\t});\n\n\t\tlet popupPageModule = this.element.closest('.page__module');\n\t\tif (popupPageModule)\n\t\t\tobserver.observe(popupPageModule);\n\t}\n\n\tasync show() {\n\t\tdocument.body.classList.add('modal-opened');\n\t\tthis.wrapper.scrollTop = 0;\n\n\t\tthis.element.classList.add('active');\n\t\tthis.element.classList.add('entering');\n\t\tawait this.pause(5);\n\t\tthis.element.classList.replace('entering', 'entering-to');\n\t\tawait this.pause(5);\n\t\tthis.element.classList.remove('entering-to');\n\t}\n\n\tasync hide() {\n\t\tthis.element.classList.add('leaving');\n\t\tawait this.pause(5);\n\t\tthis.element.classList.replace('leaving', 'leaving-to');\n\t\tawait this.pause(300);\n\t\tthis.element.classList.remove('leaving-to', 'active');\n\t\tdocument.body.classList.remove('modal-opened');\n\t}\n\n\tasync pause(ms) {\n\t\tms ??= 1;\n\t\tlet promise = new Promise((resolve) => {\n\t\t\tsetTimeout(() => resolve(), ms);\n\t\t});\n\t\tawait promise;\n\t}\n}","\nexport default class ResponsiveImage {\n\n static initAll() {\n return new ResponsiveImage();\n }\n\n constructor() {\n window.responsiveResizeObserver = new ResizeObserver((entries) => {\n entries.forEach(entry => {\n var imgWidth = entry.target.getBoundingClientRect().width;\n entry.target.parentNode.querySelectorAll('source').forEach((source) => {\n source.sizes = Math.ceil(imgWidth / window.innerWidth * 100) + 'vw';\n });\n });\n });\n document.querySelectorAll('[data-statamic-responsive-images]').forEach(responsiveImage => {\n responsiveResizeObserver.onload = null;\n responsiveResizeObserver.observe(responsiveImage);\n });\n }\n}","import { IS_MOBILE_DEVICE } from \"../globals\";\n\nexport default class Video {\n\n static initAll() {\n return new Video();\n }\n\n constructor() {\n // all videos with controls enabled\n const videos = document.querySelectorAll('.video-player video[controls]');\n\n if (videos.length === 0)\n return;\n\n videos.forEach((video) => {\n const playButton = video.parentElement.querySelector('.button-play');\n\n if (!playButton)\n return;\n\n if (IS_MOBILE_DEVICE) {\n playButton.remove();\n return;\n }\n \n video.removeAttribute('controls');\n\n playButton.addEventListener('click', () => {\n video.play();\n });\n\n video.addEventListener('play', () => {\n video.setAttribute('controls', 'true');\n playButton.remove();\n });\n });\n }\n}","var t=function(){return t=Object.assign||function(t){for(var i,n=1,s=arguments.length;n<s;n++)for(var a in i=arguments[n])Object.prototype.hasOwnProperty.call(i,a)&&(t[a]=i[a]);return t},t.apply(this,arguments)},i=function(){function i(i,n,s){var a=this;this.endVal=n,this.options=s,this.version=\"2.8.0\",this.defaults={startVal:0,decimalPlaces:0,duration:2,useEasing:!0,useGrouping:!0,useIndianSeparators:!1,smartEasingThreshold:999,smartEasingAmount:333,separator:\",\",decimal:\".\",prefix:\"\",suffix:\"\",enableScrollSpy:!1,scrollSpyDelay:200,scrollSpyOnce:!1},this.finalEndVal=null,this.useEasing=!0,this.countDown=!1,this.error=\"\",this.startVal=0,this.paused=!0,this.once=!1,this.count=function(t){a.startTime||(a.startTime=t);var i=t-a.startTime;a.remaining=a.duration-i,a.useEasing?a.countDown?a.frameVal=a.startVal-a.easingFn(i,0,a.startVal-a.endVal,a.duration):a.frameVal=a.easingFn(i,a.startVal,a.endVal-a.startVal,a.duration):a.frameVal=a.startVal+(a.endVal-a.startVal)*(i/a.duration);var n=a.countDown?a.frameVal<a.endVal:a.frameVal>a.endVal;a.frameVal=n?a.endVal:a.frameVal,a.frameVal=Number(a.frameVal.toFixed(a.options.decimalPlaces)),a.printValue(a.frameVal),i<a.duration?a.rAF=requestAnimationFrame(a.count):null!==a.finalEndVal?a.update(a.finalEndVal):a.options.onCompleteCallback&&a.options.onCompleteCallback()},this.formatNumber=function(t){var i,n,s,e,o=t<0?\"-\":\"\";i=Math.abs(t).toFixed(a.options.decimalPlaces);var r=(i+=\"\").split(\".\");if(n=r[0],s=r.length>1?a.options.decimal+r[1]:\"\",a.options.useGrouping){e=\"\";for(var l=3,h=0,u=0,p=n.length;u<p;++u)a.options.useIndianSeparators&&4===u&&(l=2,h=1),0!==u&&h%l==0&&(e=a.options.separator+e),h++,e=n[p-u-1]+e;n=e}return a.options.numerals&&a.options.numerals.length&&(n=n.replace(/[0-9]/g,(function(t){return a.options.numerals[+t]})),s=s.replace(/[0-9]/g,(function(t){return a.options.numerals[+t]}))),o+a.options.prefix+n+s+a.options.suffix},this.easeOutExpo=function(t,i,n,s){return n*(1-Math.pow(2,-10*t/s))*1024/1023+i},this.options=t(t({},this.defaults),s),this.formattingFn=this.options.formattingFn?this.options.formattingFn:this.formatNumber,this.easingFn=this.options.easingFn?this.options.easingFn:this.easeOutExpo,this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.endVal=this.validateValue(n),this.options.decimalPlaces=Math.max(this.options.decimalPlaces),this.resetDuration(),this.options.separator=String(this.options.separator),this.useEasing=this.options.useEasing,\"\"===this.options.separator&&(this.options.useGrouping=!1),this.el=\"string\"==typeof i?document.getElementById(i):i,this.el?this.printValue(this.startVal):this.error=\"[CountUp] target is null or undefined\",\"undefined\"!=typeof window&&this.options.enableScrollSpy&&(this.error?console.error(this.error,i):(window.onScrollFns=window.onScrollFns||[],window.onScrollFns.push((function(){return a.handleScroll(a)})),window.onscroll=function(){window.onScrollFns.forEach((function(t){return t()}))},this.handleScroll(this)))}return i.prototype.handleScroll=function(t){if(t&&window&&!t.once){var i=window.innerHeight+window.scrollY,n=t.el.getBoundingClientRect(),s=n.top+window.pageYOffset,a=n.top+n.height+window.pageYOffset;a<i&&a>window.scrollY&&t.paused?(t.paused=!1,setTimeout((function(){return t.start()}),t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):(window.scrollY>a||s>i)&&!t.paused&&t.reset()}},i.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},i.prototype.start=function(t){this.error||(this.options.onStartCallback&&this.options.onStartCallback(),t&&(this.options.onCompleteCallback=t),this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},i.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},i.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},i.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},i.prototype.printValue=function(t){var i;if(this.el){var n=this.formattingFn(t);if(null===(i=this.options.plugin)||void 0===i?void 0:i.render)this.options.plugin.render(this.el,n);else if(\"INPUT\"===this.el.tagName)this.el.value=n;else\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=n:this.el.innerHTML=n}},i.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},i.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},i.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},i}();export{i as CountUp};\n","import { CountUp } from 'countup.js';\n\nexport default class NumberAnimation {\n\n\t/**\n\t * Initializes number counter module using inView and CountUp libraries\n\t * Number counter wrapper must have assigned class \"number-counter\"\n\t * Numbers must contain attribute \"data-number-counter\", value of \"data-number\"-attribute of this element will be used\n\t * as target number\n\t */\n\tstatic init() {\n\t\treturn new NumberAnimation();\n\t}\n\n\tconstructor() {\n\t\tthis.animateNumbers();\n\t}\n\n\tanimateNumbers() {\n\t\tconst numbers = document.querySelectorAll('.number-counter *[data-number-counter]');\n\t\n\t\tif (numbers.length === 0)\n\t\t\treturn;\n\t\t\n\t\tnumbers.forEach((number) => {\n\t\t\tlet value = parseFloat(number.dataset.numberCounter);\n\t\t\tif (isNaN(value)) {\n\t\t\t\tvalue = 0.0;\n\t\t\t}\n\t\t\tconst numAnim = new CountUp(number.id, value, {\n\t\t\t\tseparator: '.',\n\t\t\t\tdecimal: ',',\n\t\t\t\tenableScrollSpy: true,\n\t\t\t\tdecimalPlaces: (value % 1 != 0) ? 2 : 0\n\t\t\t});\n\t\n\t\t\tif (!numAnim.error) numAnim.start();\n\t\t\telse throw new Error(numAnim.error);\n\t\t});\n\t}\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { Swiper } from 'swiper';\nimport { Autoplay, Navigation, EffectFade } from 'swiper/modules';\nimport * as Globals from '../globals';\n\nexport default class HeroNico {\n \n static init() {\n return new HeroNico();\n }\n\n constructor() {\n const swiperContainer = document.querySelector('.swiper.hero-nico');\n\n if (swiperContainer === null) return;\n\n this.swiperDelay = swiperContainer.getAttribute('data-swiper-delay');\n \n const config = {\n autoHeight: window.innerWidth <= Globals.BREAKPOINT_LG,\n modules: [Navigation, Autoplay, EffectFade],\n navigation: {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n },\n effect: 'fade',\n fadeEffect: {\n crossFade: true\n },\n loop: true,\n slidesPerView: 1,\n spaceBetween: 0,\n allowTouchMove: false,\n speed: 1500, \n autoplay: {\n delay: this.swiperDelay * 1000, // in milliseconds\n disableOnInteraction: false,\n },\n };\n\n this.swiper = new Swiper(swiperContainer, config);\n this.initProgressbar();\n\n this.swiper.on('slideChangeTransitionEnd', () => {\n this.resetProgressbars();\n this.initProgressbar();\n });\n }\n\n initProgressbar() {\n const delaySeconds = this.swiperDelay;\n const swiperDOM = this.swiper.el;\n const activeSlide = swiperDOM.querySelector(\".swiper-slide-visible\");\n const activeProgressbar = activeSlide.querySelector('.progress-bar');\n\n activeProgressbar.setAttribute('style', 'transition: width linear ' + delaySeconds + 's; width: 100%;');\n }\n\n resetProgressbars() {\n const swiperDOM = this.swiper.el;\n const progressbars = swiperDOM.querySelectorAll('.progress-bar');\n\n progressbars.forEach((bar) => {\n bar.setAttribute('style', 'transition: none; width: 0;');\n });\n }\n}","import { Swiper } from 'swiper';\nimport { Navigation, Autoplay, Pagination } from 'swiper/modules';\n\nexport default class SliderMartin {\n\n static init(swiperContainer) {\n return new SliderMartin(swiperContainer);\n }\n\n static initAll() {\n const swiperContainers = document.querySelectorAll('.slider-martin');\n\n const sliderMartinInstances = [];\n swiperContainers.forEach((swiperContainer) => {\n sliderMartinInstances.push(SliderMartin.init(swiperContainer));\n });\n\n return sliderMartinInstances;\n }\n\n constructor(swiperContainer) {\n\n const swiperElement = swiperContainer.querySelector('.swiper');\n this.swiperDelay = swiperContainer.getAttribute('data-slider-delay');\n\n this.slider = new Swiper(swiperElement, {\n modules: [Navigation, Autoplay, Pagination],\n speed: 1000,\n autoHeight: true,\n centeredSlides: true,\n spaceBetween: 20, // in px\n loop: false,\n autoplay: {\n delay: this.swiperDelay * 10000, // in milliseconds\n disableOnInteraction: false\n },\n\n // Navigation arrows\n navigation: {\n nextEl: swiperContainer.querySelector('.swiper-button-next-martin'),\n prevEl: swiperContainer.querySelector('.swiper-button-prev-martin'),\n },\n\n pagination: {\n el: '.swiper-pagination-martin',\n type: 'bullets',\n clickable: true,\n },\n });\n }\n}","import { Swiper } from \"swiper\";\nimport { Autoplay } from 'swiper/modules';\nimport { BREAKPOINT_SM, BREAKPOINT_MD, BREAKPOINT_LG } from \"../globals\";\n\nconst SLIDES_PER_VIEW_SM = 3;\nconst SLIDES_PER_VIEW_MD = 4;\nconst SLIDES_PER_VIEW_LG = 5;\n\nexport default class SliderAlbert {\n\n\t/**\n\t * Initializes a certain slider and returns SliderAlbert as object\n\t * @param {HTMLElement} swiperContainer \n\t * @returns {SliderAlbert} slider\n\t */ \n\tstatic init(swiperContainer) { \t\t\t\t\t\n\t\treturn new SliderAlbert(swiperContainer);\n\t}\n\t/**\n\t * Initializes each slider on the page and returns sliderAlbertInstances as a collection\n\t * @param {HTMLElement} swiperContainer\n\t * @returns {SliderAlbertInstances} collection of sliders\n\t */\n\tstatic initAll() {\n\t\tconst swiperContainers = document.querySelectorAll('.slider-albert');\n\n\t\tconst sliderAlbertInstances = [];\n\t\tswiperContainers.forEach((swiperContainer) => {\n\t\t\tsliderAlbertInstances.push(SliderAlbert.init(swiperContainer));\n\t\t});\n\n\t\treturn sliderAlbertInstances;\n\t}\n\n\tconstructor(swiperContainer) {\n\n\t\tconst swiperElement = swiperContainer.querySelector('.swiper');\n\n\t\tif (swiperElement === null) return;\n\n\t\tthis.swiperDelay = swiperContainer.getAttribute('data-slider-delay');\n\n\t\t/** @var {SwiperOptions} */\n\t\tconst config = {\n\t\t\tmodules: [Autoplay],\n\t\t\tslidesPerView: 2,\n\t\t\tbreakpoints: {\n\t\t\t\t[BREAKPOINT_SM]: {\n\t\t\t\t\tslidesPerView: SLIDES_PER_VIEW_SM,\n\t\t\t\t},\n\t\t\t\t[BREAKPOINT_MD]: {\n\t\t\t\t\tslidesPerView: SLIDES_PER_VIEW_MD,\n\t\t\t\t},\n\t\t\t\t[BREAKPOINT_LG]: {\n\t\t\t\t\tslidesPerView: SLIDES_PER_VIEW_LG,\n\t\t\t\t}\n\t\t\t},\n\t\t\tspeed: 1000,\n\t\t\tautoplay: {\n\t\t\t\tdelay: this.swiperDelay * 1000, // in miliseconds\n\t\t\t\tdisableOnInteraction: false,\n\t\t\t},\n\t\t\tcenterInsufficientSlides: true,\n\t\t\tgrabCursor: true,\n\t\t};\n\n\t\tthis.slider = new Swiper(swiperElement, config);\n\t}\n}","import AOS from 'aos';\nimport * as GLOBALS from '../globals';\n\nexport default class AOSClass {\n static init() {\n return new AOSClass();\n }\n\n constructor() {\n AOS.init({\n duration: 700\n });\n\n this.resetCardDelay();\n \n window.addEventListener(\"resize\", this.resetCardDelay);\n\n Livewire.hook('morphed', ({el, component}) => {\n AOS.refresh();\n })\n }\n\n resetCardDelay() {\n const cardsWrapper = document.querySelectorAll('[class^=cards]');\n\n if (cardsWrapper == null) return;\n\n cardsWrapper.forEach((cardWrapper) => {\n const cards = cardWrapper.querySelectorAll('[class^=card]');\n \n cards.forEach((card) => {\n if (card.dataset.index == null) return;\n \n let modulus = 1;\n\n if (cardWrapper.dataset.columnSize == 'halfs') {\n if (window.innerWidth > GLOBALS.BREAKPOINT_MD) modulus = 2;\n } else if (cardWrapper.dataset.columnSize == 'thirds') {\n if (window.innerWidth > GLOBALS.BREAKPOINT_MD) modulus = 2;\n if (window.innerWidth > GLOBALS.BREAKPOINT_LG) modulus = 3;\n } else if (cardWrapper.dataset.columnSize == 'quarters') {\n if (window.innerWidth > GLOBALS.BREAKPOINT_SM) modulus = 2;\n if (window.innerWidth > GLOBALS.BREAKPOINT_MD) modulus = 3;\n if (window.innerWidth > GLOBALS.BREAKPOINT_LG) modulus = 4;\n }\n\n card.setAttribute('data-aos-delay', (card.dataset.index % modulus) * 100);\n });\n });\n }\n}","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEqual = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual);\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback&loading=async`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.loading) {\n // do nothing but wait\n return;\n }\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader. \" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n this.loading = true;\n this.setScript();\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.mjs.map\n","import { Loader } from \"@googlemaps/js-api-loader\"\n\nexport default class Maps {\n static init(apiKey) {\n return new Maps(apiKey);\n }\n\n constructor(apiKey) {\n const self = this;\n\n if (!window.CookieConsent) {\n console.error('Cookie Byte is not implemented or not initialized. Please initialize before initialization of Map Victoria');\n return;\n }\n\n if (window.CookieConsent.hasConsent('google-maps')) {\n self.loadMaps(apiKey);\n } else {\n window.CookieConsent.registerCallback('google-maps', function() {\n self.loadMaps(apiKey);\n }, this);\n }\n }\n\n async loadMaps(apiKey) {\n const loader = new Loader({\n apiKey: apiKey,\n version: \"weekly\",\n });\n\n loader.importLibrary(\"maps\").then(() => {\n loader.importLibrary(\"marker\").then(() => {\n let maps = document.querySelectorAll('.windwheel-map .map');\n maps.forEach((map) => {\n this.setupMap(map);\n });\n });\n });\n }\n\n setupMap(mapElement) {\n if (!mapElement) return;\n\n let centerLat = Number(mapElement.getAttribute('data-center-lat'));\n let centerLng = Number(mapElement.getAttribute('data-center-lng'));\n let zoomLevel = Number(mapElement.getAttribute('data-zoom'));\n\n if (window.innerWidth < 500)\n zoomLevel -= 1;\n\n let mapOptions = {\n zoom: zoomLevel,\n center: new google.maps.LatLng(centerLat, centerLng),\n streetViewControl: false,\n overviewMapControl: false,\n mapTypeControl: false,\n fullscreenControl: true,\n mapId: 'DEMO_MAP_ID'\n /* styles: GoogleMapStyling */\n };\n\n let map = new google.maps.Map(mapElement, mapOptions);\n\n const markers = this.drawMarks(map, mapElement);\n\n map.addListener('zoom_changed', () => {\n if (map.getZoom() <= 10) {\n markers.forEach((marker) => {\n marker.map = null;\n });\n }\n \n if (map.getZoom() > 10) {\n markers.forEach((marker) => {\n marker.map = map;\n });\n }\n });\n }\n\n drawMarks(map, mapElement) {\n const wheelsJson = mapElement.getAttribute('wheels');\n const wheels = wheelsJson ? JSON.parse(wheelsJson) : [];\n const markers = [];\n\n Object.entries(wheels).forEach(function ([key, value]) {\n this.addFacility(map, value[0]);\n value.forEach((wheel, index) => {\n if (index != 0) {\n const marker = this.addWheel(map, wheel);\n if (marker)\n markers.push(marker);\n }\n });\n }, this);\n\n return markers;\n }\n\n addFacility(map, pin) {\n if (!pin.x || typeof pin.x != 'number') \n return;\n\n const iconElement = document.createElement('div');\n\n iconElement.innerHTML = `\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"Ellipse 18\" cx=\"6\" cy=\"6.23096\" r=\"6\" fill=\"${pin['color']['color']}\"/>\n </svg>\n `;\n\n // draw facility\n\n const marker = new google.maps.marker.AdvancedMarkerElement({\n position: { lat: pin.y, lng: pin.x },\n map: map,\n content: iconElement\n });\n\n const infoWindow = new google.maps.InfoWindow({\n content: `\n <div style=\"padding: 10px; max-width: 400px;\" class=\"flex flex-col gap-2 font-normal\">\n <h3>${pin.project}</h3>\n <p>${pin.facilityInfo}</p>\n <p>${pin.typeInfo}</p>\n <p>${pin.householdInfo}</p>\n </div>\n `,\n });\n \n google.maps.event.addListener(marker, 'click', () => {\n infoWindow.open({\n anchor: marker,\n map: map,\n shouldFocus: false, // Prevents focus from shifting to the popup\n });\n });\n\n return marker;\n }\n\n addWheel(map, pin) {\n if (!pin.x || typeof pin.x != 'number')\n return;\n\n const iconElement = document.createElement('div');\n iconElement.innerHTML = `\n <svg width=\"10\" height=\"10\" xmlns=\"http://www.w3.org/2000/svg\">\n <image href=\"/svg/ellipse.svg\" width=\"10\" height=\"10\" />\n </svg>\n `;\n\n // draw facility\n\n const marker = new google.maps.marker.AdvancedMarkerElement({\n position: { lat: pin.y, lng: pin.x },\n map: null,\n content: iconElement\n });\n\n const infoWindow = new google.maps.InfoWindow({\n content: `\n <div style=\"padding: 10px; max-width: 400px;\" class=\"flex flex-col gap-2 font-normal\">\n <h3>${pin.project}</h3>\n <p>${pin.facilityInfo}</p>\n <p>${pin.typeInfo}</p>\n <p>${pin.householdInfo}</p>\n </div>\n `,\n });\n \n google.maps.event.addListener(marker, 'click', () => {\n infoWindow.open({\n anchor: marker,\n map: map,\n shouldFocus: false, // Prevents focus from shifting to the popup\n });\n });\n\n return marker;\n }\n}","/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.4.7\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || value === undefined;\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n clip: true,\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */ function toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */ function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */ function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */ function clearCanvas(canvas, ctx) {\n if (!ctx && !canvas) {\n return;\n }\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */ case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */ case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */ function _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */ function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */ function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */ const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */ function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */ function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */ function _createResolver(scopes, prefixes = [\n ''\n], rootScopes, fallback, getTarget = ()=>scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */ function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */ function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.4.7\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n let found = false;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n found = true;\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n if (!found && !options.all) {\n return 0;\n }\n return value;\n}\nfunction convertObjectDataToArray(data, meta) {\n const { iScale , vScale } = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n meta._stacked = isStacked(meta.vScale, meta);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n const skipNull = (meta)=>{\n const parsed = meta._parsed.find((item)=>item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).some((key)=>isFunction(value[key]));\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.4.7\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\nfunction getDatasetArea(meta, chartArea) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, ðœƒ) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n const betweenAngles = _circumference >= TAU || nonZeroBetween;\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n function getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nBarElement: BarElement,\nLineElement: LineElement,\nPointElement: PointElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nfunction containsDefaultColorsDefenitions() {\n return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n const containsColorDefenition = containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements) || containsDefaultColorsDefenitions();\n if (!options.forceOverride && containsColorDefenition) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes){\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n const xAverage = [\n ...xSet\n ].reduce((a, b)=>a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter((i)=>this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash || []);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b)=>a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","import Chart from 'chart.js/auto';\nimport * as GLOBALS from '../globals';\n\nexport default class ChartClass {\n colors = [\n '#009cdf',\n '#d5d83d',\n '#003247',\n '#00638e',\n '#a4dcee',\n '#afb212',\n '#7c7e00'\n ];\n\n static init() {\n return new ChartClass();\n }\n\n constructor() {\n const chartElements = document.querySelectorAll('.chart-wrapper canvas');\n\n chartElements.forEach((chartElement) => {\n const chartType = chartElement.dataset.chartType;\n const labels = JSON.parse(chartElement.dataset.chartLabels);\n const chartData = JSON.parse(chartElement.dataset.chartData); \n const stacked = chartElement.dataset.stacked || false;\n let colorIndex = 0;\n const datasets = Object.entries(chartData).map(([key, value]) => {\n colorIndex = colorIndex % this.colors.length;\n if (chartType == 'pie') {\n return {\n label: key,\n data: value,\n backgroundColor: this.colors,\n };\n } else {\n return {\n label: key,\n data: value,\n borderColor: this.colors[colorIndex],\n backgroundColor: this.colors[colorIndex++],\n };\n }\n });\n \n Chart.defaults.font.family = \"'Montserrat', sans-serif\";\n Chart.defaults.color = '#003247';\n Chart.defaults.font.size = 14;\n Chart.defaults.borderColor = '#a4dcee';\n\n const chart = new Chart(chartElement, {\n type: chartType,\n responsive: true, \n data: {\n labels: labels,\n datasets: datasets,\n },\n options: {\n layout: {\n padding: GLOBALS.BREAKPOINT_MD > window.innerWidth ? 16 : 32\n },\n scales: {\n x: {\n stacked: stacked\n },\n y: {\n stacked: stacked\n }\n },\n responsive: true,\n maintainAspectRatio: GLOBALS.BREAKPOINT_MD < window.innerWidth\n }\n });\n })\n }\n}","/**\n\tMAIN.JS\n\n In this file, all used JavaScript modules come together ans one, as they are initialized right here.\n */\n'use strict';\n\nimport Accordion from './modules/accordion';\nimport CookieByte from './modules/cookie-byte';\nimport Form from './form/form';\nimport HeaderMenu from './navigation/header-menu';\nimport MediaViewer from './modules/media-viewer';\nimport Modal from './modules/modal';\nimport ResponsiveImage from './modules/responsive-image';\nimport Video from './modules/video';\nimport NumberAnimation from './modules/number-animation';\nimport HeroNico from './modules/hero-nico';\nimport SliderMartin from './modules/slider-martin';\nimport SliderAlbert from './modules/slider-albert';\nimport AOSClass from './modules/aos';\nimport Maps from './modules/maps';\nimport ChartClass from './modules/chart';\n\nconst siteInitialization = () => {\n\tCookieByte.init();\n\tHeaderMenu.init();\n\tAccordion.initAll();\n\tResponsiveImage.initAll();\n\tMediaViewer.init();\n\tModal.initAll();\n\tForm.init();\n\tVideo.initAll();\n\tNumberAnimation.init();\n\tHeroNico.init();\n\tSliderMartin.initAll();\n\tSliderAlbert.initAll();\n\tMaps.init('AIzaSyDrEgEcyvyqS9vWBemuCQ8EaW0ToUmxoIc');\n\tChartClass.init();\n\tAOSClass.init();\n};\n\n// Run the init function as soon as the DOM tree has been loaded\nif (document.readyState !== 'loading') siteInitialization();\nelse document.addEventListener('DOMContentLoaded', siteInitialization);\n","module.exports = \"/images/vendor/lightgallery/loading.gif?fcba57cdb89652f9bb54271cc5a9cc0e\";","module.exports = \"/fonts/vendor/lightgallery/lg.svg?09cd8e9be7081f2166444cce393fe968\";","module.exports = \"/fonts/vendor/lightgallery/lg.ttf?747d038541bfc6bb8ea9118bed9c160e\";","module.exports = \"/fonts/vendor/lightgallery/lg.woff2?64b800aa30714fd916dce5018ba7ad76\";","module.exports = \"/fonts/vendor/lightgallery/lg.woff?356a0e9cb064c7a196c612ebf7523686\";","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.de = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var German = {\n weekdays: {\n shorthand: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n longhand: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ],\n },\n firstDayOfWeek: 1,\n weekAbbreviation: \"KW\",\n rangeSeparator: \" bis \",\n scrollTitle: \"Zum Ändern scrollen\",\n toggleTitle: \"Zum Umschalten klicken\",\n time_24hr: true,\n };\n fp.l10ns.de = German;\n var de = fp.l10ns;\n\n exports.German = German;\n exports.default = de;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../laravel-mix/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../laravel-mix/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".lg-outer .lg-video-cont{display:inline-block;position:relative;text-align:center;vertical-align:middle}.lg-outer .lg-video-cont .lg-object{height:100%!important;width:100%!important}.lg-outer .lg-has-iframe .lg-video-cont{-webkit-overflow-scrolling:touch;overflow:auto}.lg-outer .lg-video-object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:3}.lg-outer .lg-video-poster{z-index:1}.lg-outer .lg-has-video .lg-video-object{opacity:0;transition:opacity .3s ease-in;will-change:opacity}.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button,.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster{opacity:0!important}.lg-outer .lg-has-video.lg-video-loaded .lg-video-object{opacity:1}@keyframes lg-play-stroke{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes lg-play-rotate{to{transform:rotate(1turn)}}.lg-video-play-button{cursor:pointer;left:50%;max-width:140px;position:absolute;top:50%;transform:translate(-50%,-50%) scale(1);transition:transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;width:18%;will-change:opacity,transform;z-index:2}.lg-video-play-button:hover .lg-video-play-icon,.lg-video-play-button:hover .lg-video-play-icon-bg{opacity:1}.lg-video-play-icon-bg{fill:none;stroke-width:3%;stroke:#fcfcfc;opacity:.6;transition:opacity .12s ease-in;will-change:opacity}.lg-video-play-icon-circle{fill:none;stroke-width:3%;stroke:#1e1e1ee6;stroke-opacity:1;stroke-linecap:round;stroke-dasharray:200;stroke-dashoffset:200;bottom:0;left:0;position:absolute;right:0;top:0}.lg-video-play-icon{left:50%;max-width:120px;opacity:.6;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);transition:opacity .12s ease-in;width:25%;will-change:opacity}.lg-video-play-icon .lg-video-play-icon-inner{fill:#fcfcfc}.lg-video-loading .lg-video-play-icon-circle{animation:lg-play-rotate 2s linear .25s infinite,lg-play-stroke 1.5s ease-in-out .25s infinite}.lg-video-loaded .lg-video-play-button{opacity:0;transform:translate(-50%,-50%) scale(.7)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/lightgallery/css/lg-video.css\"],\"names\":[],\"mappings\":\"AAAA,yBAEE,oBAAqB,CAErB,iBAAkB,CAHlB,iBAAkB,CAElB,qBAEF,CAEA,oCAEE,qBAAuB,CADvB,oBAEF,CAEA,wCACE,gCAAiC,CACjC,aACF,CAEA,2BAOE,QAAS,CAFT,WAAY,CAHZ,MAAO,CADP,iBAAkB,CAElB,OAAQ,CAGR,KAAM,CAFN,UAAW,CAIX,SACF,CAEA,2BACE,SACF,CAEA,yCACE,SAAU,CAIV,8BAAgC,CAHhC,mBAIF,CAEA,uHAEE,mBACF,CAEA,yDACE,SACF,CAEA,0BACE,GACE,sBAAwB,CACxB,mBACF,CACA,IACE,uBAAyB,CACzB,uBACF,CACA,GACE,uBAAyB,CACzB,wBACF,CACF,CAEA,0BACE,GAEE,uBACF,CACF,CAEA,sBAOE,cAAe,CAFf,QAAS,CAHT,eAAgB,CAChB,iBAAkB,CAClB,OAAQ,CAIR,uCAAyC,CAKzC,oEAA8E,CAZ9E,SAAU,CAQV,6BAA+B,CAH/B,SAQF,CAEA,mGAEE,SACF,CAEA,uBACE,SAAU,CACV,eAAgB,CAChB,cAAe,CACf,UAAY,CAIZ,+BAAiC,CAHjC,mBAIF,CAEA,2BAME,SAAU,CACV,eAAgB,CAChB,gBAA6B,CAC7B,gBAAiB,CACjB,oBAAqB,CACrB,oBAAqB,CACrB,qBAAsB,CARtB,QAAS,CADT,MAAO,CAFP,iBAAkB,CAIlB,OAAQ,CAHR,KAWF,CAEA,oBAIE,QAAS,CADT,eAAgB,CAIhB,UAAY,CANZ,iBAAkB,CAIlB,OAAQ,CACR,kCAAqC,CAKrC,+BAAiC,CATjC,SAAU,CAMV,mBAIF,CAEA,8CACE,YACF,CAEA,6CACE,8FACF,CAEA,uCACE,SAAU,CACV,wCACF\",\"sourcesContent\":[\".lg-outer .lg-video-cont {\\n text-align: center;\\n display: inline-block;\\n vertical-align: middle;\\n position: relative;\\n}\\n\\n.lg-outer .lg-video-cont .lg-object {\\n width: 100% !important;\\n height: 100% !important;\\n}\\n\\n.lg-outer .lg-has-iframe .lg-video-cont {\\n -webkit-overflow-scrolling: touch;\\n overflow: auto;\\n}\\n\\n.lg-outer .lg-video-object {\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n bottom: 0;\\n z-index: 3;\\n}\\n\\n.lg-outer .lg-video-poster {\\n z-index: 1;\\n}\\n\\n.lg-outer .lg-has-video .lg-video-object {\\n opacity: 0;\\n will-change: opacity;\\n -webkit-transition: opacity 0.3s ease-in;\\n -o-transition: opacity 0.3s ease-in;\\n transition: opacity 0.3s ease-in;\\n}\\n\\n.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster,\\n.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button {\\n opacity: 0 !important;\\n}\\n\\n.lg-outer .lg-has-video.lg-video-loaded .lg-video-object {\\n opacity: 1;\\n}\\n\\n@keyframes lg-play-stroke {\\n 0% {\\n stroke-dasharray: 1, 200;\\n stroke-dashoffset: 0;\\n }\\n 50% {\\n stroke-dasharray: 89, 200;\\n stroke-dashoffset: -35px;\\n }\\n 100% {\\n stroke-dasharray: 89, 200;\\n stroke-dashoffset: -124px;\\n }\\n}\\n\\n@keyframes lg-play-rotate {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n.lg-video-play-button {\\n width: 18%;\\n max-width: 140px;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n z-index: 2;\\n cursor: pointer;\\n transform: translate(-50%, -50%) scale(1);\\n will-change: opacity, transform;\\n -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;\\n -moz-transition: -moz-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;\\n -o-transition: -o-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;\\n transition: transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;\\n}\\n\\n.lg-video-play-button:hover .lg-video-play-icon-bg,\\n.lg-video-play-button:hover .lg-video-play-icon {\\n opacity: 1;\\n}\\n\\n.lg-video-play-icon-bg {\\n fill: none;\\n stroke-width: 3%;\\n stroke: #fcfcfc;\\n opacity: 0.6;\\n will-change: opacity;\\n -webkit-transition: opacity 0.12s ease-in;\\n -o-transition: opacity 0.12s ease-in;\\n transition: opacity 0.12s ease-in;\\n}\\n\\n.lg-video-play-icon-circle {\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n right: 0;\\n fill: none;\\n stroke-width: 3%;\\n stroke: rgba(30, 30, 30, 0.9);\\n stroke-opacity: 1;\\n stroke-linecap: round;\\n stroke-dasharray: 200;\\n stroke-dashoffset: 200;\\n}\\n\\n.lg-video-play-icon {\\n position: absolute;\\n width: 25%;\\n max-width: 120px;\\n left: 50%;\\n top: 50%;\\n transform: translate3d(-50%, -50%, 0);\\n opacity: 0.6;\\n will-change: opacity;\\n -webkit-transition: opacity 0.12s ease-in;\\n -o-transition: opacity 0.12s ease-in;\\n transition: opacity 0.12s ease-in;\\n}\\n\\n.lg-video-play-icon .lg-video-play-icon-inner {\\n fill: #fcfcfc;\\n}\\n\\n.lg-video-loading .lg-video-play-icon-circle {\\n animation: lg-play-rotate 2s linear 0.25s infinite, lg-play-stroke 1.5s ease-in-out 0.25s infinite;\\n}\\n\\n.lg-video-loaded .lg-video-play-button {\\n opacity: 0;\\n transform: translate(-50%, -50%) scale(0.7);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../laravel-mix/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../laravel-mix/node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../laravel-mix/node_modules/css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../fonts/lg.woff2?io9a6k\";\nimport ___CSS_LOADER_URL_IMPORT_1___ from \"../fonts/lg.ttf?io9a6k\";\nimport ___CSS_LOADER_URL_IMPORT_2___ from \"../fonts/lg.woff?io9a6k\";\nimport ___CSS_LOADER_URL_IMPORT_3___ from \"../fonts/lg.svg?io9a6k\";\nimport ___CSS_LOADER_URL_IMPORT_4___ from \"../images/loading.gif\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { hash: \"#lg\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@font-face{font-display:block;font-family:lg;font-style:normal;font-weight:400;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"svg\\\")}.lg-icon{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:lg!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.lg-container{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lg-next,.lg-prev{background-color:#00000073;border:none;border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;outline:none;padding:8px 10px 9px;position:absolute;top:50%;z-index:1084}.lg-next.disabled,.lg-prev.disabled{cursor:default;opacity:0!important}.lg-next:hover:not(.disabled),.lg-prev:hover:not(.disabled){color:#fff}.lg-single-item\\n.lg-prev,.lg-single-item .lg-next{display:none}.lg-next{right:20px}.lg-next:before{content:\\\"\\\\e095\\\"}.lg-prev{left:20px}.lg-prev:after{content:\\\"\\\\e094\\\"}@keyframes lg-right-end{0%{left:0}50%{left:-30px}to{left:0}}@keyframes lg-left-end{0%{left:0}50%{left:30px}to{left:0}}.lg-outer.lg-right-end .lg-object{animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{animation:lg-left-end .3s;position:relative}.lg-toolbar{left:0;position:absolute;top:0;width:100%;z-index:1082}.lg-media-overlap .lg-toolbar{background-image:linear-gradient(0deg,#0000,#0006)}.lg-toolbar .lg-icon{background:none;border:none;box-shadow:none;color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;outline:medium none;padding:10px 0;text-align:center;text-decoration:none!important;transition:color .2s linear;width:50px;will-change:color}.lg-toolbar .lg-icon.lg-icon-18{font-size:18px}.lg-toolbar .lg-icon:hover{color:#fff}.lg-toolbar .lg-close:after{content:\\\"\\\\e070\\\"}.lg-toolbar .lg-maximize{font-size:22px}.lg-toolbar .lg-maximize:after{content:\\\"\\\\e90a\\\"}.lg-toolbar .lg-download:after{content:\\\"\\\\e0f2\\\"}.lg-sub-html{color:#eee;font-size:16px;opacity:0;padding:10px 40px;text-align:center;transition:opacity .2s ease-out 0s;z-index:1080}.lg-sub-html h4{font-size:13px;font-weight:700;margin:0}.lg-sub-html p{font-size:12px;margin:5px 0 0}.lg-sub-html a{color:inherit}.lg-sub-html a:hover{text-decoration:underline}.lg-media-overlap .lg-sub-html{background-image:linear-gradient(180deg,#0000,#0009)}.lg-item .lg-sub-html{bottom:0;left:0;position:absolute;right:0}.lg-error-msg{color:#999;font-size:14px}.lg-counter{color:#999;display:inline-block;font-size:16px;height:47px;padding-left:20px;padding-top:12px;vertical-align:middle}.lg-closing .lg-next,.lg-closing .lg-prev,.lg-closing .lg-sub-html,.lg-closing .lg-toolbar{opacity:0;transition:transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont{opacity:0;transform:scale3d(.5,.5,.5);transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1)!important;will-change:transform,opacity}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont{opacity:1;transform:scaleX(1)}.lg-icon:focus-visible{border-radius:3px;color:#fff;outline:1px dashed #fff9}.lg-toolbar .lg-icon:focus-visible{border-radius:8px;outline-offset:-5px}.lg-group:after{clear:both;content:\\\"\\\";display:table}.lg-container{outline:none}.lg-on{scroll-behavior:unset}.lg-overlay-open{overflow:hidden}.lg-hide-sub-html .lg-sub-html,.lg-next,.lg-pager-outer,.lg-prev,.lg-toolbar{opacity:0;transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;will-change:transform,opacity}.lg-show-in .lg-next,.lg-show-in .lg-pager-outer,.lg-show-in .lg-prev,.lg-show-in .lg-toolbar,.lg-show-in.lg-hide-sub-html .lg-sub-html{opacity:1}.lg-show-in .lg-hide-items .lg-prev{opacity:0;transform:translate3d(-10px,0,0)}.lg-show-in .lg-hide-items .lg-next{opacity:0;transform:translate3d(10px,0,0)}.lg-show-in .lg-hide-items .lg-toolbar{opacity:0;transform:translate3d(0,-10px,0)}.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html{opacity:0;transform:translate3d(0,20px,0)}.lg-outer{height:100%;left:0;opacity:.001;outline:none;overflow:hidden;position:fixed;text-align:left;top:0;transition:opacity .15s ease 0s;width:100%;will-change:auto;z-index:1050}.lg-outer *{box-sizing:border-box}.lg-outer.lg-visible,.lg-outer.lg-zoom-from-image{opacity:1}.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide{transition-duration:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{opacity:1;transition-duration:0s!important}.lg-outer.lg-grab img.lg-object{cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-content{bottom:0;left:0;position:absolute;right:0;top:0}.lg-outer .lg-inner{bottom:0;left:0;position:absolute;top:0;transition:opacity 0s;white-space:nowrap;width:100%}.lg-outer .lg-item{display:none!important}.lg-outer .lg-item:not(.lg-start-end-progress){background:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") no-repeat scroll 50% #0000}.lg-outer.lg-css .lg-current,.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;height:100%;position:absolute;text-align:center;width:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:\\\"\\\";display:inline-block;height:100%;vertical-align:middle}.lg-outer .lg-img-wrap{bottom:0;font-size:0;left:0;position:absolute;right:0;top:0;white-space:nowrap}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-object{display:inline-block;height:auto;max-height:100%;max-width:100%;position:relative;vertical-align:middle;width:auto}.lg-outer .lg-empty-html .lg-sub-html,.lg-outer .lg-empty-html.lg-sub-html{display:none}.lg-outer.lg-hide-download .lg-download{opacity:.75;pointer-events:none}.lg-outer .lg-first-slide .lg-dummy-img{left:50%;position:absolute;top:50%}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components{opacity:1;transform:translateZ(0)}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html{opacity:1;transition:opacity .2s ease-out .15s}.lg-backdrop{background-color:#000;bottom:0;left:0;opacity:0;position:fixed;right:0;top:0;transition:opacity 333ms ease-in 0s;will-change:auto;z-index:1040}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item{backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{transition:opacity .1s ease 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-progress{transition:transform 1s cubic-bezier(.175,.885,.32,1.275) 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress{transition:transform 1s cubic-bezier(0,0,.25,1) 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{opacity:1;transform:translateZ(0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-container{display:none}.lg-container.lg-show{display:block}.lg-container.lg-dragging-vertical .lg-backdrop{transition-duration:0s!important}.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current{opacity:1;transition-duration:0s!important}.lg-inline .lg-backdrop,.lg-inline .lg-outer{position:absolute}.lg-inline .lg-backdrop{z-index:1}.lg-inline .lg-outer{z-index:2}.lg-inline .lg-maximize:after{content:\\\"\\\\e909\\\"}.lg-components{bottom:0;left:0;position:absolute;right:0;transform:translate3d(0,100%,0);transition:transform .35s ease-out 0s;will-change:transform;z-index:1080}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/lightgallery/css/lightgallery.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@font-face {\\n font-family: 'lg';\\n src: url(\\\"../fonts/lg.woff2?io9a6k\\\") format(\\\"woff2\\\"), url(\\\"../fonts/lg.ttf?io9a6k\\\") format(\\\"truetype\\\"), url(\\\"../fonts/lg.woff?io9a6k\\\") format(\\\"woff\\\"), url(\\\"../fonts/lg.svg?io9a6k#lg\\\") format(\\\"svg\\\");\\n font-weight: normal;\\n font-style: normal;\\n font-display: block;\\n}\\n\\n.lg-icon {\\n /* use !important to prevent issues with browser extensions that change fonts */\\n font-family: 'lg' !important;\\n speak: never;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-transform: none;\\n line-height: 1;\\n /* Better Font Rendering =========== */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.lg-container {\\n font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\\n}\\n\\n.lg-next,\\n.lg-prev {\\n background-color: rgba(0, 0, 0, 0.45);\\n border-radius: 2px;\\n color: #999;\\n cursor: pointer;\\n display: block;\\n font-size: 22px;\\n margin-top: -10px;\\n padding: 8px 10px 9px;\\n position: absolute;\\n top: 50%;\\n z-index: 1084;\\n outline: none;\\n border: none;\\n}\\n\\n.lg-next.disabled,\\n.lg-prev.disabled {\\n opacity: 0 !important;\\n cursor: default;\\n}\\n\\n.lg-next:hover:not(.disabled),\\n.lg-prev:hover:not(.disabled) {\\n color: #fff;\\n}\\n\\n.lg-single-item .lg-next, .lg-single-item\\n.lg-prev {\\n display: none;\\n}\\n\\n.lg-next {\\n right: 20px;\\n}\\n\\n.lg-next:before {\\n content: '\\\\e095';\\n}\\n\\n.lg-prev {\\n left: 20px;\\n}\\n\\n.lg-prev:after {\\n content: '\\\\e094';\\n}\\n\\n@-webkit-keyframes lg-right-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: -30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@-moz-keyframes lg-right-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: -30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@-ms-keyframes lg-right-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: -30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@keyframes lg-right-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: -30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@-webkit-keyframes lg-left-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: 30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@-moz-keyframes lg-left-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: 30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@-ms-keyframes lg-left-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: 30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n@keyframes lg-left-end {\\n 0% {\\n left: 0;\\n }\\n 50% {\\n left: 30px;\\n }\\n 100% {\\n left: 0;\\n }\\n}\\n\\n.lg-outer.lg-right-end .lg-object {\\n -webkit-animation: lg-right-end 0.3s;\\n -o-animation: lg-right-end 0.3s;\\n animation: lg-right-end 0.3s;\\n position: relative;\\n}\\n\\n.lg-outer.lg-left-end .lg-object {\\n -webkit-animation: lg-left-end 0.3s;\\n -o-animation: lg-left-end 0.3s;\\n animation: lg-left-end 0.3s;\\n position: relative;\\n}\\n\\n.lg-toolbar {\\n z-index: 1082;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n}\\n\\n.lg-media-overlap .lg-toolbar {\\n background-image: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4));\\n}\\n\\n.lg-toolbar .lg-icon {\\n color: #999;\\n cursor: pointer;\\n float: right;\\n font-size: 24px;\\n height: 47px;\\n line-height: 27px;\\n padding: 10px 0;\\n text-align: center;\\n width: 50px;\\n text-decoration: none !important;\\n outline: medium none;\\n will-change: color;\\n -webkit-transition: color 0.2s linear;\\n -o-transition: color 0.2s linear;\\n transition: color 0.2s linear;\\n background: none;\\n border: none;\\n box-shadow: none;\\n}\\n\\n.lg-toolbar .lg-icon.lg-icon-18 {\\n font-size: 18px;\\n}\\n\\n.lg-toolbar .lg-icon:hover {\\n color: #fff;\\n}\\n\\n.lg-toolbar .lg-close:after {\\n content: '\\\\e070';\\n}\\n\\n.lg-toolbar .lg-maximize {\\n font-size: 22px;\\n}\\n\\n.lg-toolbar .lg-maximize:after {\\n content: '\\\\e90a';\\n}\\n\\n.lg-toolbar .lg-download:after {\\n content: '\\\\e0f2';\\n}\\n\\n.lg-sub-html {\\n color: #eee;\\n font-size: 16px;\\n padding: 10px 40px;\\n text-align: center;\\n z-index: 1080;\\n opacity: 0;\\n -webkit-transition: opacity 0.2s ease-out 0s;\\n -o-transition: opacity 0.2s ease-out 0s;\\n transition: opacity 0.2s ease-out 0s;\\n}\\n\\n.lg-sub-html h4 {\\n margin: 0;\\n font-size: 13px;\\n font-weight: bold;\\n}\\n\\n.lg-sub-html p {\\n font-size: 12px;\\n margin: 5px 0 0;\\n}\\n\\n.lg-sub-html a {\\n color: inherit;\\n}\\n\\n.lg-sub-html a:hover {\\n text-decoration: underline;\\n}\\n\\n.lg-media-overlap .lg-sub-html {\\n background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6));\\n}\\n\\n.lg-item .lg-sub-html {\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n}\\n\\n.lg-error-msg {\\n font-size: 14px;\\n color: #999;\\n}\\n\\n.lg-counter {\\n color: #999;\\n display: inline-block;\\n font-size: 16px;\\n padding-left: 20px;\\n padding-top: 12px;\\n height: 47px;\\n vertical-align: middle;\\n}\\n\\n.lg-closing .lg-toolbar,\\n.lg-closing .lg-prev,\\n.lg-closing .lg-next,\\n.lg-closing .lg-sub-html {\\n opacity: 0;\\n -webkit-transition: -webkit-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;\\n -moz-transition: -moz-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;\\n -o-transition: -o-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;\\n transition: transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;\\n}\\n\\nbody:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,\\nbody:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont {\\n opacity: 0;\\n -moz-transform: scale3d(0.5, 0.5, 0.5);\\n -o-transform: scale3d(0.5, 0.5, 0.5);\\n -ms-transform: scale3d(0.5, 0.5, 0.5);\\n -webkit-transform: scale3d(0.5, 0.5, 0.5);\\n transform: scale3d(0.5, 0.5, 0.5);\\n will-change: transform, opacity;\\n -webkit-transition: -webkit-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;\\n -moz-transition: -moz-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;\\n -o-transition: -o-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;\\n transition: transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;\\n}\\n\\nbody:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,\\nbody:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont {\\n opacity: 1;\\n -moz-transform: scale3d(1, 1, 1);\\n -o-transform: scale3d(1, 1, 1);\\n -ms-transform: scale3d(1, 1, 1);\\n -webkit-transform: scale3d(1, 1, 1);\\n transform: scale3d(1, 1, 1);\\n}\\n\\n.lg-icon:focus-visible {\\n color: #fff;\\n border-radius: 3px;\\n outline: 1px dashed rgba(255, 255, 255, 0.6);\\n}\\n\\n.lg-toolbar .lg-icon:focus-visible {\\n border-radius: 8px;\\n outline-offset: -5px;\\n}\\n\\n.lg-group:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.lg-container {\\n display: none;\\n outline: none;\\n}\\n\\n.lg-container.lg-show {\\n display: block;\\n}\\n\\n.lg-on {\\n scroll-behavior: unset;\\n}\\n\\n.lg-overlay-open {\\n overflow: hidden;\\n}\\n\\n.lg-toolbar,\\n.lg-prev,\\n.lg-next,\\n.lg-pager-outer,\\n.lg-hide-sub-html .lg-sub-html {\\n opacity: 0;\\n will-change: transform, opacity;\\n -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;\\n -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;\\n -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;\\n transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;\\n}\\n\\n.lg-show-in .lg-toolbar,\\n.lg-show-in .lg-prev,\\n.lg-show-in .lg-next,\\n.lg-show-in .lg-pager-outer {\\n opacity: 1;\\n}\\n\\n.lg-show-in.lg-hide-sub-html .lg-sub-html {\\n opacity: 1;\\n}\\n\\n.lg-show-in .lg-hide-items .lg-prev {\\n opacity: 0;\\n -webkit-transform: translate3d(-10px, 0, 0);\\n transform: translate3d(-10px, 0, 0);\\n}\\n\\n.lg-show-in .lg-hide-items .lg-next {\\n opacity: 0;\\n -webkit-transform: translate3d(10px, 0, 0);\\n transform: translate3d(10px, 0, 0);\\n}\\n\\n.lg-show-in .lg-hide-items .lg-toolbar {\\n opacity: 0;\\n -webkit-transform: translate3d(0, -10px, 0);\\n transform: translate3d(0, -10px, 0);\\n}\\n\\n.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html {\\n opacity: 0;\\n -webkit-transform: translate3d(0, 20px, 0);\\n transform: translate3d(0, 20px, 0);\\n}\\n\\n.lg-outer {\\n width: 100%;\\n height: 100%;\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 1050;\\n text-align: left;\\n opacity: 0.001;\\n outline: none;\\n will-change: auto;\\n overflow: hidden;\\n -webkit-transition: opacity 0.15s ease 0s;\\n -o-transition: opacity 0.15s ease 0s;\\n transition: opacity 0.15s ease 0s;\\n}\\n\\n.lg-outer * {\\n -webkit-box-sizing: border-box;\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n}\\n\\n.lg-outer.lg-zoom-from-image {\\n opacity: 1;\\n}\\n\\n.lg-outer.lg-visible {\\n opacity: 1;\\n}\\n\\n.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current {\\n -webkit-transition-duration: inherit !important;\\n transition-duration: inherit !important;\\n -webkit-transition-timing-function: inherit !important;\\n transition-timing-function: inherit !important;\\n}\\n\\n.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current {\\n -webkit-transition-duration: 0s !important;\\n transition-duration: 0s !important;\\n opacity: 1;\\n}\\n\\n.lg-outer.lg-grab img.lg-object {\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n cursor: -o-grab;\\n cursor: -ms-grab;\\n cursor: grab;\\n}\\n\\n.lg-outer.lg-grabbing img.lg-object {\\n cursor: move;\\n cursor: -webkit-grabbing;\\n cursor: -moz-grabbing;\\n cursor: -o-grabbing;\\n cursor: -ms-grabbing;\\n cursor: grabbing;\\n}\\n\\n.lg-outer .lg-content {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n}\\n\\n.lg-outer .lg-inner {\\n width: 100%;\\n position: absolute;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n -webkit-transition: opacity 0s;\\n -o-transition: opacity 0s;\\n transition: opacity 0s;\\n white-space: nowrap;\\n}\\n\\n.lg-outer .lg-item {\\n display: none !important;\\n}\\n\\n.lg-outer .lg-item:not(.lg-start-end-progress) {\\n background: url(\\\"../images/loading.gif\\\") no-repeat scroll center center transparent;\\n}\\n\\n.lg-outer.lg-css3 .lg-prev-slide,\\n.lg-outer.lg-css3 .lg-current,\\n.lg-outer.lg-css3 .lg-next-slide {\\n display: inline-block !important;\\n}\\n\\n.lg-outer.lg-css .lg-current {\\n display: inline-block !important;\\n}\\n\\n.lg-outer .lg-item,\\n.lg-outer .lg-img-wrap {\\n display: inline-block;\\n text-align: center;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.lg-outer .lg-item:before,\\n.lg-outer .lg-img-wrap:before {\\n content: '';\\n display: inline-block;\\n height: 100%;\\n vertical-align: middle;\\n}\\n\\n.lg-outer .lg-img-wrap {\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n white-space: nowrap;\\n font-size: 0;\\n}\\n\\n.lg-outer .lg-item.lg-complete {\\n background-image: none;\\n}\\n\\n.lg-outer .lg-item.lg-current {\\n z-index: 1060;\\n}\\n\\n.lg-outer .lg-object {\\n display: inline-block;\\n vertical-align: middle;\\n max-width: 100%;\\n max-height: 100%;\\n width: auto;\\n height: auto;\\n position: relative;\\n}\\n\\n.lg-outer .lg-empty-html.lg-sub-html,\\n.lg-outer .lg-empty-html .lg-sub-html {\\n display: none;\\n}\\n\\n.lg-outer.lg-hide-download .lg-download {\\n opacity: 0.75;\\n pointer-events: none;\\n}\\n\\n.lg-outer .lg-first-slide .lg-dummy-img {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n}\\n\\n.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components {\\n -webkit-transform: translate3d(0, 0%, 0);\\n transform: translate3d(0, 0%, 0);\\n opacity: 1;\\n}\\n\\n.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html {\\n opacity: 1;\\n transition: opacity 0.2s ease-out 0.15s;\\n}\\n\\n.lg-backdrop {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 1040;\\n background-color: #000;\\n opacity: 0;\\n will-change: auto;\\n -webkit-transition: opacity 333ms ease-in 0s;\\n -o-transition: opacity 333ms ease-in 0s;\\n transition: opacity 333ms ease-in 0s;\\n}\\n\\n.lg-backdrop.in {\\n opacity: 1;\\n}\\n\\n.lg-css3.lg-no-trans .lg-prev-slide,\\n.lg-css3.lg-no-trans .lg-next-slide,\\n.lg-css3.lg-no-trans .lg-current {\\n -webkit-transition: none 0s ease 0s !important;\\n -moz-transition: none 0s ease 0s !important;\\n -o-transition: none 0s ease 0s !important;\\n transition: none 0s ease 0s !important;\\n}\\n\\n.lg-css3.lg-use-css3 .lg-item {\\n -webkit-backface-visibility: hidden;\\n -moz-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n\\n.lg-css3.lg-fade .lg-item {\\n opacity: 0;\\n}\\n\\n.lg-css3.lg-fade .lg-item.lg-current {\\n opacity: 1;\\n}\\n\\n.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current {\\n -webkit-transition: opacity 0.1s ease 0s;\\n -moz-transition: opacity 0.1s ease 0s;\\n -o-transition: opacity 0.1s ease 0s;\\n transition: opacity 0.1s ease 0s;\\n}\\n\\n.lg-css3.lg-use-css3 .lg-item.lg-start-progress {\\n -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\\n -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\\n -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\\n transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\\n}\\n\\n.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress {\\n -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;\\n -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;\\n -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;\\n transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;\\n}\\n\\n.lg-css3.lg-slide.lg-use-css3 .lg-item {\\n opacity: 0;\\n}\\n\\n.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0);\\n}\\n\\n.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0);\\n}\\n\\n.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n}\\n\\n.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {\\n -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;\\n -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;\\n -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;\\n transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;\\n}\\n\\n.lg-container {\\n display: none;\\n}\\n\\n.lg-container.lg-show {\\n display: block;\\n}\\n\\n.lg-container.lg-dragging-vertical .lg-backdrop {\\n -webkit-transition-duration: 0s !important;\\n transition-duration: 0s !important;\\n}\\n\\n.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current {\\n -webkit-transition-duration: 0s !important;\\n transition-duration: 0s !important;\\n opacity: 1;\\n}\\n\\n.lg-inline .lg-backdrop,\\n.lg-inline .lg-outer {\\n position: absolute;\\n}\\n\\n.lg-inline .lg-backdrop {\\n z-index: 1;\\n}\\n\\n.lg-inline .lg-outer {\\n z-index: 2;\\n}\\n\\n.lg-inline .lg-maximize:after {\\n content: '\\\\e909';\\n}\\n\\n.lg-components {\\n -webkit-transform: translate3d(0, 100%, 0);\\n transform: translate3d(0, 100%, 0);\\n will-change: transform;\\n -webkit-transition: -webkit-transform 0.35s ease-out 0s;\\n -moz-transition: -moz-transform 0.35s ease-out 0s;\\n -o-transition: -o-transform 0.35s ease-out 0s;\\n transition: transform 0.35s ease-out 0s;\\n z-index: 1080;\\n position: absolute;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t335: 0,\n\t297: 0,\n\t714: 0,\n\t132: 0,\n\t205: 0,\n\t185: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunk_dryven_ig_windkraft\"] = globalThis[\"webpackChunk_dryven_ig_windkraft\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [297,714,132,205,185], () => (__webpack_require__(149)))\n__webpack_require__.O(undefined, [297,714,132,205,185], () => (__webpack_require__(163)))\n__webpack_require__.O(undefined, [297,714,132,205,185], () => (__webpack_require__(827)))\n__webpack_require__.O(undefined, [297,714,132,205,185], () => (__webpack_require__(20)))\n__webpack_require__.O(undefined, [297,714,132,205,185], () => (__webpack_require__(179)))\nvar __webpack_exports__ = __webpack_require__.O(undefined, [297,714,132,205,185], () => (__webpack_require__(316)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","module","exports","e","t","o","n","i","id","loaded","call","m","c","p","__esModule","default","Object","assign","arguments","length","prototype","hasOwnProperty","a","u","s","d","b","y","h","w","k","x","offset","delay","easing","duration","disable","once","startEvent","throttleDelay","debounceDelay","disableMutationObserver","j","O","M","forEach","node","removeAttribute","S","mobile","phone","tablet","_","document","all","window","atob","isSupported","querySelector","setAttribute","indexOf","readyState","addEventListener","ready","init","refresh","refreshHard","v","g","apply","r","setTimeout","f","l","clearTimeout","this","TypeError","leading","maxWait","trailing","cancel","flush","valueOf","replace","test","slice","Symbol","iterator","constructor","NaN","parseInt","self","Function","toString","Math","max","min","Date","now","dataset","aos","children","MutationObserver","WebKitMutationObserver","MozMutationObserver","observe","documentElement","childList","subtree","removedNodes","Array","addedNodes","concat","defineProperty","value","navigator","userAgent","vendor","opera","enumerable","configurable","writable","key","substr","getAttribute","position","classList","add","remove","pageYOffset","innerHeight","anchor","anchorPlacement","isNaN","querySelectorAll","top","offsetHeight","offsetLeft","offsetTop","tagName","scrollLeft","scrollTop","offsetParent","left","map","Accordion","_this","_classCallCheck","accordions","accordion","accordionItems","accordionItem","accordionToggle","item","toggleAccordionItem","checked","_createClass","open","checkbox","accordionContent","style","height","scrollHeight","Livewire","hook","target","source","api","converter","defaultAttributes","set","name","attributes","expires","toUTCString","encodeURIComponent","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","create","get","cookies","jar","parts","join","found","read","withAttributes","withConverter","freeze","path","_typeof","_createForOfIteratorHelper","isArray","_arrayLikeToArray","from","_unsupportedIterableToArray","_n","F","done","next","_defineProperties","_toPropertyKey","toPrimitive","String","Number","_toPrimitive","CookieConsent","options","undefined","_defaults","autorun","callbacks","prefix","_options","endsWith","_registerCPCallbacks","runCallbacks","cookieModal","cookieCovers","cookieCategory","callback","push","cookieCategories","_runSplitList","hasConsent","_this2","keys","runCallback","_step","consent","_iterator","Cookies","err","setConsent","_this3","cookieType","_this4","snippets","snippet","category","snippetCode","text","trim","registerCallback","str","func","CookieModal","instance","_instance","_modal","_modalCheckboxes","_getUncheckedModals","check","_initButton","checkAll","_initAccordion","show","display","opacity","every","_finalize","click","_this5","hide","hideConsented","element","_this6","prepare","event","preventDefault","_pushSettings","_this7","_toggleAccordionItem","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","CookieCover","handle","categories","htmlSnippet","_fetchHTMLSnippet","_insertHTMLSnippet","snippetElement","helperElement","createElement","innerHTML","_makeScriptTagsExecutable","insertAdjacentElement","replaceWith","childNodes","parentElement","scriptTags","originalScript","newScript","attr","scriptText","createTextNode","appendChild","parentNode","replaceChild","hideIfConsented","CookieCovers","_covers","cover","filter","getCoversByHandle","CookieByte","FormAssets","assetsHandler","selectedImage","fileNames","files","clearSelection","loadImage","_this$files","reader","FileReader","onload","result","readAsDataURL","selectedFilesChanged","input","values","accept","includes","HOOKS","defaults","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","errorHandler","console","getWeek","givenDate","date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","bool","debounce","fn","wait","args","arrayify","obj","toggleClass","elem","className","tag","content","textContent","clearNode","firstChild","removeChild","findParent","condition","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","getEventTarget","composedPath","error","doNothing","monthToStr","monthNumber","revFormat","D","dateObj","monthName","setMonth","G","hour","getHours","parseFloat","H","J","day","K","RegExp","shortMonth","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","Y","year","setFullYear","Z","ISODate","minutes","setMinutes","month","unixMillSeconds","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","substring","createDateFormatter","_a","_b","config","_c","l10n","_d","isMobile","frmt","overrideLocale","formatDate","arr","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","val","Error","compareDates","date1","date2","calculateSecondsSinceMidnight","hours","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","__assign","__spreadArrays","il","jl","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","bind","setCalendarWidth","requestAnimationFrame","visibility","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","isKeyDown","eventTarget","step","curValue","delta","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","secondsSinceMidnight","floor","parseSeconds","setHoursFromDate","onYearInput","changeYear","handler","ev","el","_handlers","removeEventListener","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","createEvent","dispatchEvent","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","focusOnDay","current","dayFocused","isInView","body","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","documentClick","isOpen","eventTarget_1","isCalendarElement","lostFocus","relatedTarget","isIgnored","some","timeContainer","close","clear","newYear","newYearNum","isNewYear","dateToCheck","enable","array","parsed","to","onBlur","isInput","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","keyCode","blur","isTimeObj","focusAndClose","selectDate","delta_1","ctrlKey","stopPropagation","currentYearElement","elems","pluginElements","shiftKey","charAt","toLowerCase","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","dayElem","ts","ts1","ts2","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","getInputElem","setupLocale","l10ns","JSON","parse","stringify","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","bottom","showOnTop","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","head","getDocumentStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","sort","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","lastChild","insertBefore","_type","wasOpen","select","option","CALLBACKS","setSelectedDate","toggle","updatePositionElement","inputDate","dates","parseDateRules","rule","data","hooks","initEvent","specificFormat","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","parseConfig","nodeName","placeholder","required","nextSibling","setupInputs","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","separator","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","appendTo","nodeType","build","evt","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","selText","bindEvents","isSafari","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","jQuery","fp_incr","DatePicker","_input$value","German","datePicker","BREAKPOINT_SM","convertRemToPixels","BREAKPOINT_MD","BREAKPOINT_LG","IS_MOBILE_DEVICE","remValue","getComputedStyle","fontSize","DropdownMenu","dropdown","initSelect","Map","domElement","emptyOptionsMessage","focusedOptionIndex","multiple","search","useTagMultiselect","filteredValue","_this$value","hasValue","isMobileDevice","GLOBALS","selectionSummary","isSelected","_this$value2","closeListbox","domElementValueChanged","focusNextOption","$refs","listbox","scrollIntoView","block","focusPreviousOption","initDropdown","updateOptions","hasAttribute","detail","removeItem","setInterval","$nextTick","$watch","searchChanged","updateDomElement","term","filteredEntries","selectOption","toggleListboxVisibility","selectedValue","Event","domOptions","Form","form","alpineFormLogic","formErrors","loading","formSucceeded","formFailed","requiredFieldsEmpty","formData","FormData","append","showSuccessMessage","showErrorMessage","showFieldsMissingMessage","redirect","initForm","submitData","reset","fetch","action","method","headers","then","response","status","json","errors","_data$error","location","href","STATE_UP","STATE_DOWN","Slideable","targetDisplay","originalStyle","originalDisplay","state","_calculateSize","overflow","transition","isHidden","callbackDown","_prepare","callbackUp","down","up","COOKIE_IDENTIFIER","AlertNotice","mainElement","getElementById","slideableMainElement","initCloseButton","initToggles","initLink","alertNoticeElement","slideableAlertNoticeElement","toggleButtons","toggleButton","link","Toggle","ATTRIBUTE","pressed","_this$element$getAttr","newPressed","HeaderMenu","headermenu","navigationList","childElementCount","initHamburgerMenu","initDropdownMenu","recalculateViewHeight","navigationElements","slideableNavigationList","navItem","elements","burgermenu","changeBasedOnScrollOffset","desktopHeader","logo","logoAlt","clientHeight","vh","setProperty","lGEvents","lightGalleryCoreSettings","speed","licenseKey","addClass","startClass","backdropDuration","startAnimationDuration","zoomFromOrigin","hideBarsDelay","showBarsAfter","slideDelay","supportLegacyBrowser","allowMediaOverlap","videoMaxSize","loadYouTubePoster","defaultCaptionHeight","ariaLabelledby","ariaDescribedby","resetScrollPosition","hideScrollbar","closable","swipeToClose","closeOnTap","showCloseIcon","showMaximizeIcon","loop","escKey","keyPress","trapFocus","controls","slideEndAnimation","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","numberOfSlideItemsInDom","selectWithin","nextHtml","prevHtml","index","iframeWidth","iframeHeight","iframeMaxWidth","iframeMaxHeight","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","extraProps","exThumbImage","mobileSettings","strings","closeGallery","toggleMaximize","previousSlide","nextSlide","playVideo","mediaLoadingFailed","lgQuery","cssVenderPrefixes","_getSelector","firstElement","_getFirstEl","generateUUID","random","context","_each","_setCssVendorPrefix","cssProperty","property","group1","toUpperCase","isEventMatched","eventName","eventNamespace","find","$LG","first","eq","parent","removeAttr","attrs","classNames","removeClass","hasClass","attribute","css","on","events","listener","eventListeners","off","trigger","customEvent","CustomEvent","load","url","res","html","prepend","empty","rect","bodyMarginLeft","marginLeft","currentStyle","clientWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","params","bubbles","cancelable","initCustomEvent","Element","matches","msMatchesSelector","webkitMatchesSelector","defaultDynamicOptions","convertToData","spacing","defaultLgSize","lgSize","isResponsiveSizes","wWidth","innerWidth","size_1","size","cWidth","cHeight","maxWidth","maxHeight","ratio","imageSize","LGel","containerRect","wHeight","elWidth","elHeight","elStyle","borderLeft","borderTop","src","iframeTitle","altAttr","srcset","sizes","sources","imgMarkup","sourceTag","srcItms","rsWidth","rsSrc","_src","img","complete","naturalWidth","_poster","dummyImg","videoContStyle","playVideoString","_isVideo","youtube","vimeo","items","dynamicElements","availableDynamicOptions","specified","dynamicAttr","label","currentItem","alt","thumb","subHtml","isHTML5VIdeo","html5","wistia","lgId","LightGallery","lgOpened","lGalleryOn","lgBusy","currentItemsInDom","prevScrollTop","bodyPaddingRight","isDummyImageRemoved","dragOrSwipeEnabled","mediaContainerPosition","generateSettings","buildModules","settings","galleryItems","getItems","normalizeSettings","validateLicense","addSlideVideoInfo","buildStructure","triggerPosterClick","arrow","openGalleryOnItemClick","_loop_1","this_1","$element","uuid","currentItemIndex","openGallery","plugin","getSlideItem","getSlideItemId","getIdName","manageSingleSlideClassName","outer","$container","subHtmlCont","addClasses","containerClassName","closeIcon","maximizeIcon","template","$lgComponents","$backdrop","$inner","$content","$toolbar","outerClassNames","refreshOnResize","hideBars","manageCloseGallery","initModules","__slideVideoInfo","getMediaContainerPosition","top_1","currentImageSize","resizeVideoSlide","imgStyle","getDummyImgStyles","lgVideoStyle","getVideoContStyle","updateSlides","currentSrc","updateControls","_index","galleryItem","itemIndex","organizeSlideItems","loadContent","updateCurrentCounter","shouldHideScrollbar","bodyRect","scrollbarWidth","resetScrollBar","itemsToBeInsertedToDom","getItemsToBeInsertedToDom","addHtml","transform","setMediaContainerPosition","timeout","currentSlide_1","slide","captionHeight","thumbContainer","hideBarTimeout","initPictureFill","$img","picturefill","counterHtml","subHtmlUrl","fL","currentSlide","getDummyImageContent","$currentSlide","$currentItem","_dummyImgSrc","dummyImgContent","setImgMarkup","currentGalleryItem","isFirstSlideWithZoomAnimation","onSlideObjectLoad","$slide","isHTML5VideoWithoutPoster","onLoad","onError","mediaObject","onLgObjectLoad","isFirstSlide","triggerSlideItemLoad","_speed","getSlideType","poster","video","rec","_html5Video","responsive","srcDyItms","videoInfo","iframe","top_2","videoSize","markup","html5Video","hasPoster","loadContentOnFirstSlideLoad","prevIndex","numberOfItems","possibleNumberOfItems","prevIndexItem","_element","idx","numberOfExistingItems","getPreviousSlideIndex","currentItemId","setDownloadValue","downloadUrl","$download","makeSlideAnimation","direction","currentSlideItem","previousSlideItem","fromTouch","fromThumb","numberOfGalleryItems","previousSlideItem_1","top_3","arrowDisable","touchPrev","touchNext","updateCounterTotal","touchMove","startCoords","endCoords","distanceX","pageX","distanceY","pageY","allowSwipe","swipeDirection","setTranslate","gutter","scale","touchEnd","distance","triggerClick","distanceAbs","goToNextSlide","goToPrevSlide","isPosterElement","isMoved","isSwiping","$item","touches","touchAction","manageSwipeClass","isDraging","_touchNext","_touchPrev","_loop","$prev","$next","$el","xValue","yValue","scaleX","scaleY","lastCall","deltaY","isSlideElement","playButton","invalidateItems","preventScroll","focusableEls","firstFocusableEl","lastFocusableEl","mousedown","force","top_4","destroyModules","removeTimeout","destroyGallery","closeTimeout","videoSettings","autoplayFirstVideo","youTubePlayerParams","vimeoPlayerParams","wistiaPlayerParams","gotoNextSlideOnVideoEnd","autoplayVideoOnSlide","videojs","videojsTheme","videojsOptions","param","getYouTubeParams","youTubePlayerParamsSettings","slideUrlParams","pair","playerParamsSettings","wmode","autoplay","mute","enablejsapi","Video","core","onHasVideo","loadVideoOnPosterClick","onSlideItemLoad","onBeforeSlide","onAfterSlide","loadAndPlayVideo","appendVideos","pauseVideo","controlVideo","getVideoHtml","videoTitle","commonIframeProps","videoId","youTubeParams","playerParams","defaultParams","urlParams","defaultPlayerParams","hash","pop","isPrivate","getVimeoURLParams","wistiaId","html5VideoMarkup","tracks","trackAttributes","track","html5VideoAttrs_1","videoAttributes_1","videoParams","videoHtml","$videoElement","Vimeo","Player","_wq","contentWindow","postMessage","forcePlay","_html","videoJsPlayer_1","$tempImg","onVideoLoadAfterPosterClick","locals","MediaViewer","lightGalleries","lgVideo","gallery","lightGallery","history","pushState","lg","_history$state","back","onpopstate","_regeneratorRuntime","asyncIterator","toStringTag","define","Generator","Context","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","prev","stop","rval","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","Modal","modalElement","initTime","panel","dismissers","closeOnClickOutside","triggerType","triggerWaitingPeriod","buttonDismiss","triggerAfter","triggerWhenVisible","_triggerAfter","_callee","_context","pause","triggerExecuted","_x","_triggerWhenVisible","_callee2","observer","popupPageModule","_context2","IntersectionObserver","entries","isIntersecting","closest","_show","_callee3","_context3","_hide","_callee4","_context4","_pause","_callee5","ms","_ms","promise","_context5","_x2","modalTriggers","modalsWithAutoTrigger","activeModals","triggerElement","modal","ResponsiveImage","responsiveResizeObserver","ResizeObserver","entry","imgWidth","ceil","responsiveImage","videos","play","endVal","version","startVal","decimalPlaces","useEasing","useGrouping","useIndianSeparators","smartEasingThreshold","smartEasingAmount","decimal","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","paused","count","startTime","remaining","frameVal","easingFn","printValue","rAF","update","onCompleteCallback","formatNumber","numerals","easeOutExpo","pow","formattingFn","validateValue","resetDuration","onScrollFns","handleScroll","onscroll","scrollY","start","determineDirectionAndSmartEasing","onStartCallback","pauseResume","cancelAnimationFrame","render","ensureNumber","NumberAnimation","animateNumbers","numbers","numberCounter","numAnim","CountUp","extend","ssrDocument","createElementNS","importNode","host","hostname","origin","pathname","protocol","ssrWindow","replaceState","go","getPropertyValue","Image","screen","matchMedia","win","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","progress","easeProgress","cos","PI","currentPosition","scrollTo","slideEl","shadowRoot","HTMLSlotElement","assignedElements","showWarning","classes","elementStyle","prop","previousSibling","parents","elementOuterSize","includeMargins","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","major","minor","num","isWebView","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","priority","eventsListeners","destroyed","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","unshift","toggleSlideClasses$1","toggleSlideClasses","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeIndex","grid","rows","activeColumn","preloadColumns","column","slideIndexLastInView","rewind","realIndex","updateSize","isHorizontal","isVertical","getDirectionPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextEls","nextElementSibling","elementNextAll","prevEls","previousElementSibling","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","getTranslate","virtualTranslate","currentTranslate","byController","newProgress","previousTranslate","translateTo","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","transitionDuration","transitionDelay","transitionStart","transitionEnd","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","button","isTouched","swipingClassHasValue","noSwipingClass","eventPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","closestElement","allowClick","swipeHandler","currentX","currentY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","bySwiperTouchMove","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","setBreakpoint","isVirtualLoop","running","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onDocumentTouchStart","documentTouchHandlerProceeded","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","unsetGrabCursor","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","hasLoop","containerEl","currentHeight","points","point","minRatio","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","moving","isLocked","cursor","attachEvents","detachEvents","wasLocked","lastSlideRightEdge","suffixes","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","checkProps","Navigation","getEl","toggleEl","subEl","disabledClass","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetIsButton","pagination","clickable","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","Autoplay","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","run","delayForce","currentSlideDelay","activeSlideEl","getSlideDelay","proceed","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","effectParams","transformEl","backfaceVisibility","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","fireCallBack","EffectFade","fadeEffect","crossFade","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","shadowEl","tx","ty","slideOpacity","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","mutations","observerUpdate","characterData","observeParents","observeSlideChildren","containerParents","disconnect","HeroNico","swiperContainer","swiperDelay","Globals","initProgressbar","resetProgressbars","delaySeconds","bar","SliderMartin","swiperElement","slider","swiperContainers","sliderMartinInstances","SliderAlbert","_defineProperty","sliderAlbertInstances","AOSClass","AOS","resetCardDelay","component","cardsWrapper","cardWrapper","card","modulus","columnSize","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","rejected","getDefaultExportFromCjs","SuppressedError","fastDeepEqual","equal","flags","isEqual","DEFAULT_ID","LoaderStatus","Loader","apiKey","authReferrerPolicy","channel","client","language","libraries","mapIds","nonce","region","retries","FAILURE","SUCCESS","LOADING","INITIALIZED","failed","createUrl","deleteScript","script","loadPromise","loadCallback","google","importLibrary","execute","maps","setScript","q","Set","URLSearchParams","onerror","libraryPromises","library","ErrorEvent","loadErrorCallback","onerrorEvent","resetIfRetryingFailed","cb","Maps","loadMaps","loader","setupMap","_loadMaps","mapElement","centerLat","centerLng","zoomLevel","mapOptions","zoom","center","LatLng","streetViewControl","overviewMapControl","mapTypeControl","fullscreenControl","mapId","markers","drawMarks","addListener","getZoom","marker","wheelsJson","wheels","_slicedToArray","addFacility","wheel","addWheel","pin","iconElement","AdvancedMarkerElement","lat","lng","infoWindow","InfoWindow","project","facilityInfo","typeInfo","householdInfo","shouldFocus","lim","p2b","n2b","b2n","n2p","map$1","A","B","C","E","hex","h1","h2","hexString","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","p1","p2","hwb2rgb","hsv2rgb","X","V","T","R","Q","N","L","I","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","nameParse","unpacked","tkeys","ok","nk","unpack","transparent","RGB_RE","modHSL","tmp","clone","proto","fromObject","functionParse","rgbParse","Color","ret","_rgb","_valid","valid","rgbString","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","noop","uid","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merge","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","part","_splitKey","_getKeyResolver","_capitalize","defined","isFunction","setsEqual","has","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","niceNum","roundedRange","niceRange","fraction","isNumber","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","listeners","_arrayUnique","requestAnimFrame","throttled","argsToUse","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","meta","animationsDisabled","pointCount","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","colors","intlCache","cacheKey","formatter","Intl","NumberFormat","getNumberFormat","formatters","numeric","tickValue","ticks","chart","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","descriptors","getScope$1","root","scope","Defaults","_descriptors","_appliers","animation","backgroundColor","borderColor","datasets","devicePixelRatio","getDevicePixelRatio","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","local","appliers","_scriptable","startsWith","_indexable","_fallback","properties","active","resize","animations","visible","autoPadding","padding","beginAtZero","bounds","clip","grace","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","borderWidth","stroke","_isPointInArea","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","fillStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","translation","textAlign","textBaseline","setRenderOpts","backdrop","strokeText","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","props","objProps","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","inputs","info","cacheable","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","Reflect","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","isScriptable","getValue","delete","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","ownerDocument","defaultView","positions","getPositionedStyle","styles","pos","getRelativePosition","borderBox","paddings","borders","box","offsetX","offsetY","useOffsetPos","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalizeSegment","_boundSegment","segment","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","Animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","currentStep","_refresh","_update","draw","_active","_total","tick","_getAnims","charts","listen","cur","_duration","animator","interpolators","boolean","factor","c0","Animation","cfg","currentValue","_fn","_easing","_start","_target","_prop","_from","_to","_promises","elapsed","promises","rej","resolved","Animations","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","iAxisKey","vAxisKey","adata","convertObjectDataToArray","isExtensible","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","DoughnutController","animateRotate","animateScale","cutout","circumference","legend","generateLabels","fontColor","getDataVisibility","legendItem","toggleDataVisibility","super","innerRadius","outerRadius","getter","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","calculateCircumference","animationOpts","centerX","centerY","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","PolarAreaController","angleLines","circular","pointLabels","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","controllers","BarController","categoryPercentage","barPercentage","grouped","_index_","_value_","bars","getBasePixel","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","currentParsed","iScaleValue","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","baseValue","minBarLength","actualBase","floating","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","BubbleController","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","registry","getElement","DateAdapterBase","members","startOf","endOf","adapters","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","outerWidth","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","addBox","_layers","z","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","createAttachObserver","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","detach","isConnected","tooltipPosition","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","titleX","titleY","titleArgs","tz","gz","bz","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","defaultRoutes","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","Registry","_typedRegistries","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","_init","notify","_createDescriptors","descriptor","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","determineAxis","scaleOptions","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getChart","moveNumericKeys","intKey","getSizeForArea","field","Chart","invalidatePlugins","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","_resizeBeforeDraw","_resize","newSize","newRatio","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","getBarBounds","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","ArcElement","chartX","chartY","rAdjust","nonZeroBetween","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","BarElement","addRectPath","mouseX","mouseY","inXRange","inYRange","PointElement","hoverRadius","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","getColorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","containsColorsDefinitions","plugin_colors","forceOverride","_args","chartOptions","containsColorDefenition","colorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","decimated","samples","bucketWidth","sampledIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAy","pointAx","lttbDecimation","minIndex","maxIndex","xMin","dx","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","itemsEqual","plugin_legend","afterEvent","ci","useBorderRadius","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","xSet","xAverage","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","Colors","Decimation","Filler","SubTitle","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_getLabelForValue","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","relativeLabelSize","LinearScaleBase","_startValue","_endValue","_valueRange","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","minExp","exp","startExp","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","itemOpts","extra","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","millisecond","common","second","minute","week","quarter","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","displayFormats","_unit","_majorUnit","_offsets","_normalized","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","prevTarget","nextTarget","span","CategoryScale","_addedLabels","added","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","ChartClass","chartElement","chartType","chartLabels","chartData","colorIndex","siteInitialization","initAll","_i","args_1","fp","de","factory","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","cssWithMappingToString","list","mediaQuery","dedupe","alreadyImportedModules","_arrayWithHoles","_e","_arr","_iterableToArrayLimit","minLen","_nonIterableRest","arr2","_item","cssMapping","btoa","base64","unescape","sourceMapping","sourceURLs","sourceRoot","needQuotes","memo","isOldIE","Boolean","styleTarget","HTMLIFrameElement","contentDocument","stylesInDom","getIndexByIdentifier","modulesToDom","idCountMap","identifiers","media","sourceMap","references","updater","insertStyleElement","insert","textStore","replaceText","replacement","applyToSingletonTag","styleSheet","cssText","cssNode","applyToTag","singleton","singletonCounter","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","chunkIds","notFulfilled","definition","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","globalThis","nc","__webpack_exports__"],"sourceRoot":""}