{"version":3,"file":"/js/site.js","mappings":"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","sources":["webpack://@dryven/therainworkers.org/webpack/runtime/chunk loaded","webpack://@dryven/therainworkers.org/./node_modules/axios/index.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/adapters/xhr.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/axios.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/cancel/Cancel.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/cancel/CancelToken.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/cancel/isCancel.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/Axios.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/InterceptorManager.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/buildFullPath.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/createError.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/dispatchRequest.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/enhanceError.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/mergeConfig.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/settle.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/core/transformData.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/defaults.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/bind.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/buildURL.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/combineURLs.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/cookies.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/spread.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/helpers/validator.js","webpack://@dryven/therainworkers.org/./node_modules/axios/lib/utils.js","webpack://@dryven/therainworkers.org/./resources/js/modules/accordion.js","webpack://@dryven/therainworkers.org/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://@dryven/therainworkers.org/./vendor/ddm-studio/cookie-byte/resources/js/cookie-consent.js","webpack://@dryven/therainworkers.org/./vendor/ddm-studio/cookie-byte/resources/js/cookie-modal.js","webpack://@dryven/therainworkers.org/./vendor/ddm-studio/cookie-byte/resources/js/cookie-cover.js","webpack://@dryven/therainworkers.org/./vendor/ddm-studio/cookie-byte/resources/js/cookie-covers.js","webpack://@dryven/therainworkers.org/./resources/js/modules/cookie-byte.js","webpack://@dryven/therainworkers.org/./resources/js/form/form-utils.js","webpack://@dryven/therainworkers.org/./resources/js/form/form-assets.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/types/options.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/index.js","webpack://@dryven/therainworkers.org/./resources/js/form/date-picker.js","webpack://@dryven/therainworkers.org/./resources/js/form/dropdown.js","webpack://@dryven/therainworkers.org/./resources/js/form/form.js","webpack://@dryven/therainworkers.org/./resources/js/globals.js","webpack://@dryven/therainworkers.org/./resources/js/modules/modal.js","webpack://@dryven/therainworkers.org/./resources/js/navigation/alert-notice.js","webpack://@dryven/therainworkers.org/./resources/js/classes/toggle.js","webpack://@dryven/therainworkers.org/./resources/js/classes/slideable.js","webpack://@dryven/therainworkers.org/./resources/js/navigation/navigation.js","webpack://@dryven/therainworkers.org/./resources/js/modules/image-gallery.js","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/lightgallery.es5.js","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/plugins/video/lg-video.es5.js","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/css/lightgallery.css?d388","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/css/lg-video.css?dcdf","webpack://@dryven/therainworkers.org/./resources/js/modules/media-viewer.js","webpack://@dryven/therainworkers.org/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://@dryven/therainworkers.org/./node_modules/swiper/shared/utils.mjs","webpack://@dryven/therainworkers.org/./node_modules/swiper/shared/swiper-core.mjs","webpack://@dryven/therainworkers.org/./node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://@dryven/therainworkers.org/./node_modules/swiper/modules/navigation.mjs","webpack://@dryven/therainworkers.org/./node_modules/swiper/shared/classes-to-selector.mjs","webpack://@dryven/therainworkers.org/./node_modules/swiper/modules/pagination.mjs","webpack://@dryven/therainworkers.org/./node_modules/@kurkle/color/dist/color.esm.js","webpack://@dryven/therainworkers.org/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://@dryven/therainworkers.org/./node_modules/chart.js/dist/chart.js","webpack://@dryven/therainworkers.org/./node_modules/chart.js/auto/auto.js","webpack://@dryven/therainworkers.org/./resources/js/classes/slider-anita.js","webpack://@dryven/therainworkers.org/./resources/js/classes/slider-base.js","webpack://@dryven/therainworkers.org/./resources/js/classes/slider-hannes.js","webpack://@dryven/therainworkers.org/./resources/js/classes/slider-peter.js","webpack://@dryven/therainworkers.org/./resources/js/classes/slider-finn.js","webpack://@dryven/therainworkers.org/./resources/js/modules/cards-team.js","webpack://@dryven/therainworkers.org/./resources/js/modules/logos.js","webpack://@dryven/therainworkers.org/./resources/js/site.js","webpack://@dryven/therainworkers.org/./tailwind.config.js","webpack://@dryven/therainworkers.org/./node_modules/custom-event-polyfill/polyfill.js","webpack://@dryven/therainworkers.org/./node_modules/desandro-matches-selector/matches-selector.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/arrow.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/body.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/group.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/head.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/option.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/root.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Components/value.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Config/Behavior.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Config/Callbacks.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Config/ClassNames.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Config/Config.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Easydropdown/Easydropdown.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Easydropdown/EasydropdownFacade.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Easydropdown/Timers.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Easydropdown/cache.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Easydropdown/factory.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Constants/KeyCodes.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Constants/Selectors.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/EventBinding.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleBodyClick.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleBodyMousedown.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleBodyMouseover.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleHeadClick.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleItemsListScroll.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectBlur.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectFocus.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectInvalid.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydown.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydownDown.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydownUp.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeypress.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/Handlers/handleWindowClick.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/bindEvents.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Events/getEventsList.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/Constants/AttributeChangeType.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/Constants/DomChangeType.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/Dom.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/PatchCommand.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/Renderer.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/domDiff.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Renderer/domPatch.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Polyfills/Element.matches.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/Constants/CollisionType.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/closestParent.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/composeClassName.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/createDomElementFromHtml.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/detectBodyCollision.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/dispatchOpen.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/getIsMobilePlatform.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/killSelectReaction.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/pollForSelectChange.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/pollForSelectMutation.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/Shared/Util/throttle.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/Constants/BodyStatus.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/Constants/ScrollStatus.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/Group.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/InjectedActions/closeOthers.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/InjectedActions/scrollToView.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/Option.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/State.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/StateManager.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/StateMapper.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/State/resolveActions.js","webpack://@dryven/therainworkers.org/./node_modules/easydropdown/dist/index.js","webpack://@dryven/therainworkers.org/./node_modules/ev-emitter/ev-emitter.js","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/images/loading.gif","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/fonts/lg.svg","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/fonts/lg.ttf","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/fonts/lg.woff2","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/fonts/lg.woff","webpack://@dryven/therainworkers.org/./node_modules/fizzy-ui-utils/utils.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://@dryven/therainworkers.org/./node_modules/flatpickr/dist/l10n/de.js","webpack://@dryven/therainworkers.org/./node_modules/get-size/get-size.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/Config.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/Constants/ArrayStrategy.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/FluentMerge.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/Messages.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/deriveCustomTypeInstance.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/handleMergeError.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/index.js","webpack://@dryven/therainworkers.org/./node_modules/helpful-merge/dist/merge.js","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/css/lg-video.css","webpack://@dryven/therainworkers.org/./node_modules/lightgallery/css/lightgallery.css","webpack://@dryven/therainworkers.org/./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/api.js","webpack://@dryven/therainworkers.org/./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://@dryven/therainworkers.org/./node_modules/laravel-mix/node_modules/css-loader/dist/runtime/getUrl.js","webpack://@dryven/therainworkers.org/./node_modules/masonry-layout/masonry.js","webpack://@dryven/therainworkers.org/./node_modules/outlayer/item.js","webpack://@dryven/therainworkers.org/./node_modules/outlayer/outlayer.js","webpack://@dryven/therainworkers.org/./node_modules/picocolors/picocolors.browser.js","webpack://@dryven/therainworkers.org/./node_modules/process/browser.js","webpack://@dryven/therainworkers.org/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://@dryven/therainworkers.org/./node_modules/tailwindcss/colors.js","webpack://@dryven/therainworkers.org/./node_modules/tailwindcss/lib/public/colors.js","webpack://@dryven/therainworkers.org/./node_modules/tailwindcss/lib/util/log.js","webpack://@dryven/therainworkers.org/webpack/bootstrap","webpack://@dryven/therainworkers.org/webpack/runtime/compat get default export","webpack://@dryven/therainworkers.org/webpack/runtime/define property getters","webpack://@dryven/therainworkers.org/webpack/runtime/hasOwnProperty shorthand","webpack://@dryven/therainworkers.org/webpack/runtime/jsonp chunk loading","webpack://@dryven/therainworkers.org/webpack/runtime/nonce","webpack://@dryven/therainworkers.org/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};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * ACCORDION.JS\n * Initializes all accordions used on a page\n */\n\nexport default class Accordion {\n\n\tstatic init() {\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\t\n\t\t\taccordionItems.forEach((accordionItem) => {\n\t\t\t\tconst accordionToggle = accordionItem.querySelector('.accordion-toggle');\n\t\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>,\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}\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} 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 FormUtils {\n\n\t/**\n\t * Shows errors at the respective position.\n\t * Example: If passed errors array contains a 'name' key, the error message will be placed below the Name field in the form\n\t * @param {Element} form\n\t * @param {Array} errors \n\t */\n\tstatic handleFormErrors(form, errors){\n\t\tconst formFieldsMissing = form.querySelector('.fields-missing-message');\n\n\t\tObject.keys(errors).forEach((key) => {\n\t\t\tlet error = errors[key];\n\t\t\tlet inputName = key;\n\n\t\t\tif(key.includes('.')) {\n\t\t\t\tlet parts = key.split('.');\n\n\t\t\t\tinputName = '';\n\t\t\t\tparts.forEach((part, index) => {\n\t\t\t\t\tif(index === 0)\n\t\t\t\t\t\tinputName += part;\n\t\t\t\t\telse inputName += '[' + part + ']';\n\t\t\t\t});\n\n\t\t\t\terror = \"The field with an asterisk (*) attached is required.\"\n\t\t\t}\n\n\t\t\tlet formElement = form.querySelector('[name=\"' + inputName + '\"]');\n\n\t\t\tif (!formElement)\n\t\t\t\tformElement = form.querySelector('[name=\"' + inputName + '[]\"]');\n\n\t\t\tif (!formElement)\n\t\t\t\treturn;\n\n\t\t\tlet formField = formElement.closest('.form-field');\n\t\t\tif(!formField)\n\t\t\t\treturn;\n\n\t\t\tlet inputError = formField.querySelector('.input-error');\n\t\t\tif(!inputError)\n\t\t\t\treturn;\n\t\t\t\t\n\t\t\tinputError.innerHTML = error;\n\t\t\tinputError.classList.remove(\"hidden\");\n\t\t});\n\n\t\tif(Object.keys(errors).length > 0 && formFieldsMissing != null)\n\t\t\tformFieldsMissing.classList.remove(\"hidden\");\n\t}\n\n\t/**\n\t * Hides all error fields in the passed form by assigning the css class 'hidden' to each of them\n\t * @param {Element} form \n\t */\n\tstatic hideErrorFields(form){\n\t\tconst errorFields = form.querySelectorAll('.input-error');\n\t\tconst formError = form.querySelector('.error-message');\n\t\tconst formFieldsMissingError = form.querySelector('.fields-missing-message');\n\n\t\terrorFields.forEach((errorField) => {\n\t\t\terrorField.classList.add('hidden');\n\t\t});\n\n\t\tif(formError)\n\t\t\tformError.classList.add('hidden');\n\n\t\tif(formFieldsMissingError)\n\t\t\tformFieldsMissingError.classList.add('hidden');\n\t}\n\n\t/**\n\t * Searches for all inputs/textareas in the passed forms and clears the values\n\t * @param {Element} form \n\t */\n\tstatic clearAllFields(form){\n\t\tconst formFields = form.querySelectorAll('input, textarea');\n\n\t\tformFields.forEach((field) => {\n\t\t\tfield.checked = false;\n\n\t\t\tif(field.type !== 'checkbox' && field.type !== 'hidden')\n\t\t\t\tfield.value = null;\n\n\t\t\tif(field.type == 'file')\n\t\t\t\tfield.onchange();\n\t\t});\n\t}\n\n}","\nexport default class FormAssets {\n\n static init(form) {\n\t\tconst fileInputs = form.querySelectorAll('input[type=\"file\"]');\n\t\n\t\tfileInputs.forEach(input => {\n\t\t\tinput.onchange = function () {\n\t\t\t\tconst id = input.id;\n\t\n\t\t\t\tlet fileName = input.files.length + ' File(s)';\n\t\t\t\tswitch (input.files.length) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tfileName = '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tfileName = input.files[0].name;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\n\t\t\t\tconst imageElement = document.querySelector('.uploaded-image[data-input=\"' + id + '\"]');\n\t\t\t\tconst fileNameElement = document.querySelector('.file-name[data-input=\"' + id + '\"]');\n\t\n\t\t\t\tif (imageElement) {\n\t\t\t\t\tif (input.files && input.files[0]) {\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onload = (e) => {\n\t\t\t\t\t\t\timageElement.style.backgroundImage = 'url(' + e.target.result + ')';\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(input.files[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\timageElement.style.backgroundImage = null;\n\t\t\t\t\t}\n\t\t\t\t} else fileNameElement.innerHTML = fileName;\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: \"\",\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: \"\",\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\", \"\" + self.config.getWeek(date) + \"\");\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 \\n \" + weekdays.join(\"\") + \"\\n \\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('input[type=\"date\"]').forEach((input) => {\n\t\t\tconst date = 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\n\t\t\tlet options = {\n\t\t\t\tlocale: German,\n\t\t\t\tdateFormat: 'd.m.Y',\n\t\t\t\tdisableMobile: true\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\tdatePicker.setDate(date);\n\t\t});\n\t}\n}","import easydropdown from 'easydropdown';\n\nexport default class DropdownMenu {\n\n\tstatic init() {\n\t\t// init easy dropdown and destroy all instances inside flatpickr\n\t\teasydropdown.all();\n\t\tconst flatpickrInstances = document.querySelectorAll('.flatpickr-calendar select');\n\t\tflatpickrInstances.forEach((select) => {\n\t\t\tconst edd = easydropdown(select);\n\t\t\tedd.destroy();\n\t\t});\n\t}\n}\n","import FormUtils from './form-utils';\nimport FormAssets from './form-assets';\nimport DatePicker from './date-picker';\nimport DropdownMenu from './dropdown';\n\nconst axios = require('axios');\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n/**\n * FORM.JS\n */\nexport default class Form {\n\n\tstatic init() {\n\t\treturn new Form();\n\t}\n\n\tconstructor() {\n\t\tDatePicker.init();\n\t\tDropdownMenu.init();\n\t\n\t\tconst forms = document.querySelectorAll('form.generic-form');\n\t\tforms.forEach((form) => {\n\t\t\tthis.initForm(form);\n\t\t});\n\t}\n\n\tinitForm(form) {\n\t\tif (!form)\n\t\t\treturn;\n\n\t\tFormAssets.init(form);\n\t\n\t\tconst successText = form.querySelector('.success-message');\n\t\tconst errorText = form.querySelector('.error-message');\n\t\tconst buttonSubmit = form.querySelector('.button-submit');\n\t\tconst redirectUriInput = form.querySelector('input[name=\"redirect_uri\"]');\n\t\tlet shouldRedirect = redirectUriInput && redirectUriInput.value != null;\n\t\tlet loadingSpinner = buttonSubmit.querySelector('.animate-spin');\n\t\t\n\t\tform.addEventListener('submit', (event) => {\n\t\t\tevent.preventDefault();\n\t\n\t\t\tloadingSpinner.classList.remove('hidden');\n\t\n\t\t\taxios.post(form.action, new FormData(form))\n\t\t\t\t.then(() => {\n\t\t\t\t\tFormUtils.hideErrorFields(form);\n\t\t\t\t\terrorText.classList.add('hidden');\n\t\t\t\t\tsuccessText.classList.remove('hidden');\n\t\n\t\t\t\t\tif (shouldRedirect)\n\t\t\t\t\t\twindow.location.href = redirectUriInput.value;\n\t\t\t\t\telse {\n\t\t\t\t\t\tloadingSpinner.classList.add('hidden');\n\t\t\t\t\t\tFormUtils.clearAllFields(form);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tloadingSpinner.classList.add('hidden');\n\t\t\t\t\tsuccessText.classList.add('hidden');\n\t\n\t\t\t\t\tFormUtils.hideErrorFields(form);\n\t\n\t\t\t\t\tif (error.response) {\n\t\t\t\t\t\t// Request made and server responded\n\t\t\t\t\t\tif (error.response.data && error.response.data.error && error.response.status == 400)\n\t\t\t\t\t\t\tFormUtils.handleFormErrors(form, error.response.data.error);\n\t\t\t\t\t\telse errorText.classList.remove('hidden');\n\t\n\t\t\t\t\t} else if (error.request) {\n\t\t\t\t\t\t// The request was made but no response was received\n\t\t\t\t\t\tconsole.log(error.request);\n\t\t\t\t\t\terrorText.classList.remove('hidden');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Something happened in setting up the request that triggered an Error\n\t\t\t\t\t\tconsole.log('Error', error.message);\n\t\t\t\t\t\terrorText.classList.remove('hidden');\n\t\t\t\t\t}\n\t\t\t\t});\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);\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","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 modalTriggersViaUrl = document.querySelectorAll(`[href*=\"/popup/\"]`);\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 links refering to the modal\n\t\tmodalTriggersViaUrl.forEach((triggerElement) => {\n\t\t\ttriggerElement.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tlet urlParts = triggerElement.href.split('/');\n\t\t\t\tlet popupId = urlParts.pop() || urlParts.pop(); // handle potential trailing slash\n\t\t\t\tlet selector = `#modal_${popupId}`;\n\t\t\t\tlet modal = document.querySelector(selector);\n\n\t\t\t\tif (modal)\n\t\t\t\t\tnew Modal(modal).show();\n\t\t\t});\n\t\t});\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\n\t\t\t\tif (modal)\n\t\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.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\t\tthis.eventHandlers = new Map();\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\taddEventListener(eventType, callback) {\n\t\tlet existingHandlers = this.eventHandlers.get(eventType) ?? [];\n\t\tthis.eventHandlers.set(eventType, existingHandlers);\n\t\tthis.eventHandlers.get(eventType).push(callback);\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('.bard__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(10);\n\t\tthis.element.classList.replace('entering', 'entering-to');\n\t\tawait this.pause(10);\n\t\tthis.element.classList.remove('entering-to');\n\n\t\t(this.eventHandlers.get('show') ?? []).forEach((callback) => {\n\t\t\tif (typeof callback == 'function')\n\t\t\t\tcallback();\n\t\t});\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\n\t\t(this.eventHandlers.get('hide') ?? []).forEach((callback) => {\n\t\t\tif (typeof callback == 'function')\n\t\t\t\tcallback();\n\t\t});\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}","/**\n * ALERT-NOTICE.JS\n */\n\nimport Cookies from 'js-cookie';\nimport Modal from '../modules/modal';\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\tlet alertNoticeModalEl = document.querySelector('.alert-notice');\n\t\t\n\t\tif (!alertNoticeModalEl)\n\t\t\treturn;\n\n\t\tthis.alertNoticeModal = new Modal(alertNoticeModalEl);\n\n\t\tthis.alertNoticeModal.addEventListener('hide', () => {\n\t\t\tCookies.set(COOKIE_IDENTIFIER, 'true');\n\t\t});\n\t\t\n\t\tif (Cookies.get(COOKIE_IDENTIFIER) !== 'true')\n\t\t\tthis.alertNoticeModal.show();\n\t}\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","const STATE_UP = 'UP';\nconst STATE_DOWN = 'DOWN';\n\nexport default class Slideable {\n\n\tconstructor(element, duration = 300) {\n\t\tthis.element = element;\n\t\tthis.duration = duration;\n\t\tthis.originalStyle = {};\n\t\tthis.originalDisplay = null;\n\t\tthis.state = STATE_UP;\n\t}\n\n\t_prepare() {\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 ease, width ' + this.duration + 'ms ease',\n\t\t\t},\n\t\t);\n\n\t\tthis._calculateSize();\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 = 'block';\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 = this.element.display;\n\t\tif (this.isHidden())\n\t\t\tthis.element.style.display = 'block';\n\t\tthis.height = this.element.getBoundingClientRect().height;\n\t\tthis.width = this.element.getBoundingClientRect().width;\n\t\tthis.element.style.display = display;\n\t}\n\n\tup(callbackUp = null) {\n\t\tif (typeof callbackUp === 'function') callbackUp();\n\n\t\tthis.state = STATE_UP;\n\t\tthis._prepare();\n\n\t\tthis.element.style.display = this.originalDisplay === 'none' ? 'block' : this.originalDisplay;\n\t\tthis.element.style.height = '0px';\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\t\t}, this.duration + 10);\n\t}\n\n\tdown(callbackDown = 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\t\t}, this.duration + 10);\n\n\t\tif (typeof callbackDown === 'function') callbackDown();\n\t}\n\n\ttoggle(callbackUp = null, callbackDown = null) {\n\t\tif (this.isHidden()) {\n\t\t\treturn this.up(callbackUp);\n\t\t} else {\n\t\t\treturn this.down(callbackDown);\n\t\t}\n\t}\n\n\tisHidden() {\n\t\treturn window.getComputedStyle(this.element).display === 'none';\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('nav');\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\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[aria-label~=\"Hamburger\"]');\n\n\t\tif (element === null)\n\t\t\treturn;\n\n\t\tconst slideableNavigationList = new Slideable(headermenu.querySelector('nav'));\n\t\tnew Toggle(element, () => {\n\t\t\tslideableNavigationList.toggle();\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\n\t\tif (elements.length === 0)\n\t\t\treturn;\n\n\t\telements.forEach((navItem) => {\n\t\t\tvar dropdown = new Slideable(navItem.querySelector('.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 (window.innerWidth < GLOBALS.BREAKPOINT_LG || document.querySelectorAll('.error-page').length > 0)\n\t\t\treturn;\n\n\t\tconst changeBasedOnScrollOffset = () => {\n\t\t\tlet scrollTop = document.documentElement.scrollTop;\n\n\t\t\tif (scrollTop > (window.innerHeight * 0.5)) {\n\t\t\t\theadermenu.classList.remove('headermenu-transparent');\n\t\t\t} else headermenu.classList.add('headermenu-transparent');\n\t\t};\n\n\t\twindow.addEventListener('scroll', changeBasedOnScrollOffset);\n\n\t\tchangeBasedOnScrollOffset();\n\t}\n}","/**\n * IMAGE-GALLERY.JS\n *\n * Initialization of image galleries on the page.\n */\n\nimport Masonry from \"masonry-layout\";\n\nexport default class ImageGallery {\n\n\t/**\n\t * Initializes image gallery (if existing) using following libraries:\n\t * #masonry-layout\n\t * #lightgallery\n\t * #imagesLoaded\n\t */\n\tstatic init() {\n\t\treturn new ImageGallery();\n\t}\n\n\tconstructor() {\n\t\tconst imageGalleries = document.querySelectorAll(\".masonry\");\n\t\tif (imageGalleries.length === 0) return;\n\t\n\t\timageGalleries.forEach((imageGallery) => {\n\t\t\tconst masonry = new Masonry(imageGallery, {\n\t\t\t\titemSelector: \".masonry-brick\",\n\t\t\t\tpercentPosition: true,\n\t\t\t\tcolumnWidth: \".grid-sizer\",\n\t\t\t\tgutter: \".gutter-sizer\",\n\t\t\t});\n\t\n\t\t\tmasonry.once(\"layoutComplete\", () => {\n\t\t\t\timageGallery.classList.add(\"load\");\n\t\t\t});\n\t\n\t\t\tmasonry.layout();\n\t\t});\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 \"
\\n \\n
\";\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 = \"\";\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 \"\";\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 \"
\\n
\\n \\n \" + playVideoString + \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \" + (dummyImg || '') + \"\\n \\n
\";\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 = \"\\n \";\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n subHtmlCont =\r\n '
';\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 ? \"\"\r\n : '';\r\n var maximizeIcon = this.settings.showMaximizeIcon\r\n ? \"\"\r\n : '';\r\n var template = \"\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \" + controls + \"\\n
\\n
\\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\r\n ? subHtmlCont\r\n : '') + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\r\n ? subHtmlCont\r\n : '') + \"\\n
\\n
\\n
\\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(\"\");\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 Demo\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: '

Image 1 title

Image 1 descriptions.

',\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 + (\"
\");\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 = \"
\\n \" + (this.index + 1) + \" /\\n \" + this.galleryItems.length + \"
\";\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(\"
\" + subHtml + \"
\");\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 = \"\";\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 = \" \" + imgContent + \"\";\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('' +\r\n _this.settings.strings['mediaLoadingFailed'] +\r\n '');\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 = \"
\";\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(\"
\");\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 Demo\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 Demo\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 Demo\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 = \"\";\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 = \"\";\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 = \"\";\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 += \"\";\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 += \"\";\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 = \"\";\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-9.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-9.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-9.use[1]!../../postcss-loader/dist/cjs.js??clonedRuleSet-9.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\tif (lightGalleries.length === 0) return;\n\n\t\tlightGalleries.forEach((gallery) => {\n\t\t\tlightGallery(gallery, {\n\t\t\t\tselector: \".media-viewer-item\",\n\t\t\t\tlicenseKey: atob(\"SEo3S04tU1RHUjctUjhLR0YtQ1UzVzM=\"),\n\t\t\t\tplugins: [lgVideo],\n\t\t\t\tdownload: false,\n\t\t\t\tmobileSettings: {\n\t\t\t\t\tshowCloseIcon: true,\n\t\t\t\t\tdownload: false,\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n}\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 return [...element.children].filter(el => el.matches(selector));\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}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, classesToTokens as h, getTranslate as i, elementTransitionEnd as j, isObject as k, getSlideTransformEl as l, makeElementsArray as m, nextTick as n, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, i as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, g as elementIndex, v 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: 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;\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 if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 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\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\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\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 slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\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\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 slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\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 // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n if (gridEnabled) {\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n } else {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\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 if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\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 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 (speed === void 0) {\n speed = this.params.speed;\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 (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) {\n return false;\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 // Update Index\n if (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 const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\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 (speed === void 0) {\n speed = this.params.speed;\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 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 (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 (speed === void 0) {\n speed = this.params.speed;\n }\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 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 (speed === void 0) {\n speed = this.params.speed;\n }\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 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 (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\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 (speed === void 0) {\n speed = this.params.speed;\n }\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 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 + 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 (!swiper.wrapperEl.contains(targetEl)) 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) {\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) {\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) {\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 });\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] : 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.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\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 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\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 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 el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\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 swiper.el.swiper = null;\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);\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.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\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 if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\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, g 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 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 swiper.slideToLoop(index);\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}\">`;\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 = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\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","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 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 x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '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.1\n * https://www.chartjs.org\n * (c) 2023 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 || typeof 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 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)) {\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 = _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.1\n * https://www.chartjs.org\n * (c) 2023 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 for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\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 return value;\n}\nfunction convertObjectDataToArray(data) {\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 x: key,\n y: 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 this._data = convertObjectDataToArray(data);\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 }\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 skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\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) {\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](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 node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\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 = _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.1\";\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._resize(width, height);\n this._resizeBeforeDraw = null;\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 betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\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}\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 if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\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 x = 0;\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 x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\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) {\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.ticks.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 && !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 { Swiper } from \"swiper\";\nimport { Navigation } from 'swiper/modules';\nimport { Chart, DoughnutController, ArcElement } from 'chart.js/auto';\n\nconst projectColors = require(\"../../../tailwind.config.js\").theme.colors;\nconst cutoutPercentage = 80;\nconst doughnutSize = 300;\n\nexport default class SliderAnita {\n chart = null;\n swiper = null;\n\n\tstatic initAll() {\n const sliderBaseContainers = document.querySelectorAll('.slider-anita.swiper');\n if (sliderBaseContainers.length === 0) return;\t\t\n\n sliderBaseContainers.forEach(container => {\n const sliderAnita = new SliderAnita();\n\n const config = {\n modules: [Navigation],\n navigation: {\n nextEl: '.swiper-button-next-anita',\n },\n slidesPerView: 1,\n spaceBetween: 50,\n autoHeight: true,\n allowTouchMove: true,\n grabCursor: true,\n direction: 'horizontal',\n loop: true,\n on: {\n realIndexChange: () => { \n sliderAnita.updateViews();\n },\n },\n };\n\n\t\t\tsliderAnita.swiper = new Swiper(container, config);\n sliderAnita.initChartJS();\n\t\t});\n\t}\n\n updateViews() {\n if (!this.chart) return;\n\n const percentage = (100 / this.swiper.slides.length) * (this.swiper.realIndex + 1);\n this.chart.data.datasets[0].data = [percentage, 100 - percentage];\n this.chart.update();\n\n const progressElement = document.querySelector('.slider-anita-progress');\n if(!progressElement) return null;\n\n const icons = progressElement.querySelectorAll(\".icon\");\n icons.forEach(icon => {\n if (icon.classList.contains(\"index-\" + this.swiper.realIndex)) {\n icon.style.display = \"block\";\n } else {\n icon.style.display = \"none\";\n }\n });\n }\n\n initChartJS() {\n Chart.register(DoughnutController, ArcElement);\n\n const doughnutElement = document.querySelector('.slider-anita-progress .doughnut-chart');\n if (!doughnutElement) return;\n\n this.chart = new Chart(doughnutElement, {\n type: \"doughnut\",\n data: {\n datasets: [{\n data: [0, 100],\n backgroundColor: [\n projectColors.rainbow.orange,\n projectColors.transparent,\n ],\n borderWidth: 0,\n }],\n },\n options: {\n responsive: false,\n cutout: cutoutPercentage + '%',\n maintainAspectRatio: false,\n plugins: {\n tooltip: {\n enabled: false,\n },\n legend: {\n display: false,\n },\n },\n events: [],\n },\n });\n \n this.updateViews();\n \n const cutoutPercentageHalf = 100 - (100 - cutoutPercentage) / 2;\n const radius = (doughnutSize * cutoutPercentageHalf) / 100;\n\n const circlePath = document.querySelector('.slider-anita-progress .circle-path');\n if (!circlePath) return;\n \n circlePath.style.width = radius + \"px\";\n circlePath.style.height = radius + \"px\";\n }\n}\n","import { Swiper } from \"swiper\";\nimport { Navigation } from 'swiper/modules';\n\nexport default class SliderBase {\n /**\n * \n * @param {string} className \n * @param {SwiperOptions} config \n * @param {boolean} hardOverwrite \n * @returns \n */\n static initAllWith(className, config, hardOverwrite = false) {\n className = (\"\"+className).startsWith('.') ? className.substring(1) : className;\n const sliderBaseContainers = document.querySelectorAll(`.${className}.swiper`);\n if (sliderBaseContainers.length === 0) return;\n\n const defaultConfig = {\n modules: [Navigation],\n slidesPerView: 1,\n spaceBetween: 10,\n breakpoints: {\n 640: {\n slidesPerView: 2,\n spaceBetween: 20,\n },\n 1024: {\n slidesPerView: 3,\n spaceBetween: 30\n }\n },\n navigation: {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n },\n }\n\n const mergedConfig = Object.assign({}, defaultConfig, config);\n\n sliderBaseContainers.forEach((sliderBaseContainer) => {\n new SliderBase(sliderBaseContainer, hardOverwrite ? config : mergedConfig);\n })\n }\n\n /**\n * \n * @param {CSSSelector|HTMLElement} container \n * @param {?SwiperOptions} config \n */\n constructor(container, config) {\n this.swiper = new Swiper(container, config);\n }\n}\n","import { Pagination } from 'swiper/modules';\nimport SliderBase from \"./slider-base\";\n\nexport default class SliderHannes extends SliderBase {\n\tstatic initAll() {\n\t\tsuper.initAllWith(\"slider-hannes\", {\n\t\t\tmodules: [Pagination],\n\t\t\tpagination: {\n\t\t\t\tel: \".swiper-pagination\",\n\t\t\t\tclickable: true,\n\t\t\t},\n\t\t\tslidesPerView: 1,\n\t\t\tspaceBetween: 30,\n\t\t\tautoHeight: true,\n\t\t\tallowTouchMove: true,\n\t\t\tgrabCursor: true,\n\t\t\tbreakpoints: {\n\t\t\t\t// when window width is >= 768\n\t\t\t\t768: {\n\t\t\t\t\tslidesPerView: 2,\n\t\t\t\t\tspaceBetween: 30,\n\t\t\t\t\tautoHeight: false,\n\t\t\t\t},\n\t\t\t\t// when window width is >= 768\n\t\t\t\t1024: {\n\t\t\t\t\tslidesPerView: 2,\n\t\t\t\t\tspaceBetween: 50,\n\t\t\t\t\tautoHeight: false,\n\t\t\t\t},\n 1536: {\n slidesPerView: 3,\n spaceBetween: 50,\n autoHeight: false\n }\n\t\t\t},\n\t\t});\n\t}\n}\n","import { Navigation, Pagination } from \"swiper/modules\";\nimport * as GLOBALS from \"../globals\";\nimport Swiper from \"swiper\";\n\nexport default class SliderPeter {\n\n\tstatic initAll() {\n\t\tlet sliders = document.querySelectorAll('.slider-peter-wrapper');\n\t\tsliders.forEach((sliderWrapper) => {\n\t\t\tthis.initSlider(sliderWrapper);\n\t\t});\n\t}\n\n\tstatic initSlider(sliderWrapper) {\n\t\tlet sliderEl = sliderWrapper.querySelector('.swiper');\n\n\t\tif (!sliderEl)\n\t\t\treturn;\n\n\t\tnew Swiper(sliderEl, {\n\t\t\tmodules: [Navigation, Pagination],\n\t\t\tpagination: {\n\t\t\t\tel: sliderWrapper.querySelector(\".swiper-pagination\"),\n\t\t\t\tclickable: true,\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: sliderWrapper.querySelector(\".swiper-button-next\"),\n\t\t\t\tprevEl: sliderWrapper.querySelector(\".swiper-button-prev\"),\n\t\t\t},\n\t\t\tdirection: \"horizontal\",\n\t\t\tslidesPerView: 1,\n\t\t\tspaceBetween: 15,\n\t\t\tbreakpoints: {\n\t\t\t\t[GLOBALS.BREAKPOINT_LG]: {\n\t\t\t\t\tslidesPerView: \"auto\",\n\t\t\t\t\tspaceBetween: 30,\n\t\t\t\t\tdirection: \"vertical\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tautoHeight: true,\n\t\t\tallowTouchMove: true,\n\t\t\tgrabCursor: true\n\t\t});\n\t}\n}\n","import { Navigation } from 'swiper/modules';\nimport SliderBase from './slider-base';\n\nexport default class SliderFinn extends SliderBase {\n static initAll() {\n super.initAllWith('slider-finn', {\n modules: [Navigation],\n slidesPerView: 1,\n spaceBetween: 40,\n navigation: {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n },\n }, true);\n }\n constructor(container) {\n this.container = container;\n this.config = {\n modules: [Navigation],\n };\n\n super(this.container, this.config);\n }\n}\n","import Toggle from \"../classes/toggle\";\n\nexport default class TeamCards {\n\tstatic init() {\n\t\treturn new TeamCards();\n\t}\n\n\tconstructor() {\n\t\tconst teamCards = document.querySelectorAll('.cards-team .card-team');\n\t\tif (teamCards.length === 0) return;\n\n\t\tteamCards.forEach((teamCard) => {\n\t\t\tconst button = teamCard.querySelector('a.team-show-more-info');\n\n\t\t\tconst toggleButton = new Toggle(button, () => {\n\t\t\t\tteamCard.classList.toggle('collapsed');\n\t\t\t});\n\t\t});\n\t}\n}\n","\nexport default class Logos {\n\n\tstatic initAll() {\n\t\treturn new Logos();\n\t}\n\n\tconstructor() {\n\t\tconst logoContainers = document.querySelectorAll('.cards_logo');\n\t\tif (logoContainers.length === 0) return;\n\n\t\tlogoContainers.forEach((logoContainer) => this.initLogoContainer(logoContainer));\n\t}\n\n\tinitLogoContainer(logoContainer) {\n\t\tconst button = logoContainer.querySelector('.show-all');\n\t\tconst logos = logoContainer.querySelectorAll('.card-logo');\n\n\t\tif (!button | logos.length == 0) \n\t\t\treturn;\n\n\t\tbutton.addEventListener('click', () => {\n\t\t\tbutton.classList.add('invisible');\n\t\t\tthis.animateLogos(logos);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tbutton.classList.add('hidden');\n\t\t\t}, 1000);\n\t\t});\n\t}\n\n\tanimateLogos(logos) {\n\t\tlet pause = 0;\n\t\tlogos.forEach((logo) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tlogo.classList.remove('hidden');\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tlogo.classList.remove('collapsed');\n\t\t\t\t}, 20);\n\t\t\t}, pause);\n\t\t\tpause += 50;\n\t\t});\n\t}\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/navigation';\nimport ImageGallery from './modules/image-gallery';\nimport MediaViewer from './modules/media-viewer';\nimport SliderAnita from './classes/slider-anita';\nimport SliderHannes from './classes/slider-hannes';\nimport SliderPeter from './classes/slider-peter';\nimport SliderFinn from \"./classes/slider-finn\";\nimport TeamCards from \"./modules/cards-team\";\nimport Modal from './modules/modal';\nimport Logos from './modules/logos';\n\n\nconst siteInitialization = () => {\n\tHeadermenu.init();\n\tAccordion.init();\n\tImageGallery.init();\n\tMediaViewer.init();\n\tForm.init();\n\tSliderAnita.initAll();\n\tSliderHannes.initAll();\n\tSliderPeter.initAll();\n\tSliderFinn.initAll();\n\tTeamCards.init();\n\tModal.initAll();\n\tLogos.initAll();\n\n\t// re-init forms once no cache tag replaced\n\tdocument.addEventListener('statamic:nocache.replaced', (event) => {\n\t\tForm.init();\n\t});\n\n\tsetTimeout(() => {\n\t\tCookieByte.init();\n\t}, 3000);\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","const colors = require('tailwindcss/colors');\n\nconst screenHeights = {\n\t'1/4-screen': '25vh',\n\t'1/2-screen': '50vh',\n\t'4/6-screen': '66.666667vh',\n\t'3/4-screen': '75vh',\n};\n\nconst sizeSpacings = {\n\txs: '20rem',\n\tsm: '24rem',\n\tmd: '28rem',\n\tlg: '32rem',\n\txl: '36rem',\n};\n\nconst sizeFractions = {\n\t'1/2': '50%',\n\t'1/3': '33.333333%',\n\t'2/3': '66.666667%',\n\t'1/4': '25%',\n\t'2/4': '50%',\n\t'3/4': '75%',\n\t'1/5': '20%',\n\t'2/5': '40%',\n\t'3/5': '60%',\n\t'4/5': '80%',\n\t'1/6': '16.666667%',\n\t'2/6': '33.333333%',\n\t'3/6': '50%',\n\t'4/6': '66.666667%',\n\t'5/6': '83.333333%',\n};\n\nmodule.exports = {\n\timportant: false, // !important should only be used as a last resort\n\tcontent: [\n\t\t'./resources/**/*.html',\n\t\t'./resources/**/*.php',\n\t\t'./resources/**/*.vue',\n\t\t'./resources/**/*.js',\n\t\t'./content/**/*.md',\n\t],\n\ttheme: {\n\t\tscreens: {\n\t\t\tsm: '40rem', // equals 640 px\n\t\t\tmd: '48rem', // equals 768 px\n\t\t\tlg: '64rem', // equals 1024 px\n\t\t\txl: '80rem', // equals 1280 px\n\t\t\t'2xl': '96rem', // equals 1536 px\n\t\t},\n\t\tcolors: {\n\t\t\ttransparent: 'transparent',\n\t\t\tcurrent: 'currentColor',\n\t\t\tblack: colors.black,\n\t\t\twhite: colors.white,\n\t\t\tgray: colors.gray,\n\t\t\tred: colors.red,\n\t\t\tprimary: '#1479bf',\n\t\t\t'primary-light': '#72aed8',\n\t\t\tsecondary: '#2c3e50',\n\t\t\ttertiary: '#85bc21',\n\t\t\t'tertiary-light': '#70A70C',\n\t\t\tbackground: '#F3F8FC',\n\t\t\tfooter: '#B8D6EC',\n\t\t\trainbow: {\n\t\t\t\tred: '#C1042F',\n\t\t\t\torange: '#E08800',\n\t\t\t\tyellow: '#FECE41',\n\t\t\t\tgreen: '#85BC21',\n\t\t\t\tblue: '#23b0e5'\n\t\t\t}\n\t\t},\n\t\tfontFamily: {\n\t\t\ttitle: [\"Ubuntu\", 'sans-serif'],\n\t\t\tsubtitle: [\"Ubuntu\", 'sans-serif'],\n\t\t\tparagraph: [\"Red Hat Display\", 'sans-serif'],\n\t\t},\n\t\textend: {\n\t\t\tspacing: {\n\t\t\t\t128: '32rem',\n\t\t\t},\n\t\t\tborderWidth: {\n\t\t\t\t1: '1px',\n\t\t\t\t3: '3px',\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t...screenHeights,\n\t\t\t},\n\t\t\tminHeight: {\n\t\t\t\t...screenHeights,\n\t\t\t\t...sizeSpacings,\n\t\t\t},\n\t\t\tminWidth: {\n\t\t\t\t...sizeSpacings,\n\t\t\t},\n\t\t\tmaxHeight: {\n\t\t\t\t...sizeFractions,\n\t\t\t\t...screenHeights\n\t\t\t},\n\t\t\tmaxWidth: {\n\t\t\t\t...sizeFractions,\n\t\t\t},\n\t\t\ttransitionTimingFunction: {\n\t\t\t\tDEFAULT: 'ease-in-out',\n\t\t\t},\n\t\t\ttransitionDuration: {\n\t\t\t\tDEFAULT: '300ms',\n\t\t\t},\n\t\t\tboxShadow: {\n\t\t\t\tcenter: '0 0px 15px 3px rgb(44 62 80 / 10%), 0 0 6px 0 rgb(44 62 80 / 10%)',\n\t\t\t\t'center-wide': '0 0px 15px 3px rgb(44 62 80 / 10%), 0 0 13px 2px rgb(44 62 80 / 10%)',\n\t\t\t\t'mobile-nav': '0 10px 15px -10px rgb(44 62 80 / 10%), 0 10px 6px -7px rgb(44 62 80 / 10%)',\n\t\t\t},\n\t\t}\n\t},\n\tvariants: {\n\t\textend: {},\n\t},\n\tplugins: [],\n};\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow = function (_, classNames) { return \"
\"; };\nexports.default = arrow;\n//# sourceMappingURL=arrow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar group_1 = require(\"./group\");\nfunction body(state, classNames) {\n var className = composeClassName_1.default([\n classNames.body,\n [state.isAtTop, classNames.bodyAtTop],\n [state.isAtBottom, classNames.bodyAtBottom],\n [state.isScrollable, classNames.bodyScrollable]\n ]);\n var styleAttr = state.isOpen ?\n \"style=\\\"max-height: \" + state.maxBodyHeight + \"px;\\\"\" : '';\n return (\"\\n \\n
\\n \" + state.groups.map(function (groupState) { return group_1.default(groupState, state, classNames); }).join('') + \"\\n
\\n
\\n
\\n \\n \");\n}\nexports.default = body;\n//# sourceMappingURL=body.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar option_1 = require(\"./option\");\nvar group = function (groupState, state, classNames) {\n var className = composeClassName_1.default([\n classNames.group,\n [groupState.isDisabled, classNames.groupDisabled],\n [groupState.hasLabel, classNames.groupHasLabel]\n ]);\n return (\"\\n
\\n \" + (groupState.hasLabel ?\n \"
\" + groupState.label + \"
\" : '') + \"\\n \" + groupState.options.map(function (optionState) { return option_1.default(optionState, state, classNames); }).join('') + \"\\n
\\n \");\n};\nexports.default = group;\n//# sourceMappingURL=group.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow_1 = require(\"./arrow\");\nvar value_1 = require(\"./value\");\nvar head = function (state, classNames) { return (\"\\n
\\n \" + value_1.default(state, classNames) + \"\\n \" + arrow_1.default(state, classNames) + \"\\n \\n
\\n\"); };\nexports.default = head;\n//# sourceMappingURL=head.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nfunction option(optionState, state, classNames) {\n var isSelected = state.selectedOption === optionState;\n var className = composeClassName_1.default([\n classNames.option,\n [isSelected, classNames.optionSelected],\n [optionState === state.focusedOption, classNames.optionFocused],\n [optionState.isDisabled, classNames.optionDisabled]\n ]);\n return (\"\\n \\n \" + optionState.label + \"\\n \\n \");\n}\nexports.default = option;\n//# sourceMappingURL=option.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar body_1 = require(\"./body\");\nvar head_1 = require(\"./head\");\nvar root = function (state, classNames) {\n var className = composeClassName_1.default([\n classNames.root,\n [state.isDisabled, classNames.rootDisabled],\n [state.isInvalid, classNames.rootInvalid],\n [state.isOpen, classNames.rootOpen],\n [state.isFocused, classNames.rootFocused],\n [state.hasValue, classNames.rootHasValue],\n [state.isOpenAbove, classNames.rootOpenAbove],\n [state.isOpenBelow, classNames.rootOpenBelow],\n [state.isUseNativeMode, classNames.rootNative]\n ]);\n return (\"\\n \\n \" + head_1.default(state, classNames) + \"\\n \" + (state.isUseNativeMode ? '' : body_1.default(state, classNames)) + \"\\n \\n \");\n};\nexports.default = root;\n//# sourceMappingURL=root.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar value = function (state, classNames) {\n return (\"\\n \\n \" + state.humanReadableValue + \"\\n \\n \");\n};\nexports.default = value;\n//# sourceMappingURL=value.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior = /** @class */ (function () {\n function Behavior() {\n this.showPlaceholderWhenOpen = false;\n this.openOnFocus = false;\n this.closeOnSelect = true;\n this.useNativeUiOnMobile = true;\n this.loop = false;\n this.clampMaxVisibleItems = true;\n this.liveUpdates = false;\n this.maxVisibleItems = 15;\n Object.seal(this);\n }\n return Behavior;\n}());\nexports.default = Behavior;\n//# sourceMappingURL=Behavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Callbacks = /** @class */ (function () {\n function Callbacks() {\n this.onOpen = null;\n this.onClose = null;\n this.onSelect = null;\n this.onOptionClick = null;\n Object.seal(this);\n }\n return Callbacks;\n}());\nexports.default = Callbacks;\n//# sourceMappingURL=Callbacks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ClassNames = /** @class */ (function () {\n function ClassNames() {\n this.root = 'edd-root';\n this.rootOpen = 'edd-root-open';\n this.rootOpenAbove = 'edd-root-open-above';\n this.rootOpenBelow = 'edd-root-open-below';\n this.rootDisabled = 'edd-root-disabled';\n this.rootInvalid = 'edd-root-invalid';\n this.rootFocused = 'edd-root-focused';\n this.rootHasValue = 'edd-root-has-value';\n this.rootNative = 'edd-root-native';\n this.gradientTop = 'edd-gradient-top';\n this.gradientBottom = 'edd-gradient-bottom';\n this.head = 'edd-head';\n this.value = 'edd-value';\n this.arrow = 'edd-arrow';\n this.select = 'edd-select';\n this.body = 'edd-body';\n this.bodyScrollable = 'edd-body-scrollable';\n this.bodyAtTop = 'edd-body-at-top';\n this.bodyAtBottom = 'edd-body-at-bottom';\n this.itemsList = 'edd-items-list';\n this.group = 'edd-group';\n this.groupDisabled = 'edd-group-disabled';\n this.groupHasLabel = 'edd-group-has-label';\n this.groupLabel = 'edd-group-label';\n this.option = 'edd-option';\n this.optionDisabled = 'edd-option-disabled';\n this.optionFocused = 'edd-option-focused';\n this.optionSelected = 'edd-option-selected';\n Object.seal(this);\n }\n return ClassNames;\n}());\nexports.default = ClassNames;\n//# sourceMappingURL=ClassNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior_1 = require(\"./Behavior\");\nvar Callbacks_1 = require(\"./Callbacks\");\nvar ClassNames_1 = require(\"./ClassNames\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.callbacks = new Callbacks_1.default();\n this.classNames = new ClassNames_1.default();\n this.behavior = new Behavior_1.default();\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar Config_1 = require(\"../Config/Config\");\nvar bindEvents_1 = require(\"../Events/bindEvents\");\nvar Renderer_1 = require(\"../Renderer/Renderer\");\nvar dispatchOpen_1 = require(\"../Shared/Util/dispatchOpen\");\nvar pollForSelectChange_1 = require(\"../Shared/Util/pollForSelectChange\");\nvar pollForSelectMutation_1 = require(\"../Shared/Util/pollForSelectMutation\");\nvar closeOthers_1 = require(\"../State/InjectedActions/closeOthers\");\nvar scrollToView_1 = require(\"../State/InjectedActions/scrollToView\");\nvar StateManager_1 = require(\"../State/StateManager\");\nvar StateMapper_1 = require(\"../State/StateMapper\");\nvar cache_1 = require(\"./cache\");\nvar Timers_1 = require(\"./Timers\");\nvar Easydropdown = /** @class */ (function () {\n function Easydropdown(selectElement, options) {\n this.config = helpful_merge_1.default(new Config_1.default(), options, true);\n this.state = StateMapper_1.default.mapFromSelect(selectElement, this.config);\n this.renderer = new Renderer_1.default(this.config.classNames);\n this.dom = this.renderer.render(this.state, selectElement);\n this.timers = new Timers_1.default();\n this.actions = StateManager_1.default.proxyActions(this.state, {\n closeOthers: closeOthers_1.default.bind(null, this, cache_1.default),\n scrollToView: scrollToView_1.default.bind(null, this.dom, this.timers)\n }, this.handleStateUpdate.bind(this));\n this.eventBindings = bindEvents_1.default({\n actions: this.actions,\n config: this.config,\n dom: this.dom,\n state: this.state,\n timers: this.timers\n });\n this.timers.pollChangeIntervalId = pollForSelectChange_1.default(this.dom.select, this.state, this.actions, this.config);\n if (this.config.behavior.liveUpdates) {\n this.timers.pollMutationIntervalId = pollForSelectMutation_1.default(this.dom.select, this.state, this.refresh.bind(this));\n }\n }\n Object.defineProperty(Easydropdown.prototype, \"selectElement\", {\n get: function () {\n return this.dom.select;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Easydropdown.prototype, \"value\", {\n get: function () {\n return this.state.value;\n },\n set: function (nextValue) {\n if (typeof nextValue !== 'string') {\n throw new TypeError('[EasyDropDown] Provided value not a valid string');\n }\n this.dom.select.value = nextValue;\n },\n enumerable: true,\n configurable: true\n });\n Easydropdown.prototype.open = function () {\n dispatchOpen_1.default(this.actions, this.config, this.dom);\n };\n Easydropdown.prototype.close = function () {\n this.actions.close();\n };\n Easydropdown.prototype.refresh = function () {\n this.state = helpful_merge_1.default(this.state, StateMapper_1.default.mapFromSelect(this.dom.select, this.config));\n this.renderer.update(this.state);\n this.dom.group.length = this.dom.option.length = this.dom.item.length = 0;\n Renderer_1.default.queryDomRefs(this.dom, ['group', 'option', 'item']);\n };\n Easydropdown.prototype.validate = function () {\n if (!this.state.isRequired || this.state.hasValue) {\n return true;\n }\n this.actions.invalidate();\n return false;\n };\n Easydropdown.prototype.destroy = function () {\n this.timers.clear();\n this.eventBindings.forEach(function (binding) { return binding.unbind(); });\n this.renderer.destroy();\n var cacheIndex = cache_1.default.indexOf(this);\n cache_1.default.splice(cacheIndex, 1);\n };\n Easydropdown.prototype.handleStateUpdate = function (state, key) {\n var callbacks = this.config.callbacks;\n this.renderer.update(state, key);\n switch (key) {\n case 'bodyStatus': {\n var cb = void 0;\n if (state.isOpen) {\n cb = callbacks.onOpen;\n }\n else {\n cb = callbacks.onClose;\n }\n if (typeof cb === 'function')\n cb();\n break;\n }\n case 'selectedIndex': {\n var cb = callbacks.onSelect;\n if (typeof cb === 'function')\n cb(state.value);\n break;\n }\n case 'isClickSelecting': {\n var cb = callbacks.onOptionClick;\n if (state[key] === false) {\n var nextValue = state.getOptionFromIndex(state.focusedIndex).value;\n if (typeof cb === 'function')\n cb(nextValue);\n }\n }\n }\n };\n return Easydropdown;\n}());\nexports.default = Easydropdown;\n//# sourceMappingURL=Easydropdown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EasydropdownFacade = /** @class */ (function () {\n function EasydropdownFacade(implementation) {\n this.open = implementation.open.bind(implementation);\n this.close = implementation.close.bind(implementation);\n this.refresh = implementation.refresh.bind(implementation);\n this.destroy = implementation.destroy.bind(implementation);\n this.validate = implementation.validate.bind(implementation);\n Object.defineProperties(this, {\n value: {\n get: function () { return implementation.value; },\n set: function (nextValue) { return implementation.value = nextValue; }\n }\n });\n }\n return EasydropdownFacade;\n}());\nexports.default = EasydropdownFacade;\n//# sourceMappingURL=EasydropdownFacade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Timers = /** @class */ (function () {\n function Timers() {\n }\n Timers.prototype.clear = function () {\n var _this = this;\n Object.keys(this).forEach(function (key) { return window.clearInterval(_this[key]); });\n };\n return Timers;\n}());\nexports.default = Timers;\n//# sourceMappingURL=Timers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache = [];\nexports.default = cache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache_1 = require(\"./cache\");\nvar Easydropdown_1 = require(\"./Easydropdown\");\nvar EasydropdownFacade_1 = require(\"./EasydropdownFacade\");\nfunction factory(selectElementOrSelector, options) {\n if (options === void 0) { options = {}; }\n var selectElement = selectElementOrSelector;\n if (typeof selectElementOrSelector === 'string') {\n selectElement = document.querySelector(selectElementOrSelector);\n }\n if (!(selectElement instanceof HTMLSelectElement)) {\n throw new TypeError('[EasyDropDown] Invalid select element provided');\n }\n if (selectElement.multiple) {\n throw new Error('[EasyDropDown] EasyDropDown does not support the `multiple`' +\n ' attribute on select elements.');\n }\n for (var _i = 0, cache_2 = cache_1.default; _i < cache_2.length; _i++) {\n var cachedInstance = cache_2[_i];\n if (cachedInstance.selectElement === selectElement) {\n return new EasydropdownFacade_1.default(cachedInstance);\n }\n }\n var instance = new Easydropdown_1.default(selectElement, options);\n // @ts-ignore\n cache_1.default.push(instance);\n return new EasydropdownFacade_1.default(instance);\n}\nfunction decorateFactory(factoryFn) {\n factoryFn.all = function (options) {\n if (options === void 0) { options = {}; }\n var selects = document.querySelectorAll('select');\n Array.prototype.forEach.call(selects, function (select) {\n var instance = factory(select, options);\n return instance;\n });\n };\n factoryFn.destroy = function () {\n var cacheCopy = cache_1.default.slice();\n cacheCopy.forEach(function (instance) { return instance.destroy(); });\n };\n return factoryFn;\n}\nvar decoratedFactory = decorateFactory(factory);\nexports.default = decoratedFactory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UP = 38;\nexports.DOWN = 40;\nexports.SPACE = 32;\nexports.ENTER = 13;\nexports.ESC = 27;\n//# sourceMappingURL=KeyCodes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPTION = '[data-ref~=\"option\"]';\n//# sourceMappingURL=Selectors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar EventBinding = /** @class */ (function () {\n function EventBinding(eventBindingRaw) {\n this.type = '';\n this.target = null;\n this.debounce = 0;\n this.throttle = 0;\n this.handler = null;\n this.boundHandler = null;\n this.passive = false;\n helpful_merge_1.default(this, eventBindingRaw);\n Object.seal(this);\n }\n EventBinding.prototype.unbind = function () {\n if (!this.target)\n return;\n this.target.removeEventListener(this.type, this.boundHandler);\n };\n return EventBinding;\n}());\nexports.default = EventBinding;\n//# sourceMappingURL=EventBinding.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyClick(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.selectOption(optionIndex, config.behavior.closeOnSelect);\n}\nexports.default = handleBodyClick;\n//# sourceMappingURL=handleBodyClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMousedown(e, _a) {\n var actions = _a.actions;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n actions.startClickSelecting();\n}\nexports.default = handleBodyMousedown;\n//# sourceMappingURL=handleBodyMousedown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMouseover(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option || state.isKeying)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.focusOption(optionIndex);\n}\nexports.default = handleBodyMouseover;\n//# sourceMappingURL=handleBodyMouseover.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar getIsMobilePlatform_1 = require(\"../../Shared/Util/getIsMobilePlatform\");\nfunction handleHeadClick(injectedGetIsMobilePlatform, e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n if (state.isUseNativeMode)\n return;\n var isMobilePlatform = injectedGetIsMobilePlatform(window.navigator.userAgent);\n e.stopPropagation();\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n if (isMobilePlatform) {\n actions.focus();\n }\n else {\n dom.select.focus();\n }\n }\n else {\n actions.close();\n }\n}\nexports.handleHeadClick = handleHeadClick;\nvar boundHandleHeadClick = handleHeadClick.bind(null, getIsMobilePlatform_1.default);\nexports.default = boundHandleHeadClick;\n//# sourceMappingURL=handleHeadClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleItemsListScroll(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var _b = dom.itemsList, offsetHeight = _b.offsetHeight, scrollHeight = _b.scrollHeight, scrollTop = _b.scrollTop;\n if (scrollTop === 0) {\n actions.topOut();\n }\n else if (scrollTop === scrollHeight - offsetHeight) {\n actions.bottomOut();\n }\n else {\n actions.scroll();\n }\n}\nexports.default = handleItemsListScroll;\n//# sourceMappingURL=handleItemsListScroll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectBlur(e, _a) {\n var actions = _a.actions, state = _a.state, config = _a.config;\n if (state.isKeying)\n return;\n actions.blur();\n if (config.behavior.openOnFocus && !state.isClickSelecting)\n actions.close();\n}\nexports.default = handleSelectBlur;\n//# sourceMappingURL=handleSelectBlur.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nfunction handleSelectFocus(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom, state = _a.state;\n actions.focus();\n if (config.behavior.openOnFocus && !state.isUseNativeMode) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectFocus;\n//# sourceMappingURL=handleSelectFocus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectInvalid(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom;\n actions.invalidate();\n}\nexports.default = handleSelectInvalid;\n//# sourceMappingURL=handleSelectInvalid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar handleSelectKeydownDown_1 = require(\"./handleSelectKeydownDown\");\nvar handleSelectKeydownUp_1 = require(\"./handleSelectKeydownUp\");\nfunction handleSelectKeydown(e, handlerParams) {\n var keyCode = e.keyCode, target = e.target;\n var state = handlerParams.state, actions = handlerParams.actions, dom = handlerParams.dom, config = handlerParams.config;\n if (state.isUseNativeMode || state.isDisabled)\n return;\n switch (keyCode) {\n case KeyCodes.DOWN:\n handleSelectKeydownDown_1.default(e, handlerParams);\n break;\n case KeyCodes.UP:\n handleSelectKeydownUp_1.default(e, handlerParams);\n break;\n case KeyCodes.SPACE:\n if (state.isSearching) {\n e.stopPropagation();\n return;\n }\n case KeyCodes.ENTER:\n e.stopPropagation();\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (state.isOpen) {\n actions.selectOption(state.focusedIndex, config.behavior.closeOnSelect);\n }\n else {\n dispatchOpen_1.default(actions, config, dom);\n }\n break;\n case KeyCodes.ESC:\n actions.close();\n break;\n }\n}\nexports.default = handleSelectKeydown;\n//# sourceMappingURL=handleSelectKeydown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownDown(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, dom = handlerParams.dom, actions = handlerParams.actions, config = handlerParams.config;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex += incrementAmount;\n incrementAmount = 1;\n if (focusedIndex >= state.totalOptions) {\n focusedIndex = config.behavior.loop ? 0 : state.totalOptions - 1;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations <= state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n return;\n }\n}\nexports.default = handleSelectKeydownDown;\n//# sourceMappingURL=handleSelectKeydownDown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownUp(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, config = handlerParams.config, dom = handlerParams.dom, actions = handlerParams.actions;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex -= incrementAmount;\n incrementAmount = 1;\n if (focusedIndex < 0) {\n focusedIndex = config.behavior.loop ? state.totalOptions - 1 : 0;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations < state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectKeydownUp;\n//# sourceMappingURL=handleSelectKeydownUp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar SEARCH_RESET_DURATION = 1200;\nfunction handleSelectKeypress(_a, _b, searchResetDuration) {\n var keyCode = _a.keyCode;\n var actions = _b.actions, timers = _b.timers, state = _b.state;\n if (searchResetDuration === void 0) { searchResetDuration = SEARCH_RESET_DURATION; }\n if (state.isUseNativeMode || [KeyCodes.UP, KeyCodes.DOWN].includes(keyCode))\n return;\n window.clearTimeout(timers.searchTimeoutId);\n actions.search();\n timers.searchTimeoutId = window.setTimeout(function () { return actions.resetSearch(); }, searchResetDuration);\n}\nexports.default = handleSelectKeypress;\n//# sourceMappingURL=handleSelectKeypress.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleWindowClick(_, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n if (!state.isOpen)\n return;\n actions.close();\n dom.select.blur();\n}\nexports.default = handleWindowClick;\n//# sourceMappingURL=handleWindowClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar throttle_1 = require(\"../Shared/Util/throttle\");\nvar EventBinding_1 = require(\"./EventBinding\");\nvar getEventsList_1 = require(\"./getEventsList\");\nfunction bindEvent(handlerParams, eventBindingRaw) {\n var eventBinding = new EventBinding_1.default(eventBindingRaw);\n if (!eventBinding.target)\n return eventBinding;\n var boundHandler = function (e) { return eventBinding.handler(e, handlerParams); };\n if (eventBinding.throttle > 0) {\n eventBinding.boundHandler = throttle_1.default(boundHandler, eventBinding.throttle);\n }\n else {\n eventBinding.boundHandler = boundHandler;\n }\n eventBinding.target.addEventListener(eventBinding.type, eventBinding.boundHandler);\n return eventBinding;\n}\nexports.bindEvent = bindEvent;\nfunction bindEvents(handlerParams) {\n return getEventsList_1.default(handlerParams.dom).map(bindEvent.bind(null, handlerParams));\n}\nexports.default = bindEvents;\n//# sourceMappingURL=bindEvents.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar handleBodyClick_1 = require(\"./Handlers/handleBodyClick\");\nvar handleBodyMousedown_1 = require(\"./Handlers/handleBodyMousedown\");\nvar handleBodyMouseover_1 = require(\"./Handlers/handleBodyMouseover\");\nvar handleHeadClick_1 = require(\"./Handlers/handleHeadClick\");\nvar handleItemsListScroll_1 = require(\"./Handlers/handleItemsListScroll\");\nvar handleSelectBlur_1 = require(\"./Handlers/handleSelectBlur\");\nvar handleSelectFocus_1 = require(\"./Handlers/handleSelectFocus\");\nvar handleSelectInvalid_1 = require(\"./Handlers/handleSelectInvalid\");\nvar handleSelectKeydown_1 = require(\"./Handlers/handleSelectKeydown\");\nvar handleSelectKeypress_1 = require(\"./Handlers/handleSelectKeypress\");\nvar handleWindowClick_1 = require(\"./Handlers/handleWindowClick\");\nvar handleWindowClick_2 = require(\"./Handlers/handleWindowClick\");\nvar getEventsList = function (dom) { return [\n {\n target: dom.head,\n type: 'click',\n handler: handleHeadClick_1.default\n },\n {\n target: dom.body,\n type: 'mousedown',\n handler: handleBodyMousedown_1.default\n },\n {\n target: dom.body,\n type: 'click',\n handler: handleBodyClick_1.default\n },\n {\n target: dom.body,\n type: 'mouseover',\n handler: handleBodyMouseover_1.default\n },\n {\n target: dom.itemsList,\n type: 'scroll',\n handler: handleItemsListScroll_1.default\n },\n {\n target: dom.select,\n type: 'keydown',\n handler: handleSelectKeydown_1.default\n },\n {\n target: dom.select,\n type: 'invalid',\n handler: handleSelectInvalid_1.default\n },\n {\n target: dom.select,\n type: 'keypress',\n handler: handleSelectKeypress_1.default\n },\n {\n target: dom.select,\n type: 'focus',\n handler: handleSelectFocus_1.default\n },\n {\n target: dom.select,\n type: 'blur',\n handler: handleSelectBlur_1.default\n },\n {\n target: document.documentElement,\n type: 'click',\n handler: handleWindowClick_1.default\n },\n {\n target: window,\n type: 'resize',\n handler: handleWindowClick_2.default,\n throttle: 100\n }\n]; };\nexports.default = getEventsList;\n//# sourceMappingURL=getEventsList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AttributeChangeType;\n(function (AttributeChangeType) {\n AttributeChangeType[\"ADD\"] = \"ADD\";\n AttributeChangeType[\"EDIT\"] = \"EDIT\";\n AttributeChangeType[\"REMOVE\"] = \"REMOVE\";\n})(AttributeChangeType || (AttributeChangeType = {}));\nexports.default = AttributeChangeType;\n//# sourceMappingURL=AttributeChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DomChangeType;\n(function (DomChangeType) {\n DomChangeType[\"NONE\"] = \"NONE\";\n DomChangeType[\"FULL\"] = \"FULL\";\n DomChangeType[\"REPLACE\"] = \"REPLACE\";\n DomChangeType[\"INNER\"] = \"INNER\";\n DomChangeType[\"OUTER\"] = \"OUTER\";\n})(DomChangeType = exports.DomChangeType || (exports.DomChangeType = {}));\nexports.default = DomChangeType;\n//# sourceMappingURL=DomChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Dom = /** @class */ (function () {\n function Dom() {\n this.select = null;\n this.root = null;\n this.head = null;\n this.value = null;\n this.body = null;\n this.arrow = null;\n this.itemsList = null;\n this.item = [];\n this.group = [];\n this.option = [];\n }\n Dom.prototype.sumItemsHeight = function (max) {\n if (max === void 0) { max = Infinity; }\n var totalHeight = 0;\n for (var i = 0, item = void 0; (item = this.item[i]); i++) {\n if (i === max)\n break;\n totalHeight += item.offsetHeight;\n }\n return totalHeight;\n };\n return Dom;\n}());\nexports.default = Dom;\n//# sourceMappingURL=Dom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PatchCommand = /** @class */ (function () {\n function PatchCommand() {\n this.newNode = null;\n this.newInnerHtml = '';\n this.newTextContent = '';\n this.attributeChanges = [];\n this.childCommands = [];\n this.index = null;\n }\n return PatchCommand;\n}());\nexports.default = PatchCommand;\n//# sourceMappingURL=PatchCommand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar root_1 = require(\"../Components/root\");\nvar createDomElementFromHtml_1 = require(\"../Shared/Util/createDomElementFromHtml\");\nvar Dom_1 = require(\"./Dom\");\nvar domDiff_1 = require(\"./domDiff\");\nvar domPatch_1 = require(\"./domPatch\");\nvar Renderer = /** @class */ (function () {\n function Renderer(classNames) {\n this.dom = new Dom_1.default();\n this.classNames = classNames;\n }\n Renderer.prototype.render = function (state, selectElement) {\n var html = root_1.default(state, this.classNames);\n var rootElement = createDomElementFromHtml_1.default(html);\n this.dom = new Dom_1.default();\n this.dom.root = rootElement;\n this.dom.option.length = this.dom.group.length = 0;\n Renderer.queryDomRefs(this.dom);\n this.injectSelect(selectElement);\n return this.dom;\n };\n Renderer.prototype.update = function (state, key) {\n var nextHtml = root_1.default(state, this.classNames);\n var nextRoot = createDomElementFromHtml_1.default(nextHtml);\n var diffCommand = domDiff_1.default(this.dom.root, nextRoot);\n domPatch_1.default(this.dom.root, diffCommand);\n if (key === 'selectedIndex') {\n this.syncSelectWithValue(state.value);\n }\n };\n Renderer.prototype.destroy = function () {\n this.dom.select.classList.remove(this.classNames.select);\n try {\n this.dom.root.parentElement.replaceChild(this.dom.select, this.dom.root);\n }\n catch (err) { /**/ }\n };\n Renderer.prototype.injectSelect = function (selectElement) {\n var parent = selectElement.parentElement;\n var tempSelect = this.dom.select;\n if (!parent)\n throw new Error('[EasyDropDown] The provided `` element\");\n }\n }\n return Object.seal(state);\n };\n StateMapper.mapGroup = function (group) {\n if (group === void 0) { group = null; }\n return helpful_merge_1.default(new Group_1.default(), {\n label: group ? group.label : '',\n isDisabled: group ? group.disabled : false\n });\n };\n StateMapper.mapOption = function (option, group) {\n if (group === void 0) { group = null; }\n if (!(option instanceof HTMLOptionElement))\n throw new TypeError('[EasyDropDown] Invalid markup structure');\n var isParentGroupDisabled = group !== null && group.disabled;\n return helpful_merge_1.default(new Option_1.default(), {\n label: option.textContent,\n value: option.value,\n isDisabled: option.disabled || isParentGroupDisabled\n });\n };\n return StateMapper;\n}());\nexports.default = StateMapper;\n//# sourceMappingURL=StateMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CollisionType_1 = require(\"../Shared/Util/Constants/CollisionType\");\nvar BodyStatus_1 = require(\"./Constants/BodyStatus\");\nvar ScrollStatus_1 = require(\"./Constants/ScrollStatus\");\nvar resolveActions = function (state) { return ({\n focus: function () {\n state.isFocused = true;\n },\n blur: function () {\n state.isFocused = false;\n },\n invalidate: function () {\n state.isInvalid = true;\n },\n validate: function () {\n state.isInvalid = false;\n },\n topOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_TOP;\n },\n bottomOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_BOTTOM;\n },\n scroll: function () {\n state.scrollStatus = ScrollStatus_1.default.SCROLLED;\n },\n makeScrollable: function () {\n state.isScrollable = true;\n },\n makeUnscrollable: function () {\n state.isScrollable = false;\n },\n open: function (maxBodyHeight, collisionType, isScrollable) {\n if (state.isDisabled)\n return;\n this.closeOthers();\n switch (collisionType) {\n case CollisionType_1.default.NONE:\n case CollisionType_1.default.TOP:\n state.bodyStatus = BodyStatus_1.default.OPEN_BELOW;\n break;\n case CollisionType_1.default.BOTTOM:\n state.bodyStatus = BodyStatus_1.default.OPEN_ABOVE;\n break;\n }\n state.isScrollable = isScrollable;\n state.maxBodyHeight = maxBodyHeight;\n this.scrollToView(state, true);\n },\n close: function () {\n state.bodyStatus = BodyStatus_1.default.CLOSED;\n state.focusedIndex = -1;\n this.blur();\n },\n startClickSelecting: function () {\n state.isClickSelecting = true;\n },\n selectOption: function (index, close) {\n if (close === void 0) { close = true; }\n var optionAtIndex = state.getOptionFromIndex(index);\n state.isClickSelecting = false;\n if (index > -1 && (!optionAtIndex || optionAtIndex.isDisabled))\n return;\n state.selectedIndex = index;\n if (state.isInvalid && state.hasValue) {\n this.validate();\n }\n if (state.isSearching) {\n this.scrollToView(state);\n }\n else if (close) {\n this.close();\n }\n },\n focusOption: function (index, shouldScrollToView) {\n if (shouldScrollToView === void 0) { shouldScrollToView = false; }\n var scrollToMiddle = Math.abs(index - state.focusedIndex) > 1;\n state.focusedIndex = index;\n if (shouldScrollToView) {\n this.scrollToView(state, scrollToMiddle);\n }\n },\n search: function () {\n state.isSearching = true;\n },\n resetSearch: function () {\n state.isSearching = false;\n },\n keying: function () {\n state.isKeying = true;\n },\n resetKeying: function () {\n state.isKeying = false;\n },\n useNative: function () {\n state.isUseNativeMode = true;\n }\n}); };\nexports.default = resolveActions;\n//# sourceMappingURL=resolveActions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"custom-event-polyfill\");\nrequire(\"./Shared/Polyfills/Element.matches\");\nvar factory_1 = require(\"./Easydropdown/factory\");\nexports.default = factory_1.default;\n//# sourceMappingURL=index.js.map","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\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\";","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","\"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","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar Messages = require(\"./Messages\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.deep = false;\n this.useReferenceIfTargetUnset = false;\n this.useReferenceIfArray = false;\n this.preserveTypeIfTargetUnset = false;\n this.includeReadOnly = false;\n this.includeNonEmurable = false;\n this.arrayStrategy = ArrayStrategy_1.default.REPLACE;\n this.errorMessage = Messages.MERGE_ERROR;\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy;\n(function (ArrayStrategy) {\n ArrayStrategy[\"PUSH\"] = \"PUSH\";\n ArrayStrategy[\"REPLACE\"] = \"REPLACE\";\n})(ArrayStrategy || (ArrayStrategy = {}));\nexports.default = ArrayStrategy;\n//# sourceMappingURL=ArrayStrategy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar FluentMerge = /** @class */ (function () {\n function FluentMerge() {\n this.target = null;\n this.sources = [];\n this.config = {};\n }\n /**\n * Supplies a fluent merge instance with a target object to merge into and return.\n */\n FluentMerge.prototype.to = function (target) {\n this.target = target;\n return this;\n };\n /**\n * Supplies a fluent merge instance with one or more source objects to merge from, in right to left order.\n */\n FluentMerge.prototype.from = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n this.sources = sources;\n return this;\n };\n /**\n * Supplies a fluent merge instance with a configuration object of one or more options.\n */\n FluentMerge.prototype.with = function (options) {\n this.config = options;\n return this;\n };\n /**\n * Executes a fluent merge instance, merging all provided sources into the\n * target, as per any provided configuration, and returning a reference to\n * the target.\n */\n FluentMerge.prototype.exec = function () {\n var _this = this;\n return this.sources.reduce(function (target, source) { return merge_1.default(target, source, _this.config); }, this.target || {});\n };\n return FluentMerge;\n}());\nexports.default = FluentMerge;\n//# sourceMappingURL=FluentMerge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MERGE_ERROR = function (offender, suggestion) {\n if (suggestion === void 0) { suggestion = ''; }\n return \"Unknown property \\\"\" + offender + \"\\\"\" + (suggestion ? \". Did you mean \\\"\" + suggestion + \"\\\"?\" : '');\n};\nexports.TYPE_ERROR_TARGET = function (target) {\n return \"[Helpful Merge] Target \\\"\" + target + \"\\\" must be a valid object\";\n};\nexports.TYPE_ERROR_SOURCE = function (source) {\n return \"[Helpful Merge] Source \\\"\" + source + \"\\\" must be a valid object\";\n};\nexports.INVALID_ARRAY_STRATEGY = function (strategy) {\n return \"[Helpful Merge] Invalid array strategy \\\"\" + strategy + \"\\\"\";\n};\n//# sourceMappingURL=Messages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deriveCustoTypeInstance(_a) {\n var constructor = _a.constructor;\n if (typeof constructor === 'function' && constructor !== Object) {\n return new constructor();\n }\n return {};\n}\nexports.default = deriveCustoTypeInstance;\n//# sourceMappingURL=deriveCustomTypeInstance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleMergeError(err, target, offendingKey, message) {\n // Rethrow if any of the following:\n // - offending key already exists on target\n // - object not sealed\n // - is extensible\n // - error not a TypeError\n if (Object.hasOwnProperty.call(target, offendingKey) ||\n !Object.isSealed(target) ||\n Object.isExtensible(target) ||\n !(err instanceof TypeError))\n throw err;\n var reducer = reduceBestMatch.bind(null, offendingKey, offendingKey.toLowerCase());\n var primer = { key: '', delta: Infinity, totalMatching: 0 };\n // Iterate through keys in target, for each key, compare with\n // the offending key. Greatest number of matching characters wins.\n var bestMatch = Object.keys(target).reduce(reducer, primer);\n var suggestion = bestMatch && bestMatch.totalMatching > 1 ? bestMatch.key : '';\n throw new TypeError(message(offendingKey, suggestion));\n}\n/**\n * Compares current key with current best match.\n */\nfunction reduceBestMatch(offendingKeyLower, offendingKey, currBestMatch, currKey) {\n var totalMatching = getTotalMatching(currKey.toLowerCase(), offendingKeyLower);\n var delta = Math.abs(currKey.length - offendingKey.length);\n if (totalMatching > currBestMatch.totalMatching ||\n (totalMatching === currBestMatch.totalMatching && delta < currBestMatch.delta)) {\n // If a greater number of matching characters, or the same\n // number, but a lesser delta, usurp the best match\n return { key: currKey, delta: delta, totalMatching: totalMatching };\n }\n return currBestMatch;\n}\n/**\n * Returns the number of common, consecutive characters\n * between two strings.\n */\nfunction getTotalMatching(possibleKey, offendingKey) {\n var longer = possibleKey.length > offendingKey.length ? possibleKey : offendingKey;\n var shorter = longer === possibleKey ? offendingKey : possibleKey;\n var leftPointer = 0;\n var leftInnerPointer = 0;\n var leftTotalMatching = 0;\n var lastCommonIndex = -1;\n for (; leftPointer < longer.length; leftPointer++) {\n while (leftTotalMatching === 0 &&\n longer[leftPointer] !== shorter[leftInnerPointer] &&\n leftInnerPointer < shorter.length) {\n // No match at present, move innerPointer through all possible\n // indices until a match is found\n leftInnerPointer++;\n }\n if (longer[leftPointer] === shorter[leftInnerPointer]) {\n // Match found\n if (lastCommonIndex !== leftPointer - 1) {\n // If beginning of a new match, reset total common\n leftTotalMatching = 0;\n }\n lastCommonIndex = leftPointer;\n leftTotalMatching++;\n leftInnerPointer++;\n // Whole word matched, end\n if (leftTotalMatching === shorter.length)\n break;\n }\n else if (leftTotalMatching > 1) {\n // No match, but at least two common characters found, end\n break;\n }\n else {\n // No match at this index, reset\n leftTotalMatching = leftInnerPointer = 0;\n }\n }\n lastCommonIndex = -1;\n var rightPointer = 0;\n var rightInnerPointer = 0;\n var rightTotalMatching = 0;\n var longerLastIndex = longer.length - 1;\n var shorterLastIndex = shorter.length - 1;\n // As above, but from right to left\n for (; rightPointer < longer.length - leftPointer; rightPointer++) {\n while (rightTotalMatching === 0 &&\n longer[longerLastIndex - rightPointer] !== shorter[shorterLastIndex - rightInnerPointer] &&\n rightInnerPointer < shorter.length) {\n rightInnerPointer++;\n }\n if (longer[longerLastIndex - rightPointer] === shorter[shorterLastIndex - rightInnerPointer]) {\n if (lastCommonIndex !== rightPointer - 1)\n rightTotalMatching = 0;\n lastCommonIndex = rightPointer;\n rightTotalMatching++;\n rightInnerPointer++;\n }\n else if (rightTotalMatching > 1) {\n break;\n }\n else {\n rightTotalMatching = rightInnerPointer = 0;\n }\n }\n return Math.min(shorter.length, leftTotalMatching + rightTotalMatching);\n}\nexports.getTotalMatching = getTotalMatching;\nexports.default = handleMergeError;\n//# sourceMappingURL=handleMergeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nexports.ArrayStrategy = ArrayStrategy_1.default;\nexports.default = merge_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Config_1 = require(\"./Config\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar deriveCustomTypeInstance_1 = require(\"./deriveCustomTypeInstance\");\nvar FluentMerge_1 = require(\"./FluentMerge\");\nvar handleMergeError_1 = require(\"./handleMergeError\");\nvar Messages = require(\"./Messages\");\nfunction merge(target, source, options) {\n if (options === void 0) { options = null; }\n var isClientSide = typeof window !== 'undefined';\n var sourceKeys = [];\n var config;\n if (options instanceof Config_1.default) {\n config = options;\n }\n else {\n config = new Config_1.default();\n }\n if (typeof options === 'boolean' && options === true) {\n config.deep = true;\n }\n else if (options && config !== options && typeof options === 'object') {\n merge(config, options);\n if ([ArrayStrategy_1.default.PUSH, ArrayStrategy_1.default.REPLACE].indexOf(config.arrayStrategy) < 0) {\n throw RangeError(Messages.INVALID_ARRAY_STRATEGY(config.arrayStrategy));\n }\n }\n if (!target || typeof target !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_TARGET(target));\n }\n if (!source || typeof source !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_SOURCE(source));\n }\n if (Array.isArray(source)) {\n if (config.arrayStrategy === ArrayStrategy_1.default.PUSH) {\n // Merge arrays via push()\n target.push.apply(target, source);\n return target;\n }\n for (var i = 0; i < source.length; i++) {\n sourceKeys.push(i.toString());\n }\n }\n else {\n sourceKeys = Object.getOwnPropertyNames(source);\n }\n for (var _i = 0, sourceKeys_1 = sourceKeys; _i < sourceKeys_1.length; _i++) {\n var key = sourceKeys_1[_i];\n var descriptor = Object.getOwnPropertyDescriptor(source, key);\n // Skip read-only properties\n if (typeof descriptor.get === 'function' && !descriptor.set && !config.includeReadOnly)\n continue;\n // Skip non-enumerable properties\n if (!descriptor.enumerable && !config.includeNonEmurable)\n continue;\n if (!config.deep ||\n typeof source[key] !== 'object' ||\n (isClientSide && source[key] instanceof window.Node) ||\n (isClientSide && source[key] === window.document.body) ||\n (isClientSide && source[key] === window.document.documentElement) ||\n source[key] === null ||\n (Array.isArray(source[key]) && config.useReferenceIfArray) ||\n (!target[key] && config.useReferenceIfTargetUnset)) {\n // If:\n // - Shallow merge\n // - All non-object primatives\n // - , , or DOM Nodes\n // - Null pointers\n // - Arrays, if `useReferenceIfArray` set\n // - Target prop null or undefined and `useRererenceIfTargetUnset` set\n try {\n target[key] = source[key];\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n else {\n // Deep merge objects/arrays\n if (!Object.prototype.hasOwnProperty.call(target, key) || target[key] === null) {\n // If property does not exist on target, instantiate an empty\n // object, custom type or array to merge into\n try {\n target[key] = Array.isArray(source[key]) ?\n [] : config.preserveTypeIfTargetUnset ?\n deriveCustomTypeInstance_1.default(source[key]) : {};\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n // Recursively deep copy objects or arrays\n merge(target[key], source[key], config);\n }\n }\n return target;\n}\nvar createFluent = function (method) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = new FluentMerge_1.default())[method].apply(_a, args);\n var _a;\n}; };\nObject\n .keys(FluentMerge_1.default.prototype)\n .forEach(function (method) { return merge[method] = createFluent(method); });\nexports.default = merge;\n//# sourceMappingURL=merge.js.map","// 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};","/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n","/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n","/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\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