{"version":3,"file":"/dist/bundle.js","mappings":"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","sources":["webpack://zenithcorporate/webpack/runtime/chunk loaded","webpack://zenithcorporate/webpack/runtime/create fake namespace object","webpack://zenithcorporate/webpack/runtime/load script","webpack://zenithcorporate/./src/js/forms/clearForm.js","webpack://zenithcorporate/./src/js/forms/formLoader.js","webpack://zenithcorporate/./src/js/forms/validations.js","webpack://zenithcorporate/./src/js/common/common.js","webpack://zenithcorporate/./src/js/tool/clickToCall.js","webpack://zenithcorporate/./src/js/common/datepicker.js","webpack://zenithcorporate/./src/js/tool/clickToChat.js","webpack://zenithcorporate/./src/js/togglers/togglers.js","webpack://zenithcorporate/./src/js/timeline/timeline.js","webpack://zenithcorporate/./src/js/slick/slider.js","webpack://zenithcorporate/./src/js/articles/articles.js","webpack://zenithcorporate/./src/js/search/search.js","webpack://zenithcorporate/./src/js/forms/file.js","webpack://zenithcorporate/./src/js/forms/commonForms.js","webpack://zenithcorporate/./src/js/forms/hiddenInputs.js","webpack://zenithcorporate/./src/js/product/filter.js","webpack://zenithcorporate/./src/js/common/exportPageData.js","webpack://zenithcorporate/./src/js/forms/conditionalDropdown.js","webpack://zenithcorporate/./src/js/common/customSelect.js","webpack://zenithcorporate/./src/js/stores/stores.js","webpack://zenithcorporate/./src/js/payment/paymentForm.js","webpack://zenithcorporate/./src/js/forms/ebilling.js","webpack://zenithcorporate/./src/js/forms/uploadFilesPage.js","webpack://zenithcorporate/./src/js/electricity/newElectricityBill.js","webpack://zenithcorporate/./src/js/forms/powerUpFormComplex.js","webpack://zenithcorporate/./src/js/forms/validation_functions/validationsUpdated.js","webpack://zenithcorporate/./src/js/forms/powerUpFormSimple.js","webpack://zenithcorporate/./src/js/forms/offerPageForm.js","webpack://zenithcorporate/./node_modules/@kurkle/color/dist/color.esm.js","webpack://zenithcorporate/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://zenithcorporate/./node_modules/chart.js/dist/chart.js","webpack://zenithcorporate/./node_modules/chart.js/auto/auto.js","webpack://zenithcorporate/./node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","webpack://zenithcorporate/./src/js/chart/chart.js","webpack://zenithcorporate/./src/js/accordion/accordion.js","webpack://zenithcorporate/./src/js/dropdown/dropdown.js","webpack://zenithcorporate/./src/js/dropdown/dropdownCategories.js","webpack://zenithcorporate/./src/js/accordion/activeAccordion.js","webpack://zenithcorporate/./src/js/index.js","webpack://zenithcorporate/./src/js/forms/textarea.js","webpack://zenithcorporate/./src/js/dialogue/dialogue.js","webpack://zenithcorporate/./src/js/tabs/tabs.js","webpack://zenithcorporate/./node_modules/jquery/dist/jquery.js","webpack://zenithcorporate/./node_modules/js-datepicker/dist/datepicker.min.js","webpack://zenithcorporate/./node_modules/slick-carousel/slick/slick.js","webpack://zenithcorporate/webpack/bootstrap","webpack://zenithcorporate/webpack/runtime/compat get default export","webpack://zenithcorporate/webpack/runtime/define property getters","webpack://zenithcorporate/webpack/runtime/ensure chunk","webpack://zenithcorporate/webpack/runtime/get javascript chunk filename","webpack://zenithcorporate/webpack/runtime/get mini-css chunk filename","webpack://zenithcorporate/webpack/runtime/hasOwnProperty shorthand","webpack://zenithcorporate/webpack/runtime/make namespace object","webpack://zenithcorporate/webpack/runtime/publicPath","webpack://zenithcorporate/webpack/runtime/jsonp chunk loading","webpack://zenithcorporate/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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"zenithcorporate:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","window.clearForm = function clearForm(form) {\r\n form.querySelectorAll('input:not(.js-hidden-form-field):not([type=\"radio\"]), textarea ').forEach((item) => {\r\n if (item?.value) item.value = \"\";\r\n\r\n if (item?.checked) item.checked = false;\r\n });\r\n\r\n form.querySelectorAll(\"input[type='radio']\").forEach((item) => {\r\n item.checked = false;\r\n });\r\n\r\n form.querySelectorAll(\"select\").forEach((select) => {\r\n select.selectedIndex = 0;\r\n\r\n if (\"createEvent\" in document) {\r\n var evt = document.createEvent(\"HTMLEvents\");\r\n evt.initEvent(\"change\", false, true);\r\n select.dispatchEvent(evt);\r\n } else select.fireEvent(\"onchange\");\r\n });\r\n\r\n form.querySelectorAll(\"[data-alias='conditionalDropdown'] .select-items, .js-custom-select .select-items\").forEach((select) => {\r\n const firstElement = select.querySelector(\"div\");\r\n firstElement.click();\r\n });\r\n\r\n form.querySelectorAll(\".js-hidden-form-field\").forEach((item) => {\r\n if (item.getAttribute(\"data-alias\") == \"checkboxElement\")\r\n item.setAttribute(\"value\", false);\r\n else item.setAttribute(\"value\", \"\");\r\n });\r\n\r\n document.getElementById(\"emailSubject\").setAttribute(\"value\", \"\");\r\n\r\n form.querySelectorAll(\"input[type='file']\").forEach((fileField) => {\r\n var labelField = getNextSibling(fileField, '.wlabel');\r\n if (labelField != null && labelField.hasAttribute('data-label-default')) {\r\n let defaultFileLabel = labelField.getAttribute('data-label-default');\r\n labelField.querySelector(\"span\").innerHTML = defaultFileLabel;\r\n }\r\n });\r\n\r\n window.checkSubmissionEligibility(form, '.js-submit');\r\n};\r\n","window.InitiateLoader = function InitiateLoader(form) {\r\n form.querySelectorAll('.js-clear,.js-submit').forEach((elem) => { elem.classList.add('hidden'); });\r\n form.querySelector('.loader').classList.remove('hidden');\r\n}\r\n\r\nwindow.RemoveLoader = function RemoveLoader(form) {\r\n form.querySelector('.loader').classList.add('hidden');\r\n form.querySelectorAll('.js-clear,.js-submit').forEach((elem) => { elem.classList.remove('hidden'); });\r\n}","//check if all required fields are valid (not empty)\r\nwindow.checkSubmissionEligibility = function checkSubmissionEligibility(form, submitButtonElement) {\r\n if (form) {\r\n let requiredFields = form?.querySelectorAll(\"[required]\");\r\n\r\n if (requiredFieldsNotEmpty(requiredFields)) {\r\n form.querySelector(submitButtonElement).classList.remove(\"button--disabled\");\r\n } else {\r\n form.querySelector(submitButtonElement).classList.add(\"button--disabled\");\r\n }\r\n }\r\n};\r\n\r\nfunction requiredFieldsNotEmpty(requiredFields) {\r\n let flag = true;\r\n\r\n requiredFields.forEach((field) => {\r\n if (field.getAttribute(\"data-alias\") == \"radioButtonListElement\"\r\n && field.querySelectorAll('input[type=\"radio\"]:checked').length <= 0)\r\n flag = false;\r\n else if (field.getAttribute(\"data-alias\") != \"radioButtonListElement\"\r\n && field.type.trim() == \"checkbox\"\r\n && !field.checked)\r\n flag = false;\r\n else if (field.getAttribute(\"data-alias\") != \"radioButtonListElement\"\r\n && field.type.trim() != \"checkbox\"\r\n && field.value.trim() == \"\")\r\n flag = false;\r\n });\r\n return flag;\r\n}\r\n\r\nwindow.validateEmailFields = function validateEmailFields(form) {\r\n let flag = true;\r\n form.querySelectorAll(\"input[type='email']\").forEach((field) => {\r\n if (field.value && !validateEmail(field.value)) flag = false;\r\n });\r\n return flag;\r\n};\r\n\r\nwindow.validatePhoneFields = function validatePhoneFields(form) {\r\n let flag = true;\r\n form.querySelectorAll(\"input[type='tel']\").forEach((field) => {\r\n if (field.value && !validatePhone(field.value)) flag = false;\r\n });\r\n return flag;\r\n};\r\n\r\nwindow.validatePatternFields = function validatePatternFields(form) {\r\n let flag = true;\r\n form.querySelectorAll(\"input[type='text']\").forEach((field) => {\r\n if (field.value && field.pattern && !validatePattern(field.value, field.pattern)) flag = false;\r\n });\r\n return flag;\r\n};\r\n\r\nwindow.validateFileFields = function validateFileFields(form) {\r\n let flag = true;\r\n form.querySelectorAll(\"input[type='file']\").forEach((field) => {\r\n if (field.files[0] != null && field.files[0].size > 5 * 1024 * 1024) flag = false;\r\n });\r\n return flag;\r\n}\r\n\r\nwindow.addErrorClass = function addErrorClass(form) {\r\n let telFields = form.querySelectorAll(\"input[type='tel']\");\r\n let emailFields = form.querySelectorAll(\"input[type='email']\");\r\n let fileFields = form.querySelectorAll(\"input[type='file']\");\r\n let regexFields = form.querySelectorAll(\"input[type='text']\");\r\n\r\n telFields.forEach((field) => {\r\n if (field.value && !validatePhone(field.value))\r\n field.closest(\"div.form-field\").classList.add(\"error\");\r\n });\r\n\r\n emailFields.forEach((field) => {\r\n if (field.value && !validateEmail(field.value))\r\n field.closest(\"div.form-field\").classList.add(\"error\");\r\n });\r\n\r\n regexFields.forEach((field) => {\r\n if (field.value && field.pattern && !validatePattern(field.value, field.pattern))\r\n field.closest(\"div.form-field\").classList.add(\"error\");\r\n });\r\n\r\n fileFields.forEach((field) => {\r\n if (field.files[0] != null && field.files[0].size > 5 * 1024 * 1024) {\r\n field.closest(\"div.form-field\").classList.add(\"error\");\r\n document.querySelector('.file_error').style.display = 'block';\r\n }\r\n });\r\n};\r\n\r\nwindow.removeErrorClass = function removeErrorClass(form) {\r\n form.querySelectorAll(\"div.error\").forEach((field) => {\r\n field.classList.remove(\"error\");\r\n });\r\n\r\n document.querySelectorAll('.file_error').forEach((field) => {\r\n field.style.display = 'none';\r\n });\r\n}\r\n\r\n//VALIDATE Regex\r\nconst validatePattern = (value, pattern) => {\r\n const reg = new RegExp(pattern);\r\n var result = reg.test(value);\r\n return result;\r\n};\r\n\r\n//VALIDATE EMAIL\r\nconst validateEmail = (email) => {\r\n const reg =\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return reg.test(String(email).toLowerCase());\r\n};\r\n\r\n//VALIDATE PHONE NUMBER\r\nconst validatePhone = (phone) => {\r\n const reg = /^[+]{0,1}[0]{0,2}[0-9]{10,}$/;\r\n return reg.test(phone);\r\n};\r\n","const ajax = (url, data, method) => {\r\n var contentType;\r\n if (!method) {\r\n method = 'POST';\r\n contentType = 'application/json; charset=utf-8';\r\n }\r\n else {\r\n contentType = 'application/x-www-form-urlencoded';\r\n }\r\n var token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n var locale = document.head.querySelector('meta[name=\"locale\"]');\r\n\r\n var ajaxObj = window.jQuery.ajax({\r\n beforeSend: function (xhr) {\r\n if (token) { xhr.setRequestHeader('__RequestVerificationToken', token.content); }\r\n if (locale) { xhr.setRequestHeader('__CurrentLocale', locale.content); }\r\n },\r\n url: url,\r\n method: method,\r\n contentType: contentType,\r\n data: data,\r\n cache: false\r\n });\r\n return ajaxObj;\r\n\r\n}\r\n\r\nconst getUrlParameter = (sParam) => {\r\n var sPageURL = window.location.search.substring(1),\r\n sURLVariables = sPageURL.split('&'),\r\n sParameterName,\r\n i;\r\n\r\n for (i = 0; i < sURLVariables.length; i++) {\r\n sParameterName = sURLVariables[i].split('=');\r\n\r\n if (sParameterName[0] === sParam) {\r\n return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);\r\n }\r\n }\r\n}\r\n\r\nconst storeToUrl = (data) => {\r\n window.history.pushState(\"\", \"\", formUrlQuery(data));\r\n}\r\n\r\n//forms url based on parameters.\r\nfunction formUrlQuery(data) {\r\n return '?' + Object.keys(data).filter(key => data[key]).map(key => key + '=' + data[key]).join('&');\r\n}\r\n\r\nwindow.getNextSibling = function getNextSibling(elem, selector) {\r\n var sibling = elem.nextElementSibling;\r\n\r\n while (sibling) {\r\n if (sibling.matches(selector)) return sibling;\r\n sibling = sibling.nextElementSibling\r\n }\r\n};\r\n\r\nexport { ajax, getUrlParameter, storeToUrl };","import { ajax } from \"../common/common\";\r\n\r\nconst clickToCall = (submitButton = '.js-clickToCall-submit') => {\r\n const clickToCallForm = document.querySelector('.js-clickToCall-form');\r\n const recaptchaSiteKey = document.getElementById(\"recaptcha_site_key\").value;\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n window.removeErrorClass(clickToCallForm);\r\n\r\n console.log('formIsValid(clickToCallForm)', formIsValid(clickToCallForm))\r\n\r\n if (formIsValid(clickToCallForm)) {\r\n\r\n // disable_submit();\r\n\r\n // grecaptcha.ready(async function () {\r\n // grecaptcha\r\n // .execute(recaptchaSiteKey, { action: \"submit\" })\r\n // .then(async function (token) {\r\n\r\n // let dataToSubmit = {\r\n // FullName: document.getElementById(\"name\").value,\r\n // Phone: document.getElementById(\"phone\").value,\r\n // ContactDate: document.getElementById(\"date\").value,\r\n // ContactHours: document.getElementById(\"time\").value,\r\n // IsCustomer: clickToCallForm.querySelector('input[name=\"client\"]:checked').value,\r\n // TermsAndCond: document.getElementById(\"tool-checkbox\").checked,\r\n // RecaptchaResponse: token,\r\n // };\r\n const mappedValues = {\r\n SlotId: document.getElementById(\"time\").value,\r\n FullName: document.getElementById(\"name\").value,\r\n Phone: document.getElementById(\"phone\").value,\r\n ContactReason: document.getElementById(\"contactReason\").value,\r\n IsCustomer: clickToCallForm.querySelector('input[name=\"client\"]:checked').value == \"yes\" ? 1 : 0,\r\n Originator: \"zenith.gr\"\r\n }\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'culture': 'el'\r\n },\r\n body: JSON.stringify(mappedValues)\r\n // body: JSON.stringify(finalValues)\r\n }\r\n\r\n fetch(\"/umbraco/api/zeniappapi/c2crequest\", requestOptions).then(response => {\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n return response.json(); // Parse JSON from response\r\n }).then(data => {\r\n if (!data?.Success) // Handle the data\r\n {\r\n enable_submit();\r\n\r\n } else {\r\n console.log('the data was submited', data)\r\n window.jQuery(clickToCallForm).html(data?.Message);\r\n }\r\n })\r\n .catch(error => {\r\n enable_submit(); // Handle errors\r\n });\r\n\r\n // ajax(\"/umbraco/surface/ClickToCall/SubmitForm\",requestOptions\r\n // )\r\n // .done((resp) => {\r\n // if (resp != null && !resp.error) {\r\n // window.jQuery(clickToCallForm).html(window.jQuery(resp));\r\n // } else {\r\n // enable_submit();\r\n // }\r\n // })\r\n // .fail((er) => {\r\n // enable_submit();\r\n // });\r\n // });\r\n // });\r\n } else {\r\n window.addErrorClass(clickToCallForm);\r\n }\r\n }\r\n\r\n const disable_submit = () => {\r\n clickToCallForm.querySelector(submitButton).classList.add(\"button--disabled\");\r\n clickToCallForm.querySelector(submitButton).removeEventListener(\"click\", handleSubmit);\r\n }\r\n const enable_submit = () => {\r\n clickToCallForm.querySelector(submitButton).classList.remove(\"button--disabled\");\r\n clickToCallForm.querySelector(submitButton).addEventListener(\"click\", handleSubmit);\r\n }\r\n\r\n window.jQuery(clickToCallForm).on(\"change keyup blur input\", \"[required]\", function () {\r\n window.checkSubmissionEligibility(clickToCallForm, submitButton);\r\n });\r\n\r\n window.checkSubmissionEligibility(clickToCallForm, submitButton);\r\n\r\n clickToCallForm.querySelector(submitButton).addEventListener(\"click\", handleSubmit);\r\n};\r\n\r\n\r\n\r\nconst handleTimeSelection = (submitButton = '.js-clickToCall-submit') => {\r\n const time = document.querySelector(\".js-time\");\r\n const dummy = document.querySelector(\".js-timepicker-dummy\");\r\n const clickToCallForm = document.querySelector('.js-clickToCall-form');\r\n\r\n if (dummy && time) {\r\n // dummy.addEventListener(\"click\", () => {\r\n // time.querySelector(\".timepicker\").classList.toggle(\"active\");\r\n // });\r\n\r\n time.querySelectorAll(\".js-timepicker-item\").forEach((item) => {\r\n item.addEventListener(\"click\", (e) => {\r\n const selected = item.getAttribute(\"data-value\");\r\n const selectedLabel = item.innerHTML\r\n const dropdown = document.querySelector(\"#time\");\r\n\r\n dropdown.value = selected;\r\n dummy.value = selectedLabel;\r\n time.querySelector(\".timepicker\").classList.toggle(\"active\");\r\n\r\n window.checkSubmissionEligibility(clickToCallForm, submitButton);\r\n });\r\n });\r\n }\r\n};\r\n\r\nconst formIsValid = (form) => {\r\n return window.validatePhoneFields(form)\r\n && window.validatePatternFields(form);\r\n};\r\n\r\nexport { clickToCall, handleTimeSelection };\r\n","import datepicker from \"js-datepicker\";\r\nimport { callSlots } from \"../togglers/togglers\";\r\nimport { handleTimeSelection } from \"../tool/clickToCall\";\r\n\r\nfunction Wdatepicker(\r\n datepickerSelector = \".js-datepicker\",\r\n locale = \"el-GR\"\r\n) {\r\n const weekdaySelector = \".js-timepicker-item.js-weekday-hours\";\r\n const weekendSelector = \".js-timepicker-item.js-weekend-hours\";\r\n\r\n // console.log('callSlots?.inactive_dates', callSlots)\r\n\r\n const currentDate = new Date();\r\n // const maxDate = new Date(currentDate.setMonth(currentDate.getMonth() + 2));\r\n const maxDate = new Date();\r\n maxDate.setDate(maxDate.getDate() + 14); // Add 14 days to the current date\r\n\r\n const today = new Date();\r\n var currentTime = today.getHours() + \":\" + today.getMinutes() + \"\" + today.getSeconds();\r\n var currentTimeAsNumber = parseFloat(currentTime.replace(\":\", \".\"));\r\n const time = document.querySelector(\".js-time\");\r\n const dummy = document.querySelector(\".js-timepicker-dummy\");\r\n dummy.addEventListener(\"click\", () => {\r\n time.querySelector(\".timepicker\").classList.toggle(\"active\");\r\n });\r\n\r\n //DATEPICKER IN TOOL\r\n if (locale === \"el-GR\")\r\n datepicker(datepickerSelector, {\r\n startDay: 1,\r\n minDate: new Date(),\r\n customDays: [\"Κ\", \"Δ\", \"Τ\", \"Τ\", \"Π\", \"Π\", \"Σ\"],\r\n customMonths: [\r\n \"Ιανουάριος\",\r\n \"Φεβρουάριος\",\r\n \"Μάρτιος\",\r\n \"Απρίλιος\",\r\n \"Μάιος\",\r\n \"Ιούνιος\",\r\n \"Ιούλιος\",\r\n \"Αύγουστος\",\r\n \"Σεπτέμβρης\",\r\n \"Οκτώβρης\",\r\n \"Νοέμβρης\",\r\n \"Δεκέμβρης\",\r\n ],\r\n maxDate: maxDate,\r\n formatter: (input, date, instance) => {\r\n const value = date.toLocaleDateString(locale);\r\n input.value = value;\r\n },\r\n // disabler: (date) => date.getDay() === 0,\r\n disabler: date => {\r\n const today = new Date();\r\n const fourteenDaysFromNow = new Date();\r\n fourteenDaysFromNow.setDate(today.getDate() + 14);\r\n\r\n // Generate all dates in the range\r\n const dateRange = [];\r\n for (let d = new Date(today); d <= fourteenDaysFromNow; d.setDate(d.getDate() + 1)) {\r\n dateRange.push(new Date(d).toISOString().split('T')[0]);\r\n }\r\n\r\n // Extract dates from the array of objects\r\n const filteredDates = callSlots?.date_slots.filter(slot => slot.is_active);\r\n const activeDates = filteredDates.map(slot => slot.date);\r\n // const activeDates = callSlots?.date_slots.map(slot => slot.date);\r\n\r\n\r\n // Find missing dates\r\n const missingDates = dateRange.filter(date => !activeDates.includes(date));\r\n\r\n // Combine missing dates and inactive dates from `callSlots`\r\n const disabledDates = [\r\n ...(callSlots?.inactive_dates || []),\r\n ...missingDates\r\n ];\r\n\r\n return disabledDates.some(disabledDate => {\r\n // Parse both dates into consistent formats\r\n const currentDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); // Strip time\r\n const disabledDateObj = new Date(disabledDate); // Parse the disabled date\r\n\r\n // Compare only the date parts\r\n return currentDate.getTime() === Date.UTC(\r\n disabledDateObj.getFullYear(),\r\n disabledDateObj.getMonth(),\r\n disabledDateObj.getDate()\r\n );\r\n }) || date.getDay() === 0; // Disable Sundays\r\n },\r\n\r\n onSelect: (instance, date) => {\r\n\r\n console.log(\"selected day\", date.getDay());\r\n console.log('current date', today.getDay());\r\n console.log('current time', currentTimeAsNumber);\r\n const formattedDate = date.toLocaleDateString('en-CA')\r\n\r\n\r\n\r\n dummy.value = \"\";\r\n\r\n\r\n const filtered = callSlots.date_slots.filter(slot => slot.date === formattedDate && slot.is_active);\r\n\r\n console.log('filtered', 'timepicker', filtered)\r\n updateSelectAndDivs(\"#time\", '#timepicker', filtered)\r\n\r\n\r\n\r\n\r\n\r\n\r\n // if (date.getDay() === 6) {\r\n // document\r\n // .querySelectorAll(weekdaySelector)\r\n // .forEach((option) => {\r\n // option.style.display = \"none\";\r\n // });\r\n // document\r\n // .querySelectorAll(weekendSelector)\r\n // .forEach((option) => {\r\n // var optionAsNumber = parseFloat(option.dataset.value.substring(0, 5).replace(\":\", \".\"))\r\n // var passedTime = optionAsNumber > currentTimeAsNumber;\r\n\r\n // if (date.getDay() != today.getDay()) {\r\n // option.style.display = \"block\";\r\n // } else {\r\n // if (passedTime) {\r\n // option.style.display = \"block\";\r\n // } else {\r\n // option.style.display = \"none\";\r\n // }\r\n // }\r\n // });\r\n // } else {\r\n // document\r\n // .querySelectorAll(weekendSelector)\r\n // .forEach((option) => {\r\n\r\n // option.style.display = \"none\";\r\n // });\r\n // document\r\n // .querySelectorAll(weekdaySelector)\r\n // .forEach((option) => {\r\n\r\n // var optionAsNumber = parseFloat(option.dataset.value.substring(0, 5).replace(\":\", \".\"))\r\n // var passedTime = optionAsNumber > currentTimeAsNumber;\r\n\r\n // if (date.getDay() != today.getDay()) {\r\n // option.style.display = \"block\";\r\n // } else {\r\n // if (passedTime) {\r\n // option.style.display = \"block\";\r\n // } else {\r\n // option.style.display = \"none\";\r\n // }\r\n // }\r\n\r\n\r\n // });\r\n // }\r\n\r\n //default select first available time period\r\n document\r\n .querySelector(\".js-time\")\r\n .querySelectorAll(\r\n 'option:not([style*=\"display: none;\"])'\r\n )[0].selected = \"selected\";\r\n document.querySelector(\".js-time\").classList.remove(\"hidden\");\r\n },\r\n });\r\n};\r\n\r\nfunction updateSelectAndDivs(selectId, containerId, optionsArray) {\r\n // Update the select element\r\n const selectElement = document.querySelector(selectId);\r\n\r\n if (!selectElement) {\r\n console.error(`Select element with ID \"${selectId}\" not found.`);\r\n return;\r\n }\r\n\r\n // Remove all existing options\r\n while (selectElement.firstChild) {\r\n selectElement.removeChild(selectElement.firstChild);\r\n }\r\n\r\n // Add new options\r\n optionsArray.forEach(optionData => {\r\n const option = document.createElement('option');\r\n option.value = optionData.slot_request_id; // Set the value\r\n option.textContent = optionData.slot_title; // Set the text\r\n option.classList.add('js-weekday-hours'); // Add the class\r\n option.disabled = optionData.is_active\r\n selectElement.appendChild(option);\r\n });\r\n\r\n // Update the div container\r\n const containerElement = document.querySelector(containerId);\r\n\r\n if (!containerElement) {\r\n console.error(`Container element with ID \"${containerId}\" not found.`);\r\n return;\r\n }\r\n\r\n // Remove all divs with a data-value attribute\r\n const divsToRemove = containerElement.querySelectorAll('div[data-value]');\r\n divsToRemove.forEach(div => div.remove());\r\n\r\n // Add new divs\r\n setTimeout(() => {\r\n optionsArray.forEach(optionData => {\r\n console.log('optionData', optionData)\r\n const newDiv = document.createElement('div');\r\n newDiv.setAttribute('data-value', optionData.slot_request_id); // Set the data-value\r\n newDiv.classList.add(\r\n 'timepicker__item',\r\n 'js-timepicker-item',\r\n 'js-weekday-hours'\r\n ); // Add classes\r\n !optionData.is_active && newDiv.classList.add('disabled')\r\n if(optionData.date === new Date().toISOString().split('T')[0]){\r\n // Example time window string\r\n const timeWindow = optionData.slot_title;\r\n\r\n // Extract start and end times from the string\r\n const [startTime, endTime] = timeWindow.split(/\\s*[-–—]\\s*/);\r\n\r\n // Get the current time\r\n const currentTime = new Date();\r\n const currentTimeString = currentTime.getHours().toString().padStart(2, '0') + ':' + currentTime.getMinutes().toString().padStart(2, '0');\r\n\r\n // Compare the current time with the end time\r\n if (currentTimeString >= startTime) {\r\n newDiv.classList.add('disabled')\r\n } else {\r\n null\r\n }\r\n\r\n }\r\n newDiv.textContent = optionData.slot_title; // Set the text\r\n containerElement.appendChild(newDiv);\r\n });\r\n handleTimeSelection()\r\n }, 100)\r\n}\r\n\r\n\r\nexport { Wdatepicker };\r\n","import { ajax } from \"../common/common\";\r\n\r\nconst clickToChat = (liveButton = '.js-clickToChat-sumbit') => {\r\n const clickToChatForm = document.querySelector('.js-clickToChat-form');\r\n const recaptchaSiteKey = document.getElementById(\"recaptcha_site_key\").value;\r\n\r\n const cookieName = \"chatverification\";\r\n const cookiePreviousPage = \"previouspage\";\r\n\r\n const chatVerification = getCookieName(cookieName);\r\n const clickToChatToggleButtons = document.querySelectorAll(\".js-chat-toggle\");\r\n const startLink = document.querySelectorAll('.js-clickToChat');\r\n // const startLink = document.querySelector('.js-clickToChat');\r\n const terms = document.querySelector(\"#terms\");\r\n\r\n var checker = document.getElementById('accept_terms');\r\n var sendbtn = document.getElementById('startChat');\r\n\r\n checker.onchange = function () {\r\n if (this.checked) {\r\n sendbtn.classList.remove(\"button--disabled\");\r\n } else {\r\n sendbtn.classList.add(\"button--disabled\");\r\n }\r\n }\r\n\r\n startLink.forEach(elem => {\r\n elem.addEventListener(\"click\", () => {\r\n if (chatVerification != \"\")\r\n zE.activate();\r\n else\r\n terms.classList.add(\"active\");\r\n });\r\n })\r\n\r\n function checkQueryAndRunFunction() {\r\n // Get the current URL's search parameters\r\n const urlParams = new URLSearchParams(window.location.search);\r\n\r\n // Check if the query 'openChat' exists and its value is '1'\r\n if (urlParams.get('openChat') === '1') {\r\n document.querySelector('.js-clickToChat').click()\r\n }\r\n\r\n // Check if the query 'openChat' exists and its value is '1'\r\n if (urlParams.get('openClickToCall') === '1') {\r\n document.querySelector('.js-call-toggle').click()\r\n fetchData(\"/umbraco/api/zeniappapi/c2cdata\").then(data => {\r\n console.log('slots data', data); // Handle the resolved data\r\n })\r\n .catch(error => {\r\n console.error('Slots error:', error); // Handle any error from fetchData\r\n });\r\n }\r\n\r\n }\r\n checkQueryAndRunFunction()\r\n\r\n\r\n\r\n clickToChatToggleButtons.forEach((button) => {\r\n button.addEventListener(\"click\", () => {\r\n terms.classList.toggle(\"active\");\r\n });\r\n });\r\n\r\n if (chatVerification != \"\") {\r\n var script = document.createElement('script');\r\n script.id = \"ze-snippet\";\r\n script.src = \"https://static.zdassets.com/ekr/snippet.js?key=53369c1d-249a-4fea-a42b-bb6083bb6b08\";\r\n document.getElementsByTagName('body')[0].appendChild(script);\r\n }\r\n else {\r\n if (checker.checked) {\r\n sendbtn.classList.remove(\"button--disabled\");\r\n } else {\r\n sendbtn.classList.add(\"button--disabled\");\r\n }\r\n }\r\n\r\n document.getElementById('startChat').addEventListener(\"click\", async (e) => {\r\n e.preventDefault();\r\n\r\n grecaptcha.ready(async function () {\r\n grecaptcha\r\n .execute(recaptchaSiteKey, { action: \"submit\" })\r\n .then(async function (token) {\r\n\r\n let dataToSubmit = {\r\n Application: \"ClickToChat\",\r\n Data: document.getElementById(\"accept_terms\").checked ? \"Checked\" : \"Unchecked\",\r\n RecaptchaResponse: token,\r\n };\r\n\r\n ajax(\"/umbraco/surface/UserInfo/SubmitForm\",\r\n { UserInfoViewModel: dataToSubmit },\r\n \"POST\"\r\n )\r\n .done((resp) => {\r\n setCookieName(cookieName, \"0\", 1);\r\n document.getElementById('terms').style.visibility = \"hidden\";\r\n var script = document.createElement('script');\r\n script.id = \"ze-snippet\";\r\n script.src = \"https://static.zdassets.com/ekr/snippet.js?key=53369c1d-249a-4fea-a42b-bb6083bb6b08\";\r\n document.getElementsByTagName('body')[0].appendChild(script);\r\n\r\n let myLink = document.querySelector('.js-clickToChat');\r\n myLink.onclick = zE.activate();\r\n })\r\n .fail((er) => {\r\n });\r\n });\r\n });\r\n });\r\n};\r\n\r\nfunction setCookieName(cname, cvalue, exdays) {\r\n var d = new Date();\r\n d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n var expires = \"expires=\" + d.toUTCString();\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n}\r\n\r\nfunction getCookieName(cname) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport { clickToChat };\r\n//$(document).ready(function () {\r\n// if ($('.age-gate').length > 0) {\r\n// const cookieName = \"ageverification\";\r\n// const cookiePreviousPage = \"previouspage\";\r\n\r\n// const ageVerification = getCookieName(cookieName);\r\n// const currentPage = window.location.pathname.replace(///g, \"\").toLowerCase();\r\n\r\n// $('#age-gateno').on('click', function () {\r\n// setCookieName(cookieName, \"0\", 1);\r\n// $('#buttons').html($('#hdnMsg').val());\r\n// });\r\n\r\n// $('#age-gateyes').on('click', function () {\r\n// setCookieName(cookieName, \"1\", 90);\r\n// var previousPage = getCookieName(cookiePreviousPage);\r\n\r\n// }\r\n// window.location.replace(previousPage);\r\n// });\r\n// }\r\n\r\n\r\n//});\r\n\r\nexport async function fetchData(url) {\r\n try {\r\n const response = await fetch(url);\r\n\r\n // Check if the response status is OK (status code 200–299)\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! Status: ${response.status}`);\r\n }\r\n\r\n const data = await response.json(); // Parse the JSON data\r\n console.log('Data received:', data);\r\n return data; // Return the data for further use\r\n } catch (error) {\r\n console.error('Error fetching data:', error.message);\r\n // Handle the error or rethrow it\r\n }\r\n}","import { Wdatepicker } from \"../common/datepicker\";\r\nimport { fetchData } from \"../tool/clickToChat\";\r\n\r\n\r\n//FOOTER CHEVRON TOGGLES\r\nconst footerToggle = () => {\r\n document.querySelectorAll('.js-expand-ul').forEach((item, index) => {\r\n item.querySelector('.with-chevron').addEventListener('click', () => {\r\n updateUls(index);\r\n });\r\n });\r\n\r\n const updateUls = (which) => {\r\n document.querySelectorAll('.js-expand-ul ul').forEach((item, index) => {\r\n if (index === which)\r\n item.parentNode.classList.toggle('active');\r\n else\r\n item.parentNode.classList.remove('active');\r\n });\r\n };\r\n};\r\n\r\n//FAQS TOGGLE\r\nconst faqToggle = () => {\r\n document.querySelectorAll(\".faqs__item\").forEach((item) => {\r\n item.querySelector(\".faqs__title\").addEventListener(\"click\", (e) => {\r\n item.classList.toggle(\"active\");\r\n });\r\n });\r\n\r\n document.querySelectorAll(\".js-check-all\").forEach((item) => {\r\n item.addEventListener(\"click\", (e) => {\r\n const parent = item.parentNode.parentNode.parentNode.parentNode;\r\n parent.querySelectorAll(\".faqs__item\").forEach((faq) => {\r\n if (item.checked)\r\n faq.classList.add(\"active\");\r\n else\r\n faq.classList.remove(\"active\");\r\n });\r\n })\r\n });\r\n};\r\n\r\n//HAMBURGER TOGGLE\r\nconst humburgerToggle = () => {\r\n const item = document.querySelector('.js-hamburger');\r\n const header = document.querySelector('.header');\r\n const html = document.querySelectorAll('html, body');\r\n\r\n if (item) {\r\n item.addEventListener('click', (event) => {\r\n item.classList.toggle('is-active');\r\n header.classList.toggle('active');\r\n\r\n html.forEach((item) => {\r\n item.classList.toggle('locked');\r\n });\r\n });\r\n }\r\n};\r\n\r\n//SEARCH TOGGLE\r\nconst searchToggle = () => {\r\n const enabler = document.querySelector('.js-search');\r\n const submitter = document.querySelector('.js-submit');\r\n const search = document.querySelector('header .search');\r\n const form = document.querySelector('header .search__form');\r\n\r\n if (enabler) {\r\n enabler.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n search.classList.toggle('active');\r\n });\r\n }\r\n\r\n if (submitter) {\r\n submitter.addEventListener('click', (event) => {\r\n form.submit();\r\n });\r\n }\r\n};\r\n\r\n//MENU MOBILE TOGGLE\r\nconst menuToggle = () => {\r\n const header = document.querySelector('.header');\r\n\r\n document.querySelectorAll('.header .menu li').forEach((item, item_index) => {\r\n item.addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n item.classList.toggle('active');\r\n });\r\n });\r\n\r\n document.querySelectorAll('.header .menu > li').forEach((item, item_index) => {\r\n item.addEventListener('click', (e) => {\r\n //SHOW IMAGE AT BOTTOM\r\n if (item.querySelector('.submenu__image > img')) {\r\n header.querySelectorAll('.header__images .image').forEach((image, image_index) => {\r\n if (item_index === image_index)\r\n image.classList.toggle('active');\r\n });\r\n }\r\n });\r\n });\r\n};\r\n\r\n//PRODUCT EXPAND TOGGLE\r\nconst productToggle = (enabler = '.js-expand-product', enablee = '.js-combo') => {\r\n document.querySelectorAll(enabler).forEach((item) => {\r\n item.addEventListener('click', () => {\r\n item.parentNode.parentNode.querySelector(enablee).classList.toggle('active');\r\n });\r\n });\r\n};\r\n\r\n//TABS TOGGLE\r\nconst tabsToggle = (enabler = '.js-tab-header h3', enablee = '.js-tab-content .content') => {\r\n const headers = document.querySelectorAll(enabler);\r\n const contents = document.querySelectorAll(enablee);\r\n\r\n headers.forEach((header, hindex) => {\r\n header.addEventListener(\"click\", (e) => {\r\n let which = 0;\r\n\r\n headers.forEach((header, index) => {\r\n if (e.target === header) {\r\n header.classList.add('active');\r\n which = index;\r\n }\r\n else\r\n header.classList.remove('active');\r\n });\r\n\r\n contents.forEach((content, cindex) => {\r\n if (cindex === which)\r\n content.classList.add('active');\r\n else\r\n content.classList.remove('active');\r\n });\r\n });\r\n });\r\n};\r\n\r\nexport let callSlots;\r\n\r\n//TOOL TOGGLE\r\nconst toolToggle = (activator = '.js-tool-toggle', toOpen = '.js-tool') => {\r\n const activators = document.querySelectorAll(activator);\r\n const tool = document.querySelector(toOpen);\r\n\r\n activators.forEach((item) => {\r\n item.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n tool.classList.toggle('active');\r\n if (activator == \".js-call-toggle\") {\r\n fetchData(\"/umbraco/api/zeniappapi/c2cdata\").then(data => {\r\n console.log('slots data', data);\r\n callSlots = data; // Handle the resolved data\r\n Wdatepicker()\r\n\r\n })\r\n .catch(error => {\r\n console.error('Slots error:', error); // Handle any error from fetchData\r\n });\r\n }\r\n });\r\n });\r\n};\r\n\r\n//MATCHING IDS TOGGLE\r\nconst matchingToggle = (items = '.js-item', content = \".js-image\", container = false) => {\r\n let active = 0;\r\n\r\n const clickHandler = () => {\r\n document.querySelectorAll(items).forEach((item) => {\r\n item.addEventListener('click', () => {\r\n active = item.getAttribute(\"data-id\");\r\n flipItems([items, content], active, (container) ? item.parentNode.parentNode : document);\r\n });\r\n });\r\n };\r\n\r\n const flipItems = (what, active, container) => {\r\n what.forEach((item) => {\r\n container.querySelectorAll(item).forEach((item) => {\r\n (item.getAttribute(\"data-id\") !== active) ? item.classList.remove(\"active\") : item.classList.add(\"active\");\r\n });\r\n });\r\n }\r\n\r\n clickHandler();\r\n};\r\n\r\nwindow.clickToCallToggle = function clickToCallToggle() {\r\n if (document.querySelector('.js-call')) {\r\n document.querySelector('.js-call').classList.toggle('active');\r\n fetchData(\"/umbraco/api/zeniappapi/c2cdata\").then(data => {\r\n console.log('slots data', data);\r\n callSlots = data; // Handle the resolved data\r\n Wdatepicker()\r\n\r\n })\r\n }\r\n}\r\n\r\nwindow.clickToChatToggle = function clickToChatToggle() {\r\n if (document.querySelector('.click-to-chat')) {\r\n document.querySelector('.js-clickToChat').click();\r\n }\r\n}\r\n\r\nconst faqAnchorIdToggle = () => {\r\n let querystringId = window.location.hash.split('#')[1];\r\n let faqItem = document.getElementById(querystringId);\r\n if (faqItem)\r\n faqItem.classList.add('active');\r\n};\r\n\r\nexport { footerToggle, humburgerToggle, searchToggle, menuToggle, productToggle, tabsToggle, toolToggle, matchingToggle, faqToggle, faqAnchorIdToggle };","//ADJUST TIMELINE\r\nconst timelineLine = async () => {\r\n const timeline = document.querySelector('.timeline');\r\n const line = document.querySelector('.timeline .line');\r\n\r\n if(timeline){\r\n //GET THE HEIGHT WE NEED TO SHAVE OFF OF TOP AND BOTTOM OF TIMELINE\r\n const corrections = await new Promise((resolve, reject) => {\r\n const firstItem = timeline.querySelector('.timeline__item:first-child');\r\n const lastItem = timeline.querySelector('.timeline__item:last-child');\r\n\r\n let height = lastItem.querySelector('.card__date').getBoundingClientRect().top - firstItem.querySelector('.card__date').getBoundingClientRect().top;\r\n height += (lastItem.classList.contains('with-text')) ? 60 : 0;\r\n const top = (firstItem.classList.contains('with-image')) ? 155 : 75;\r\n \r\n if(height && top)\r\n resolve({ height, top });\r\n else\r\n reject(null);\r\n });\r\n\r\n if(corrections){\r\n line.style.height = `${corrections?.height}px`;\r\n line.style.top = `${corrections?.top}px`;\r\n }\r\n }\r\n};\r\n\r\nexport { timelineLine };","import $ from \"jquery\";\r\nimport slick from \"slick-carousel\";\r\n\r\nconst slider = (items) => {\r\n const settings = (type, index) => {\r\n switch (type) {\r\n case \"home\":\r\n return {\r\n dots: true,\r\n arrows: false,\r\n infinite: false,\r\n autoplay: true,\r\n pauseOnFocus: false,\r\n autoplaySpeed: 10000,\r\n responsive: [\r\n {\r\n breakpoint: 540,\r\n settings: \"unslick\",\r\n },\r\n ],\r\n }\r\n case \"cards\":\r\n return {\r\n dots: true,\r\n arrows: false,\r\n infinite: false,\r\n autoplay: true,\r\n pauseOnFocus: false,\r\n autoplaySpeed: 10000,\r\n mobileFirst: true,\r\n responsive: [\r\n {\r\n breakpoint: 540,\r\n settings: \"unslick\",\r\n },\r\n ],\r\n }\r\n case \"giveaway\":\r\n return {\r\n dots: false,\r\n arrows: true,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n autoplay: false,\r\n prevArrow: $(\".prev\").eq(index),\r\n nextArrow: $(\".next\").eq(index),\r\n // prevArrow: mslider.querySelector('.prev'),\r\n // nextArrow: mslider.querySelector('.next'),\r\n autoplaySpeed: 10000,\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 1.4,\r\n slidesToScroll: 1,\r\n dots: false,\r\n arrows: false,\r\n }\r\n },\r\n ],\r\n }\r\n case \"triple-column\":\r\n return {\r\n dots: true,\r\n arrows: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n autoplay: false,\r\n prevArrow: $(\".prev\").eq(index),\r\n nextArrow: $(\".next\").eq(index),\r\n // prevArrow: mslider.querySelector('.prev'),\r\n // nextArrow: mslider.querySelector('.next'),\r\n autoplaySpeed: 10000,\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n dots: true,\r\n arrows: false,\r\n }\r\n },\r\n ],\r\n }\r\n case \"app\":\r\n return {\r\n dots: true,\r\n arrows: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n autoplay: false,\r\n prevArrow: $(\".prev\").eq(index),\r\n nextArrow: $(\".next\").eq(index),\r\n // prevArrow: mslider.querySelector('.prev'),\r\n // nextArrow: mslider.querySelector('.next'),\r\n autoplaySpeed: 10000\r\n }\r\n case \"triplette\":\r\n return {\r\n dots: false,\r\n arrows: true,\r\n autoplay: false,\r\n infinite: false,\r\n slidesToScroll: 3,\r\n slidesToShow: 3,\r\n prevArrow: $(\".prev\").eq(index),\r\n nextArrow: $(\".next\").eq(index),\r\n // prevArrow: mslider.querySelector('.prev'),\r\n // nextArrow: mslider.querySelector('.next'),\r\n responsive: [\r\n {\r\n breakpoint: 540,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n dots: false,\r\n arrows: false,\r\n },\r\n },\r\n ],\r\n }\r\n case \"zenithOffers\":\r\n \r\n const slickContainer = document.querySelector('.zenithOffers');\r\n const slickItems = slickContainer.children;\r\n let centerModeIfOne = slickItems.length === 1 ? true : false;\r\n let slidesToShowSetting = centerModeIfOne ? 2 : 3;\r\n\r\n return {\r\n centerMode: centerModeIfOne,\r\n dots: false,\r\n arrows: true,\r\n autoplay: false,\r\n infinite: false,\r\n slidesToScroll: 3,\r\n slidesToShow: slidesToShowSetting,\r\n prevArrow: $(\".prev\").eq(index),\r\n nextArrow: $(\".next\").eq(index),\r\n responsive: [\r\n {\r\n breakpoint: 540,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n dots: false,\r\n arrows: false,\r\n },\r\n },\r\n ],\r\n }\r\n case \"product\":\r\n return {\r\n dots: false,\r\n arrows: true,\r\n autoplay: false,\r\n infinite: false,\r\n slidesToScroll: 3,\r\n slidesToShow: 3,\r\n prevArrow: $(\".prev\").eq(index),\r\n nextArrow: $(\".next\").eq(index),\r\n // prevArrow: mslider.querySelector('.prev'),\r\n // nextArrow: mslider.querySelector('.next'),\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n adaptiveHeight: true,\r\n dots: false,\r\n arrows: false,\r\n },\r\n },\r\n ],\r\n }\r\n\r\n }\r\n };\r\n\r\n const initialize = () => {\r\n let mIndex = 0;\r\n items.forEach((item) => {\r\n document.querySelectorAll(item.className).forEach((elem) => {\r\n console.log(\"mIndex\", mIndex)\r\n $(elem).slick(settings(item.type, mIndex))\r\n mIndex++\r\n })\r\n // if (document.querySelector(item.className))\r\n // $(item.className).slick(settings(item.type))\r\n });\r\n };\r\n\r\n $(window).on('load', () => {\r\n initialize();\r\n });\r\n\r\n $(window).on('orientationchange', () => {\r\n items.forEach((item) => {\r\n if ($(item.className).slick(\"getSlick\").unslicked) {\r\n setTimeout(() => {\r\n $(item.className).slick(settings(item.type));\r\n }, 100);\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport default slider;\r\n","import { ajax, getUrlParameter } from '../common/common';\r\n\r\nconst paginatedArticles = () => {\r\n let paginationLinks = document.querySelectorAll('[data-pagination-target]');\r\n\r\n paginationLinks.forEach(elem => elem.addEventListener(\"click\",\r\n (e) => {\r\n e.preventDefault();\r\n const pagTarget = elem.getAttribute('data-pagination-target');\r\n const categoryId = document.querySelector('#categoryId').value;\r\n\r\n ajax('/umbraco/surface/Article/GetPaginatedArticles', { page: pagTarget, rootId: categoryId }, 'GET')\r\n .done(resp => {\r\n window.history.replaceState({ page: pagTarget }, '', '?page=' + pagTarget);\r\n\r\n let articlesDiv = document.querySelector('#ajax-wrapper');\r\n window.jQuery(articlesDiv).html(window.jQuery(resp));\r\n paginatedArticles();\r\n document.querySelector('#ajax-wrapper').scrollIntoView({behavior: 'smooth'});\r\n })\r\n .fail(er => { console.log(er); });\r\n\r\n }));\r\n}\r\n\r\nexport { paginatedArticles };","import { ajax, getUrlParameter, storeToUrl } from '../common/common';\r\n\r\nconst paginatedSearchResults = () => {\r\n let paginationLinks = document.querySelectorAll('[data-pagination-target]');\r\n\r\n paginationLinks.forEach(elem => elem.addEventListener(\"click\",\r\n (e) => {\r\n e.preventDefault();\r\n const pagTarget = elem.getAttribute('data-pagination-target');\r\n const query = getUrlParameter('q');\r\n\r\n ajax('/umbraco/surface/Search/GetResults', { page: pagTarget, q: query }, 'GET')\r\n .done(resp => {\r\n let dataForUrl = {\r\n q: query,\r\n page: pagTarget,\r\n };\r\n storeToUrl(dataForUrl);\r\n\r\n let resultsDiv = document.querySelector('#ajax-wrapper');\r\n window.jQuery(resultsDiv).html(window.jQuery(resp));\r\n paginatedSearchResults();\r\n document.querySelector('#ajax-wrapper').scrollIntoView({ behavior: 'smooth' });\r\n })\r\n .fail(er => { console.log(er); });\r\n\r\n }));\r\n}\r\n\r\nexport { paginatedSearchResults };","const fileFields = () => {\r\n var inputs = document.querySelectorAll(\".inputfile\");\r\n Array.prototype.forEach.call(inputs, function (input) {\r\n var label = input.nextElementSibling,\r\n labelVal = label.innerHTML;\r\n\r\n input.addEventListener(\"change\", function (e) {\r\n var fileName = \"\";\r\n if (this.files && this.files.length > 1)\r\n fileName = (this.getAttribute(\"data-multiple-caption\") || \"\").replace(\"{count}\", this.files.length);\r\n else fileName = e.target.value.split(\"\\\\\").pop();\r\n\r\n if (fileName) label.querySelector(\"span\").innerHTML = fileName;\r\n else label.innerHTML = labelVal;\r\n });\r\n });\r\n};\r\n\r\nconst saveFileAndGetPath = (file) => {\r\n return new Promise((resolve, reject) => {\r\n\r\n let data = new FormData();\r\n data.append(\"Attachment\", file);\r\n\r\n var token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n var locale = document.head.querySelector('meta[name=\"locale\"]');\r\n window.jQuery\r\n .ajax({\r\n beforeSend: function (xhr) {\r\n if (token) {\r\n xhr.setRequestHeader(\"__RequestVerificationToken\",token.content);\r\n }\r\n if (locale) {\r\n xhr.setRequestHeader(\"__CurrentLocale\",locale.content);\r\n }\r\n },\r\n url: \"/umbraco/surface/Form/SaveFile\",\r\n method: \"post\",\r\n data: data,\r\n processData: false,\r\n contentType: false,\r\n })\r\n .done((resp) => {\r\n resolve(resp);\r\n })\r\n .fail((er) => {\r\n resolve(\"\");\r\n });\r\n });\r\n};\r\n\r\nexport { fileFields, saveFileAndGetPath };","import { ajax } from \"../common/common\";\r\nimport { handleHiddenInputs } from \"./hiddenInputs\";\r\nimport { saveFileAndGetPath } from \"./file\";\r\n\r\nconst form = () => {\r\n const forms = document.querySelectorAll(\".js-form\");\r\n const recaptchaSiteKey = document.getElementById(\"recaptcha_site_key\").value;\r\n\r\n forms.forEach((form) => {\r\n handleHiddenInputs(form);\r\n\r\n //when required field changes, check if user can submit the form\r\n window.jQuery(form).on(\"change keyup blur input\", \"[required]\", function () {\r\n window.checkSubmissionEligibility(form, '.js-submit');\r\n });\r\n\r\n window.checkSubmissionEligibility(form, '.js-submit');\r\n\r\n form.querySelector('.js-submit').addEventListener(\"click\", async function () { await SubmitForm(event, form, recaptchaSiteKey) });\r\n\r\n if (form.querySelector('.js-clear')) {\r\n form.querySelector('.js-clear').addEventListener(\"click\", async (e) => {\r\n e.preventDefault();\r\n window.clearForm(form);\r\n });\r\n }\r\n });\r\n};\r\n\r\nconst SubmitForm = (e, form, recaptchaSiteKey) => {\r\n e.preventDefault();\r\n window.removeErrorClass(form);\r\n form.querySelector('.error_result').classList.add('hidden');\r\n\r\n if (formIsValid(form)) {\r\n grecaptcha.ready(async function () {\r\n grecaptcha\r\n .execute(recaptchaSiteKey, { action: \"submit\" })\r\n .then(async function (token) {\r\n\r\n\r\n //GATHER ELEMENTS\r\n let rowsArray = await formElementsToArray(form);\r\n\r\n //IF FILES EXIST\r\n if (form.querySelector(\"input[type=file]\")\r\n && form.querySelector(\"input[type=file]\").value) {\r\n rowsArray = await GetSubmittedFilesPath(rowsArray);\r\n }\r\n\r\n if (document.getElementById(\"formId\")) {\r\n let dataToSubmit = {\r\n PageId: document.getElementById(\"nodePageId\").value,\r\n FormId: document.getElementById(\"formId\").value,\r\n FormData: JSON.stringify({ Rows: rowsArray, }),\r\n EmailSubject: document.getElementById(\"emailSubject\").value,\r\n RecipientMailEncryption: document.getElementById(\"emailRecipient\").value,\r\n RecaptchaResponse: token\r\n };\r\n\r\n window.InitiateLoader(form);\r\n\r\n ajax(\"/umbraco/surface/Form/SubmitForm\",\r\n { formDataViewModel: dataToSubmit },\r\n \"POST\")\r\n .done((resp) => {\r\n if (resp != null) {\r\n window.RemoveLoader(form);\r\n window.jQuery(form).html(window.jQuery(resp));\r\n window.jQuery('html, body').animate({\r\n scrollTop: window.jQuery(\"#form-response-message\").offset().top - window.jQuery(\".js-form\").outerHeight(true)\r\n }, 700);\r\n }\r\n })\r\n .fail((er) => {\r\n window.RemoveLoader(form);\r\n form.querySelector('.error_result').classList.remove('hidden');\r\n });\r\n }\r\n });\r\n });\r\n } else {\r\n window.addErrorClass(form);\r\n }\r\n};\r\n\r\nconst formElementsToArray = (form) => {\r\n return new Promise((resolve, reject) => {\r\n var rows = form.querySelectorAll(\".form-row\");\r\n var rowsArray = [];\r\n\r\n rows.forEach(async (row) => {\r\n var columnsArray = await getAllRowColumns(row);\r\n rowsArray.push({ Columns: columnsArray });\r\n });\r\n\r\n resolve(rowsArray);\r\n });\r\n};\r\n\r\nconst getAllRowColumns = (row) => {\r\n return new Promise((resolve, reject) => {\r\n let columns = row.querySelectorAll(\".form-column\");\r\n let columnsArray = [];\r\n\r\n columns.forEach(async (column) => {\r\n var columnFields = await getAllColumnFields(column);\r\n columnsArray.push({ Column: columnFields });\r\n });\r\n\r\n resolve(columnsArray);\r\n });\r\n};\r\n\r\nconst getAllColumnFields = (column) => {\r\n return new Promise((resolve, reject) => {\r\n let fields = column.querySelectorAll(\".js-hidden-form-field\");\r\n let columnFields = [];\r\n\r\n fields.forEach((field) => {\r\n let formElement = {\r\n Type: field.getAttribute(\"data-alias\"),\r\n Label: field\r\n .getAttribute(\"data-label\")\r\n .replace(/<[^>]*>?/gm, \"\"),\r\n Value: field.value,\r\n Required: field.getAttribute(\"data-required\"),\r\n };\r\n\r\n if (formElement.Type == \"fileUploadElement\")\r\n formElement.Value = field.files[0];\r\n\r\n columnFields.push(formElement);\r\n });\r\n\r\n resolve(columnFields);\r\n });\r\n};\r\n\r\nconst GetSubmittedFilesPath = (rowsArray) => {\r\n return new Promise(async (resolve, reject) => {\r\n rowsArray.forEach((row) => {\r\n row.Columns.forEach((column) => {\r\n if (column === false) reject(false);\r\n\r\n column.Column.forEach(async (field) => {\r\n if (field.Type == \"fileUploadElement\") {\r\n const fileName = await saveFileAndGetPath(field.Value);\r\n field.Value = fileName;\r\n resolve(rowsArray);\r\n }\r\n });\r\n });\r\n });\r\n });\r\n};\r\n\r\nconst formIsValid = (form) => {\r\n return window.validatePatternFields(form)\r\n && window.validateEmailFields(form)\r\n && window.validatePhoneFields(form)\r\n && window.validateFileFields(form);\r\n}\r\n\r\nexport { form };","//fill hidden inputs on common forms based on the element that's changing\r\nconst handleHiddenInputs = (form) => {\r\n window.jQuery(form).on(\"change\",\r\n \"input[name='input'], textarea[name='textarea'], input[type='radio'], select, input[type='file']\",\r\n function () {\r\n window\r\n .jQuery(this)\r\n .closest(\"div.form-field\")\r\n .find(\"input.js-hidden-form-field\")\r\n .attr(\"value\", window.jQuery(this).val());\r\n }\r\n );\r\n\r\n window.jQuery(form).on(\"change\", \"input[type='checkbox']\", function () {\r\n window\r\n .jQuery(this)\r\n .closest(\"div.form-field\")\r\n .find(\"input.js-hidden-form-field\")\r\n .attr(\"value\", window.jQuery(this).prop(\"checked\"));\r\n });\r\n\r\n window.jQuery(form).on(\"change\", \"input[type='file']\", function () {\r\n window\r\n .jQuery(this)\r\n .closest(\"div.form-field\")\r\n .find(\"input.js-hidden-form-field\")\r\n .prop(\"files\", window.jQuery(this).prop(\"files\"));\r\n });\r\n}\r\n\r\nexport { handleHiddenInputs };","const filter = (filter = '.js-product-filter') => {\r\n const products = document.querySelectorAll('.product');\r\n const filterElement = document.querySelector(filter);\r\n\r\n document.querySelector('.select-selected').addEventListener('DOMSubtreeModified', (event) => {\r\n const selected = filterElement.value;\r\n products.forEach((product) => {\r\n const categories = product.dataset.categories.split(\",\");\r\n\r\n if (selected) {\r\n if (categories.includes(selected)) {\r\n product.parentElement.parentElement.classList.add('active');\r\n product.parentElement.parentElement.classList.remove('opaque');\r\n }\r\n else {\r\n product.parentElement.parentElement.classList.remove('active');\r\n product.parentElement.parentElement.classList.add('opaque');\r\n }\r\n }\r\n else {\r\n product.parentElement.parentElement.classList.add('active');\r\n product.parentElement.parentElement.classList.remove('opaque');\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport { filter };\r\n\r\n\r\n// Combo Product Collapsed section Logic\r\n\r\nconst collapseBtns = document.querySelectorAll('.open-product-desc');\r\n\r\nfunction expandContent(content) {\r\n content.style.maxHeight = content.scrollHeight + 'px';\r\n}\r\n\r\nfunction collapseContent(content) {\r\n content.style.maxHeight = '0';\r\n}\r\n\r\ncollapseBtns.forEach((btn) => {\r\n btn.addEventListener('click', () => {\r\n\r\n const section = btn.closest('.section');\r\n const content = section.querySelector('.collapsed-content');\r\n const innerBtn = btn.querySelector('.inner-btn');\r\n\r\n if (content) {\r\n if (content.style.maxHeight && content.style.maxHeight !== '0px') {\r\n collapseContent(content);\r\n innerBtn.innerHTML = ``; \r\n } else {\r\n expandContent(content);\r\n innerBtn.innerHTML = ``; \r\n }\r\n } else {\r\n console.error('Collapsed content not found');\r\n }\r\n });\r\n});\r\n\r\ndocument.querySelectorAll('.collapsed-content').forEach(content => {\r\n content.style.maxHeight = '0';\r\n});\r\n\r\n\r\n\r\n","import { getUrlParameter } from '../common/common';\r\n\r\nconst exportPageData = () => {\r\n if (getUrlParameter('downloadFile')) {\r\n\r\n //trim all unnecessary slashes and substrings to get the right file name. (ignore language part)\r\n var position = window.location.pathname.indexOf(\"/\", window.location.pathname.indexOf(\"/\") + 1) + 1;\r\n let filename = window.location.pathname.substring(position);\r\n\r\n if (filename.charAt(filename.length - 1) == '/')\r\n filename = filename.substring(0, filename.length - 1);\r\n\r\n if (filename == '' || filename == '/')\r\n filename = 'home';\r\n\r\n var preHtml = \"
${message}
`).join('');\r\n paymentForm.querySelector('.js-validation-errors').classList.remove('hidden');\r\n }\r\n\r\n async function SubmitBankRedirectForm(data) {\r\n //build redirect form\r\n const form = document.createElement('form');\r\n form.method = data.HttpMethod;\r\n form.action = data.BankUrl;\r\n for (const key in data.Form) {\r\n const hiddenField = document.createElement('input');\r\n hiddenField.type = 'hidden';\r\n hiddenField.name = key;\r\n hiddenField.value = data.Form[key];\r\n form.appendChild(hiddenField);\r\n }\r\n\r\n //submit\r\n document.body.appendChild(form);\r\n await form.submit();\r\n }\r\n\r\n function GetPaymentForm() {\r\n return document.getElementById('payment-form');\r\n }\r\n};\r\n\r\nexport { paymentForm };","import { ajax, getUrlParameter } from '../common/common';\r\n\r\nconst ebillingCopyFields = () => {\r\n const emailColumns = document.querySelectorAll('.email-td')\r\n\r\n emailColumns.forEach(emailColumn => {\r\n let input = emailColumn.querySelector('.js-form-input')\r\n let button = emailColumn.querySelector('.copy-button')\r\n\r\n button.addEventListener('click', () => {\r\n emailColumns.forEach(emailColumn => {\r\n emailColumn.querySelector('.js-form-input').value = input.value\r\n })\r\n })\r\n })\r\n}\r\n\r\nconst validateEbillingForm = () => {\r\n const form = document.querySelector('.js-ebilling-form');\r\n const checkboxField = form.querySelector('.checkbox.form-field');\r\n const submitButton = form.querySelector('.js-submit');\r\n\r\n if (submitButton) {\r\n submitButton.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n const checkboxInput = checkboxField.querySelector('.js-form-checkbox').checked;\r\n\r\n customRemoveErrorClass(form, checkboxField, checkboxInput);\r\n document.querySelector('.js-response').innerHTML = '';\r\n\r\n if (formIsValid(form, checkboxInput)) {\r\n submitButton.disabled = true;\r\n form.querySelector('.loader').classList.remove('hidden');\r\n\r\n let emails = Array.from(document.querySelectorAll('.email-td .js-form-input'), ({ value }) => value);\r\n let suppliesNumbers = Array.from(document.querySelectorAll('.supply-code'), ({ textContent }) => textContent);\r\n\r\n let model = {\r\n Emails: emails,\r\n ProviderIds: suppliesNumbers,\r\n Token: getUrlParameter('token')\r\n };\r\n\r\n ajax(\"/umbraco/surface/Ebill/SendEmailsToMultipleSuppliersAsync\",\r\n { model: model },\r\n \"POST\"\r\n ).done((resp) => {\r\n if (resp != null && resp.Content != null) {\r\n document.querySelector('.js-response').innerHTML = resp.Content;\r\n submitButton.disabled = false;\r\n }\r\n form.querySelector('.loader').classList.add('hidden');\r\n\r\n })\r\n .fail((er) => {\r\n form.querySelector('.loader').classList.add('hidden');\r\n\r\n });\r\n\r\n } else {\r\n customAddErrorClass(form, checkboxField, checkboxInput);\r\n }\r\n });\r\n }\r\n}\r\n\r\nconst formIsValid = (form, checkboxInput) => {\r\n return window.validateEmailFields(form)\r\n && checkboxInput;\r\n}\r\n\r\nconst customRemoveErrorClass = (form, checkboxField, checkboxInput) => {\r\n window.removeErrorClass(form)\r\n\r\n if (checkboxInput) {\r\n checkboxField.classList.remove('error');\r\n }\r\n}\r\n\r\nconst customAddErrorClass = (form, checkboxField, checkboxInput) => {\r\n form.querySelector('.general-error').classList.add('error');\r\n window.addErrorClass(form)\r\n\r\n if (!checkboxInput) {\r\n checkboxField.classList.add('error');\r\n }\r\n}\r\n\r\n\r\nexport { ebillingCopyFields, validateEbillingForm };","const uploadFilesPage = () => {\r\n const form = document.querySelector('.upload-files-form');\r\n const recaptchaSiteKey = document.getElementById(\"recaptcha_site_key\").value;\r\n const submitButton = form.querySelector('.submit');\r\n\r\n if (form && submitButton) {\r\n form.addEventListener('input', function (event) {\r\n form.querySelector('.file_error').classList.add('hidden');\r\n if (formIsValid(form))\r\n submitButton.classList.remove('button--disabled');\r\n else\r\n submitButton.classList.add('button--disabled');\r\n });\r\n\r\n submitButton.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n grecaptcha.ready(async function () {\r\n grecaptcha\r\n .execute(recaptchaSiteKey, { action: \"submit\" })\r\n .then(async function (token) {\r\n\r\n form.querySelector('.submit-result').innerHTML = '';\r\n\r\n let formData = new FormData();\r\n\r\n Array.from(form.querySelector('.inputfile').files).forEach(file => {\r\n formData.append('PostedFiles', file);\r\n });\r\n\r\n formData.append('RecaptchaResponse', token);\r\n formData.append('Token', document.querySelector('.token').value);\r\n formData.append('Consent', form.querySelector('.consent').checked);\r\n\r\n var antiForgerytoken = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n var locale = document.head.querySelector('meta[name=\"locale\"]');\r\n\r\n form.querySelector('.submit').classList.add('button--disabled');\r\n window.InitiateLoader(form);\r\n\r\n window.jQuery.ajax({\r\n beforeSend: function (xhr) {\r\n if (token) {\r\n xhr.setRequestHeader(\"__RequestVerificationToken\", antiForgerytoken.content);\r\n }\r\n if (locale) {\r\n xhr.setRequestHeader(\"__CurrentLocale\", locale.content);\r\n }\r\n },\r\n url: \"/upload-files/post-data\",\r\n method: \"post\",\r\n data: formData,\r\n processData: false,\r\n contentType: false,\r\n }\r\n ).done((resp) => {\r\n window.RemoveLoader(form);\r\n form.querySelector('.submit-result').innerHTML = resp;\r\n resetForm(form);\r\n }\r\n ).fail((er) => {\r\n window.RemoveLoader(form);\r\n resetForm(form);\r\n console.log(er);\r\n });\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nfunction formIsValid(form) {\r\n return consentIsChecked(form) && fileFieldsAreValid(form);\r\n}\r\n\r\nfunction consentIsChecked(form) {\r\n let isChecked = form.querySelector('.consent').checked;\r\n return isChecked;\r\n}\r\n\r\nfunction fileFieldsAreValid(form) {\r\n let flag = true;\r\n let filesCount = Array.from(form.querySelector('.inputfile').files).length;\r\n\r\n if (filesCount == 0) {\r\n flag = false;\r\n }\r\n else if (filesCount > 10) {\r\n form.querySelector('.file_error').classList.remove('hidden');\r\n flag = false;\r\n }\r\n else {\r\n //check if all files are of correct size\r\n Array.from(form.querySelector('.inputfile').files).forEach(file => {\r\n if (file.size > 3145728) {\r\n form.querySelector('.file_error').classList.remove('hidden');\r\n flag = false;\r\n }\r\n });\r\n }\r\n\r\n return flag;\r\n}\r\n\r\nfunction resetForm(form) {\r\n form.querySelectorAll(\"input[type='file']\").forEach((fileField) => {\r\n var labelField = getNextSibling(fileField, '.wlabel');\r\n if (labelField != null && labelField.hasAttribute('data-label-default')) {\r\n let defaultFileLabel = labelField.getAttribute('data-label-default');\r\n labelField.querySelector(\"span\").innerHTML = defaultFileLabel;\r\n }\r\n });\r\n\r\n form.querySelectorAll('input').forEach((item) => {\r\n if (item?.value) item.value = \"\";\r\n if (item?.checked) item.checked = false;\r\n });\r\n\r\n form.querySelector('.submit').classList.add('button--disabled');\r\n}\r\n\r\nexport { uploadFilesPage };","const electricityButton = async () => {\r\n\r\n const fetchBtn = document.querySelector(\".electricity-modal-btn\");\r\n const modal = document.querySelector(\".electricity-modal\");\r\n const closeModalBtn = document.querySelector(\".electricity-close-btn\");\r\n const openModalBtn = document.querySelector(\".open-modal-btn\");\r\n\r\n openModalBtn.addEventListener(\"click\", () => {\r\n modal.showModal();\r\n });\r\n\r\n closeModalBtn.addEventListener(\"click\", () => {\r\n modal.close();\r\n });\r\n\r\n\r\n // Fetch\r\n\r\n fetchBtn.addEventListener(\"click\", () => {\r\n const supplyValue = document.querySelector(\"#supply\").value;\r\n const choiceValue = document.querySelector(\"#choice\").value;\r\n const nodePageId = document.querySelector(\"#NodePageId\").value;\r\n const modalText = document.querySelector(\".modal-text\")\r\n const loader = document.querySelector(\".electricity-loader\")\r\n const url = '/umbraco/api/NewElectricityBillApi/UpdateChoice';\r\n loader.classList.add(\"active\")\r\n const data = {\r\n Supply: supplyValue,\r\n Choice: choiceValue,\r\n NodePageId: nodePageId\r\n };\r\n\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n closeModalBtn.addEventListener(\"click\", () => {\r\n window.location.href = \"/\";\r\n });\r\n return response.json();\r\n })\r\n .then(data => {\r\n loader.classList.remove(\"active\")\r\n modalText.innerHTML = data.Data.message\r\n fetchBtn.classList.add(\"deactive\")\r\n closeModalBtn.addEventListener(\"click\", () => {\r\n window.location.href = \"/\";\r\n });\r\n })\r\n .catch(error => {\r\n console.error('Error:', error);\r\n });\r\n });\r\n}\r\nexport { electricityButton };\r\n","import {\r\n validationsChecks,\r\n validationsRadioGroup,\r\n validationsSelects,\r\n validationField,\r\n validateMail,\r\n validatePhone,\r\n validateCheckbox,\r\n validateText,\r\n checkAge,\r\n getAge,\r\n validationsCheckGroup\r\n} from \"./validation_functions/validationsUpdated.js\";\r\n\r\n\r\n\r\nexport default function powerUpFormComplex() {\r\n const enable = false;\r\n let fErrors = {};\r\n const mForm = document.querySelector(\"#powerUpFormComplex\");\r\n const NodePageId = document.querySelector(\"#NodePageId\");\r\n const UmbracoKey = document.querySelector(\"#UmbracoKey\");\r\n const CrmLeadCodeForCustomer = document.querySelector(\"#CrmLeadCodeForCustomer\");\r\n const CrmLeadCodeForNonCustomer = document.querySelector(\"#CrmLeadCodeForNonCustomer\");\r\n const PowerUpName = document.querySelector(\"#PowerUpName\");\r\n const submitButton = mForm.querySelector(\"#formSubmit\");\r\n const resetButton = mForm.querySelector(\"input[type='reset']\");\r\n const CustomerUniqueId = mForm.querySelector(\"#CustomerUniqueId\");\r\n const CustomerTaxCode = mForm.querySelector(\"#CustomerTaxCode\");\r\n const fname = mForm.querySelector(\"#Name\");\r\n const lname = mForm.querySelector(\"#LastName\");\r\n const email = mForm.querySelector(\"#Email\");\r\n const fphone = mForm.querySelector(\"#MobilePhone\");\r\n const fTerms = mForm.querySelector(\"#AcceptTerms\");\r\n const IsCustomer = mForm.querySelectorAll(\"input[name='CustomerZenith']\");\r\n const IsAdult = mForm.querySelectorAll(\"input[name='IsAdult']\");\r\n const PersonalData = mForm.querySelectorAll(\"input[name='PersonalData']\");\r\n const EventName = mForm.querySelectorAll(\"input[name='EventName']\");\r\n let EventNames;\r\n let EventId;\r\n const Promotions = mForm.querySelectorAll(\"input[name='Promotions']\");\r\n const ContactWith = mForm.querySelectorAll(\"input[name='ContactWith']\");\r\n\r\n // let fieldsComparison = [fname.id, lname.id, email.id, fphone.id, fTerms.id, IsCustomer[0].name, IsAdult[0].name, PersonalData[0].name, Promotions[0].name];\r\n // Uncomment when events start and comment the above\r\n let fieldsComparison = EventName.length > 0 ? [fname.id, lname.id, email.id, fphone.id, fTerms.id, IsCustomer[0].name, IsAdult[0].name, PersonalData[0].name, Promotions[0].name, EventName[0].name] : [fname.id, lname.id, email.id, fphone.id, fTerms.id, IsCustomer[0].name, IsAdult[0].name, PersonalData[0].name, Promotions[0].name];\r\n\r\n\r\n const eventIdsArray = [];\r\n const eventNamesArray = [];\r\n EventName.length > 0 && EventName.forEach(elem => {\r\n elem.addEventListener('click', e => e.preventDefault())\r\n const parent = elem.parentNode;\r\n const label = parent.querySelector('label');\r\n label.addEventListener('click', e => e.preventDefault())\r\n const eventId = parent.querySelector(\"input[type='hidden']\")\r\n elem.checked && toggleArrayValue(eventIdsArray, eventId.value)\r\n EventId = eventIdsArray.join(\",\");\r\n elem.checked && toggleArrayValue(eventNamesArray, elem.value)\r\n EventNames = eventNamesArray.join(\",\");\r\n parent.addEventListener('click', (e) => {\r\n !elem.checked ? elem.checked = true : elem.checked = false;\r\n // elem.click()\r\n toggleArrayValue(eventIdsArray, eventId.value)\r\n EventId = eventIdsArray.join(\",\");\r\n toggleArrayValue(eventNamesArray, elem.value)\r\n EventNames = eventNamesArray.join(\",\");\r\n })\r\n })\r\n function checkCorrects(field) {\r\n const comparelength = () => getSelectedValue(IsCustomer) == \"true\" ? fieldsComparison.length - 3 : fieldsComparison.length;\r\n if (Object.keys(fErrors).length == comparelength()) {\r\n let hasErrors = false;\r\n for (const property in fErrors) {\r\n // console.log(`c-${property}: ${fErrors[property]}`);\r\n fErrors[property] == false ? (hasErrors = true) : null;\r\n }\r\n hasErrors\r\n ? submitButton.classList.add(\"button--disabled\")\r\n : submitButton.classList.remove(\"button--disabled\");\r\n } else {\r\n submitButton.classList.add(\"button--disabled\");\r\n }\r\n if (Object.keys(fErrors).length > 1) {\r\n resetButton.classList.remove(\"button--disabled\")\r\n } else {\r\n resetButton.classList.add(\"button--disabled\")\r\n }\r\n }\r\n function handleIsCustomer() {\r\n const sliderSection = document.querySelector('.sliderSection')\r\n if (getSelectedValue(IsCustomer) == \"true\") {\r\n sliderSection.classList.add(\"close\");\r\n uncheckRadioGroup(IsAdult)\r\n uncheckRadioGroup(PersonalData)\r\n uncheckRadioGroup(Promotions)\r\n delete fErrors?.IsAdult;\r\n delete fErrors?.PersonalData;\r\n delete fErrors?.Promotions;\r\n } else {\r\n sliderSection.classList.remove(\"close\");\r\n }\r\n checkCorrects()\r\n }\r\n\r\n function handleIsNotAdult() {\r\n if (getSelectedValue(IsAdult) == \"false\") {\r\n fErrors[\"IsAdult\"] = false;\r\n }\r\n checkCorrects()\r\n }\r\n\r\n handleIsCustomer()\r\n validationsRadioGroup(IsCustomer, null, fErrors);\r\n\r\n resetButton.addEventListener(\"click\", () => {\r\n setTimeout(() => {\r\n handleIsCustomer()\r\n validationsRadioGroup(IsCustomer, null, fErrors);\r\n resetButton.classList.add(\"button--disabled\")\r\n delete fErrors?.[fname.name];\r\n delete fErrors?.[lname.name];\r\n delete fErrors?.[fphone.name];\r\n delete fErrors?.[email.name];\r\n delete fErrors?.[IsAdult[0].name];\r\n delete fErrors?.[PersonalData[0].name];\r\n delete fErrors?.[Promotions[0].name];\r\n delete fErrors?.[ContactWith[0].name];\r\n delete fErrors?.[fTerms.name];\r\n }, 100)\r\n })\r\n\r\n validationField(fname, \"blur\", null, fErrors, checkCorrects);\r\n validationField(lname, \"blur\", null, fErrors, checkCorrects);\r\n validationField(email, \"blur\", validateMail, fErrors, checkCorrects);\r\n validationField(fphone, \"blur\", null, fErrors, checkCorrects);\r\n validationsChecks(fTerms, \"change\", fErrors, checkCorrects);\r\n validationsRadioGroup(IsCustomer, \"change\", fErrors, handleIsCustomer);\r\n validationsRadioGroup(IsAdult, \"change\", fErrors, handleIsNotAdult);\r\n validationsRadioGroup(PersonalData, \"change\", fErrors, checkCorrects);\r\n // Uncomment when events start\r\n EventName.length > 0 && validationsCheckGroup(EventName, \"click\", fErrors, checkCorrects);\r\n validationsRadioGroup(Promotions, \"change\", fErrors, checkCorrects);\r\n\r\n submitButton.addEventListener(\"click\", async function (e) {\r\n e.preventDefault();\r\n let hasErrors = false;\r\n validationField(fname, null, null, fErrors);\r\n validationField(lname, null, null, fErrors);\r\n validationField(email, null, validateMail, fErrors);\r\n validationField(fphone, null, null, fErrors);\r\n validationsChecks(fTerms, null, fErrors);\r\n validationsRadioGroup(IsCustomer, null, fErrors, checkCorrects);\r\n getSelectedValue(IsCustomer) !== \"true\" && validationsRadioGroup(IsAdult, null, fErrors, handleIsNotAdult);\r\n getSelectedValue(IsCustomer) !== \"true\" && validationsRadioGroup(PersonalData, null, fErrors, checkCorrects);\r\n // Uncomment when events start\r\n EventName.length > 0 && validationsCheckGroup(EventName, null, fErrors, checkCorrects);\r\n getSelectedValue(IsCustomer) !== \"true\" && validationsRadioGroup(Promotions, null, fErrors, checkCorrects);\r\n\r\n // We check the fErros object properties for if any of them is false. If yes then we change hasErrors to true.\r\n for (const property in fErrors) {\r\n // console.log(`sab-${property}: ${fErrors[property]}`);\r\n fErrors[property] == false ? (hasErrors = true) : null;\r\n }\r\n\r\n hasErrors ? null : await SubmitDeclareInterestForm(mForm.action);\r\n });\r\n async function SubmitDeclareInterestForm(url) {\r\n var token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n var locale = document.head.querySelector('meta[name=\"locale\"]');\r\n document.body.classList.add(\"loading\");\r\n let data = {\r\n NodePageId: NodePageId.value,\r\n CustomerUniqueId: CustomerUniqueId.value,\r\n CustomerTaxCode: CustomerTaxCode.value,\r\n UmbracoKey: UmbracoKey.value,\r\n PowerUpName: PowerUpName.value,\r\n Name: fname.value,\r\n LastName: lname.value,\r\n Email: email.value,\r\n MobilePhone: fphone.value,\r\n AcceptTerms: fTerms.value,\r\n CustomerZenith: getSelectedValue(IsCustomer),\r\n IsAdult: getSelectedValue(IsAdult),\r\n PersonalData: getSelectedValue(PersonalData),\r\n // Uncomment when events start\r\n EventName: EventNames,\r\n EventId: EventId, // EventName.length > 0 ? EventId : \"\",\r\n Promotions: getSelectedValue(Promotions),\r\n ContactWith: getCheckedValues(ContactWith),\r\n CrmLeadCode: getSelectedValue(IsCustomer) == \"true\" ? CrmLeadCodeForCustomer.value : CrmLeadCodeForNonCustomer.value,\r\n };\r\n var myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"__CurrentLocale\", locale.content);\r\n token && myHeaders.append(\"__RequestVerificationToken\", `${token.content}`);\r\n try {\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: myHeaders,\r\n body: JSON.stringify(data),\r\n });\r\n if (!response.ok) {\r\n document.body.classList.remove(\"loading\");\r\n document.querySelector(\".error_result .textMessage\").innerHTML =\r\n responseData.Message;\r\n document.querySelector(\".error_result\").classList.remove(\"hidden\");\r\n mForm.classList.add('hidden');\r\n throw new Error(`HTTP error: ${response.status}`);\r\n }\r\n const responseData = await response.json();\r\n document.body.classList.remove(\"loading\");\r\n if (responseData.success) {\r\n fname.value = \"\";\r\n lname.value = \"\";\r\n email.value = \"\";\r\n fphone.value = \"\";\r\n fTerms.checked = false;\r\n data = {\r\n NodePageId: NodePageId.value,\r\n UmbracoKey: UmbracoKey.value,\r\n PowerUpName: PowerUpName.value,\r\n Name: \"\",\r\n LastName: \"\",\r\n Email: \"\",\r\n MobilePhone: \"\",\r\n AcceptTerms: false,\r\n CustomerZenith: \"\",\r\n IsAdult: \"\",\r\n PersonalData: \"\",\r\n // Uncomment when events start\r\n EventName: \"\",\r\n EventId: \"\",\r\n Promotions: \"\",\r\n };\r\n }\r\n if (responseData.success) {\r\n document.querySelector(\".success_result .textMessage\").innerHTML =\r\n responseData.Message;\r\n document.querySelector(\".success_result .textThankYouMessage\").innerHTML =\r\n responseData.ThankyouMessage;\r\n document.querySelector(\".success_result\").classList.remove(\"hidden\");\r\n mForm.classList.add('hidden');\r\n } else {\r\n document.body.classList.remove(\"loading\");\r\n document.querySelector(\".error_result .textMessage\").innerHTML =\r\n responseData.Message;\r\n document.querySelector(\".error_result\").classList.remove(\"hidden\");\r\n mForm.classList.add('hidden');\r\n }\r\n } catch (error) {\r\n document.body.classList.remove(\"loading\");\r\n document.querySelector(\".error_result .textMessage\").innerHTML =\r\n responseData.Message;\r\n document.querySelector(\".error_result\").classList.remove(\"hidden\");\r\n mForm.classList.add('hidden');\r\n // console.error(`There was an error sending the form: ${error}`);\r\n }\r\n }\r\n}\r\n\r\nfunction getSelectedValue(radioButtons) {\r\n for (const radioButton of radioButtons) {\r\n if (radioButton.checked) {\r\n return radioButton.value;\r\n }\r\n }\r\n}\r\n\r\nfunction uncheckRadioGroup(radioButtons) {\r\n radioButtons.forEach((radioButton) => {\r\n radioButton.checked = false;\r\n });\r\n}\r\n\r\nfunction getCheckedValues(checkboxes) {\r\n const checkedValues = [];\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n if (checkboxes[i].checked) {\r\n checkedValues.push(checkboxes[i].value);\r\n }\r\n }\r\n return checkedValues.join(\",\")\r\n}\r\n\r\nfunction toggleArrayValue(arr, val) {\r\n const index = arr.indexOf(val);\r\n if (index === -1) {\r\n arr.push(val); // add value to array if it doesn't exist\r\n } else {\r\n arr.splice(index, 1); // remove value from array if it exists\r\n }\r\n}\r\n\r\n\r\n// ID & TAX ADDITIONS\r\n\r\nlet overlay;\r\n\r\nasync function customerCheck(uniqueId, taxCode, nodePage) {\r\n const token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n const locale = document.head.querySelector('meta[name=\"locale\"]');\r\n const url = \"/umbraco/api/PowerUpApi/VerifyCustomer\";\r\n const data = {\r\n \"NodePageId\": nodePage,\r\n \"CustomerUniqueId\": uniqueId,\r\n \"CustomerTaxCode\": taxCode\r\n };\r\n\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"__CurrentLocale\", locale.content);\r\n token && myHeaders.append(\"__RequestVerificationToken\", `${token.content}`);\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: myHeaders,\r\n body: JSON.stringify(data),\r\n });\r\n\r\n const responseData = await response.json();\r\n\r\n const errorMessage = document.querySelector(\"#errorMessage\");\r\n errorMessage.style.display = \"none\";\r\n if (!response.ok || !responseData.Data.success) {\r\n console.error(\"HTTP-Error: \" + response.status);\r\n errorMessage.style.display = \"block\";\r\n document.querySelector(\"#submitBtn\").innerHTML = 'Έλεγχος Πελάτη';\r\n document.querySelector(\"#errorMessage\").innerHTML = `${responseData.Data.message || 'Προέκυψε ένα σφάλμα'}`\r\n return;\r\n }\r\n\r\n if (responseData.Data.success) {\r\n overlay.style.display = \"none\";\r\n // document.querySelector(\"#subButton\").style.visibility = 'hidden';\r\n document.querySelector(\"#subButton\").classList.add(\"button--disabled\")\r\n document.querySelector(\"#submitBtn\").innerHTML = 'Έλεγχος Πελάτη';\r\n document.querySelector(\"#clearButton\").style.visibility = 'visible';\r\n errorMessage.style.display = \"block\";\r\n document.querySelector(\"#errorMessage\").innerHTML = `${responseData.Data.message || 'Επιτυχής ταυτοποίηση'}`\r\n enableFormFields();\r\n disableAltFormFields()\r\n }\r\n } catch (error) {\r\n console.log(\"An error occurred in customerCheck!\");\r\n } finally {\r\n document.querySelector(\"#submitBtn\").disabled = false;\r\n }\r\n}\r\n\r\nfunction disableFormFields() {\r\n const formFields = document.querySelectorAll('.form-field:not(.verform)');\r\n formFields.forEach((field) => {\r\n const inputs = field.querySelectorAll('input:not([type=\"radio\"]), select, textarea');\r\n inputs.forEach((input) => {\r\n input.disabled = true;\r\n });\r\n });\r\n}\r\n\r\nfunction disableAltFormFields() {\r\n const formFields = document.querySelectorAll('.verform');\r\n formFields.forEach((field) => {\r\n const inputs = field.querySelectorAll('input:not([type=\"radio\"]), select, textarea');\r\n inputs.forEach((input) => {\r\n input.disabled = true;\r\n });\r\n });\r\n}\r\n\r\nfunction enableFormFields() {\r\n const formFields = document.querySelectorAll('.form-field:not(.verform)');\r\n formFields.forEach((field) => {\r\n const inputs = field.querySelectorAll('input:not([type=\"radio\"]), select, textarea');\r\n inputs.forEach((input) => {\r\n input.disabled = false;\r\n });\r\n });\r\n}\r\n\r\nfunction enableAltFormFields() {\r\n const formFields = document.querySelectorAll('.verform');\r\n formFields.forEach((field) => {\r\n const inputs = field.querySelectorAll('input:not([type=\"radio\"]), select, textarea');\r\n inputs.forEach((input) => {\r\n input.disabled = false;\r\n });\r\n });\r\n}\r\n\r\nfunction hideButtons() {\r\n // document.querySelector(\"#subButton\").style.visibility = 'hidden';\r\n document.querySelector(\"#subButton\").classList.add(\"button--disabled\");\r\n document.querySelector(\"#clearButton\").style.visibility = 'hidden';\r\n}\r\n\r\nfunction showButtons() {\r\n // document.querySelector(\"#subButton\").style.visibility = 'visible';\r\n document.querySelector(\"#subButton\").classList.remove(\"button--disabled\")\r\n document.querySelector(\"#clearButton\").style.visibility = 'visible';\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n let customerRadio = document.querySelector(\"#IsCustomer\");\r\n let notCustomerRadio = document.querySelector(\"#IsNotCustomer\");\r\n const verificationForm1 = document.querySelector(\"#verification-form1\");\r\n const verificationForm2 = document.querySelector(\"#verification-form2\");\r\n\r\n overlay = document.createElement('div');\r\n overlay.id = \"overlay\";\r\n overlay.style.position = \"absolute\";\r\n overlay.style.top = \"0\";\r\n overlay.style.left = \"0\";\r\n overlay.style.width = \"100%\";\r\n overlay.style.height = \"100%\";\r\n overlay.style.backgroundColor = \"rgba(0,0,0,0.5)\";\r\n overlay.style.zIndex = \"999\";\r\n overlay.style.display = \"none\";\r\n\r\n const showForm = () => {\r\n disableFormFields();\r\n overlay.style.display = \"block\";\r\n\r\n verificationForm1.classList.remove('hidden-verification');\r\n verificationForm2.classList.remove('hidden-verification');\r\n verificationForm1.classList.add('visible-verification');\r\n verificationForm2.classList.add('visible-verification');\r\n showButtons();\r\n }\r\n\r\n const hideForm = () => {\r\n verificationForm1.classList.add('hidden-verification');\r\n verificationForm2.classList.add('hidden-verification');\r\n verificationForm1.classList.remove('visible-verification');\r\n verificationForm2.classList.remove('visible-verification');\r\n overlay.style.display = \"none\";\r\n enableFormFields();\r\n hideButtons();\r\n }\r\n if (document.querySelector(\"#submitBtn\")) {\r\n document.querySelector(\"#submitBtn\").addEventListener(\"click\", function (event) {\r\n event.preventDefault();\r\n\r\n this.disabled = true;\r\n\r\n let uniqueId = document.querySelector(\"#CustomerUniqueId\").value;\r\n let taxCode = document.querySelector(\"#CustomerTaxCode\").value;\r\n let nodePage = document.querySelector(\"#NodePageId\").value;\r\n customerCheck(uniqueId, taxCode, nodePage);\r\n this.childNodes[0].nodeValue = '';\r\n this.innerHTML = '';\r\n });\r\n }\r\n\r\n const clearForm = () => {\r\n document.querySelector(\"#CustomerUniqueId\").value = '';\r\n document.querySelector(\"#CustomerTaxCode\").value = '';\r\n document.querySelector(\"#submitBtn\").innerHTML = 'Έλεγχος Πελάτη';\r\n overlay.style.display = \"none\";\r\n enableAltFormFields();\r\n disableFormFields()\r\n // document.querySelector(\"#subButton\").style.visibility = 'visible';\r\n document.querySelector(\"#subButton\").classList.remove(\"button--disabled\")\r\n document.querySelector(\"#clearButton\").classList.add(\"button--disabled\")\r\n document.querySelector(\"#clearBtn\").classList.add(\"disabled\")\r\n }\r\n if (document.querySelector(\"#clearBtn\")){\r\n document.querySelector(\"#clearBtn\").addEventListener(\"click\", function (event) {\r\n event.preventDefault();\r\n clearForm();\r\n document.querySelector(\"#errorMessage\").innerHTML = ``\r\n });\r\n }\r\n\r\n if (customerRadio) {\r\n customerRadio.addEventListener('change', function () {\r\n if (customerRadio.checked) {\r\n showForm();\r\n }\r\n });\r\n }\r\n function resetFormToInitialState() {\r\n document.querySelector(\"#CustomerUniqueId\").value = '';\r\n document.querySelector(\"#CustomerTaxCode\").value = '';\r\n document.querySelector(\"#submitBtn\").innerHTML = 'Έλεγχος Πελάτη';\r\n overlay.style.display = \"none\";\r\n enableAltFormFields();\r\n disableFormFields()\r\n document.querySelector(\"#subButton\").style.visibility = 'visible';\r\n document.querySelector(\"#clearButton\").style.visibility = 'hidden';\r\n document.querySelector(\"#errorMessage\").innerHTML = ``\r\n document.querySelector(\"#clearButton\").classList.add(\"button--disabled\")\r\n document.querySelector(\"#clearBtn\").classList.add(\"disabled\")\r\n }\r\n\r\n const toggleCustomerInputs = (isCustomer) => {\r\n const customerUniqueIdInput = document.querySelector(\"#CustomerUniqueId\");\r\n const customerTaxCodeInput = document.querySelector(\"#CustomerTaxCode\");\r\n\r\n if (isCustomer) {\r\n customerUniqueIdInput.style.display = \"block\";\r\n customerTaxCodeInput.style.display = \"block\";\r\n } else {\r\n customerUniqueIdInput.style.display = \"none\";\r\n customerTaxCodeInput.style.display = \"none\";\r\n }\r\n }\r\n\r\n if (customerRadio) {\r\n customerRadio.addEventListener('change', function () {\r\n if (customerRadio.checked) {\r\n resetFormToInitialState();\r\n showForm();\r\n toggleCustomerInputs(true); \r\n document.querySelector(\".verbutton-container\").classList.remove(\"remove-block\")\r\n }\r\n });\r\n\r\n \r\n if (customerRadio.checked) {\r\n resetFormToInitialState();\r\n showForm();\r\n toggleCustomerInputs(true);\r\n }\r\n }\r\n\r\n if (notCustomerRadio) {\r\n notCustomerRadio.addEventListener('change', function () {\r\n if (notCustomerRadio.checked) {\r\n resetFormToInitialState();\r\n hideForm();\r\n toggleCustomerInputs(false);\r\n document.querySelector(\".verbutton-container\").classList.add(\"remove-block\")\r\n }\r\n });\r\n\r\n \r\n if (notCustomerRadio.checked) {\r\n resetFormToInitialState();\r\n hideForm();\r\n toggleCustomerInputs(false);\r\n document.querySelector(\".verbutton-container\").classList.add(\"remove-block\")\r\n }\r\n }\r\n if (document.querySelector(\"#CustomerUniqueId\")) {\r\n document.querySelector(\"#CustomerUniqueId\").addEventListener('change', function(event) {\r\n document.querySelector(\"#clearButton\").classList.remove(\"button--disabled\")\r\n document.querySelector(\"#clearBtn\").classList.remove(\"disabled\")\r\n });\r\n }\r\n if (document.querySelector(\"#CustomerTaxCode\")) {\r\n document.querySelector(\"#CustomerTaxCode\").addEventListener('change', function(event) {\r\n document.querySelector(\"#clearButton\").classList.remove(\"button--disabled\")\r\n document.querySelector(\"#clearBtn\").classList.remove(\"disabled\")\r\n });\r\n }\r\n});\r\n","function validationsChecks(field, myevent = null, errorObj, eventCallback) {\r\n\tconst fieldContainer = field.parentNode;\r\n\tconst emptyfield = fieldContainer.querySelector(\".emptyField\");\r\n\tif (myevent) {\r\n\t\tfield.addEventListener(myevent, function () {\r\n\t\t\tif (validateCheckbox(field)) {\r\n\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\t\terrorObj[field.id] = true;\r\n\t\t\t} else {\r\n\t\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\t\terrorObj[field.id] = false;\r\n\t\t\t}\r\n\t\t\teventCallback && eventCallback();\r\n\t\t});\r\n\t} else {\r\n\t\tif (validateCheckbox(field)) {\r\n\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\terrorObj[field.id] = true;\r\n\t\t} else {\r\n\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\terrorObj[field.id] = false;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//we need a data atribute containing the error node id on the first radio element ie field[0]\r\nfunction validationsRadios(field, myevent = null, errorObj) {\r\n\tif (myevent) {\r\n\t\t//checking for choice correction\r\n\t\tfield.forEach((element) => {\r\n\t\t\telement.addEventListener(myevent, function () {\r\n\t\t\t\tdocument\r\n\t\t\t\t\t.getElementById(field[0].dataset.error)\r\n\t\t\t\t\t.classList.remove(\"active\");\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//checking on submit\r\n\t} else {\r\n\t\tconst radios = field;\r\n\t\tconst selected = [...radios].some((radio) => radio.checked);\r\n\t\tconsole.log('running without event', selected)\r\n\t\tif (!selected) {\r\n\t\t\tdocument.getElementById(field[0].dataset.error).classList.add(\"active\");\r\n\t\t}\r\n\t}\r\n}\r\nexport function validationsRadiosParentEvent(field, myevent = null, errorObj, eventCallback) {\r\n\tif (myevent) {\r\n\t\t//checking for choice correction\r\n\t\tfield.forEach((element) => {\r\n\t\t\tconst parent = element.parentNode;\r\n\t\t\tconst label = parent.querySelector('label');\r\n\t\t\tlabel.addEventListener('click', e => e.preventDefault())\r\n\t\t\tparent.addEventListener(myevent, function () {\r\n\t\t\t\tconst radios = field;\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tconst selected = [...radios].some((radio) => radio.checked);\r\n\t\t\t\t\tif (!selected) {\r\n\t\t\t\t\t\terrorObj[element.name] = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terrorObj[element.name] = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventCallback && eventCallback();\r\n\t\t\t\t}, 100)\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t//checking on submit\r\n\t} else {\r\n\t\tfield.forEach((element) => {\r\n\t\t\tconst radios = field;\r\n\t\t\tconst selected = [...radios].some((radio) => radio.checked);\r\n\t\t\tif (!selected) {\r\n\t\t\t\terrorObj[element.name] = false;\r\n\t\t\t} else {\r\n\t\t\t\terrorObj[element.name] = true;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n// find parent node\r\n\r\nfunction findElementByClassOrTag(elem, className, tagName) {\r\n\tlet currentNode = elem;\r\n\r\n\twhile (currentNode && currentNode !== document.body) {\r\n\t\tif (currentNode.classList.contains(className) || currentNode.tagName === tagName.toUpperCase()) {\r\n\t\t\treturn currentNode;\r\n\t\t}\r\n\r\n\t\tcurrentNode = currentNode.parentNode;\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction validationsRadioGroup(field, myevent = null, errorObj, eventCallback) {\r\n\tconst fieldContainer = findElementByClassOrTag(field[0], null, 'fieldset');\r\n\tconst emptyfield = fieldContainer.querySelector(\".emptyField\");\r\n\tif (myevent) {\r\n\t\t//checking for choice correction\r\n\t\tfield.forEach((element) => {\r\n\t\t\telement.addEventListener(myevent, function () {\r\n\t\t\t\terrorObj[element.name] = true;\r\n\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\teventCallback()\r\n\t\t\t});\r\n\t\t});\r\n\t\t//checking on submit\r\n\t} else {\r\n\t\tconst selected = [...field].some((radio) => radio.checked);\r\n\t\tif (!selected) {\r\n\t\t\terrorObj[field[0].name] = false;\r\n\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t} else {\r\n\t\t\terrorObj[field[0].name] = true;\r\n\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t}\r\n\t}\r\n}\r\nfunction validationsCheckGroup(field, myevent = null, errorObj, eventCallback) {\r\n\t// cosole.log(\"\")\r\n\tconst fieldContainer = findElementByClassOrTag(field[0], null, 'fieldset');\r\n\tconst emptyfield = fieldContainer.querySelector(\".emptyField\");\r\n\tif (myevent) {\r\n\t\t//checking for choice correction\r\n\t\tfield.forEach((element) => {\r\n\t\t\telement.parentNode.addEventListener(myevent, function () {\r\n\t\t\t\terrorObj[element.name] = true;\r\n\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\teventCallback()\r\n\t\t\t});\r\n\t\t});\r\n\t\t//checking on submit\r\n\t} else {\r\n\t\tconst selected = [...field].some((radio) => radio.checked);\r\n\t\tif (!selected) {\r\n\t\t\terrorObj[field[0].name] = false;\r\n\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t} else {\r\n\t\t\terrorObj[field[0].name] = true;\r\n\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction validationsSelects(field, myevent = null, errorObj) {\r\n\tconst fieldContainer = field.parentNode;\r\n\tconst emptyfield = fieldContainer.querySelector(\".emptyField\");\r\n\tif (myevent) {\r\n\t\tfield.addEventListener(myevent, function () {\r\n\t\t\tif (field.selectedIndex == 0) {\r\n\t\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\t\terrorObj[field.id] = false;\r\n\t\t\t} else {\r\n\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\t\terrorObj[field.id] = true;\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tif (field.selectedIndex == 0) {\r\n\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\terrorObj[field.id] = false;\r\n\t\t} else {\r\n\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\terrorObj[field.id] = true;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction validateDestinationOnSubmit(errorObj) {\r\n\tvar valid = false;\r\n\tconst errorElement = document.getElementById(\"destinationErrorMessage\");\r\n\tvar errorMultiElement = document.getElementById(\r\n\t\t\"destinationMultiErrorMessage\"\r\n\t);\r\n\tvar selectedCount = 0;\r\n\tconst field = document.querySelectorAll(\".js-validateDestinationOnChange\");\r\n\tconst unknownCheck = document.getElementById(\"destinationUnknown\");\r\n\terrorObj[\"destination\"] = false;\r\n\tif (\r\n\t\tdocument.getElementById(\"country\").selectedIndex != 0 ||\r\n\t\tdocument.getElementById(\"placeInGreece\").selectedIndex != 0 ||\r\n\t\tdocument.getElementById(\"destinationUnknown\").checked\r\n\t) {\r\n\t\tvar valid = true;\r\n\t\terrorObj[\"destination\"] = true;\r\n\t}\r\n\r\n\tselectedCount = document.querySelectorAll(\".dstSelected\").length;\r\n\r\n\tif (selectedCount == 0) {\r\n\t\terrorMultiElement.classList.remove(\"active\");\r\n\t\terrorObj[\"destination\"] = true;\r\n\t}\r\n\tif (selectedCount == 1) {\r\n\t\terrorMultiElement.classList.remove(\"active\");\r\n\t\terrorObj[\"destination\"] = true;\r\n\t}\r\n\tif (selectedCount > 1) {\r\n\t\terrorMultiElement.classList.add(\"active\");\r\n\t\terrorObj[\"destination\"] = false;\r\n\t}\r\n\r\n\tif (valid == false) {\r\n\t\terrorElement.classList.add(\"active\");\r\n\t} else {\r\n\t\terrorElement.classList.remove(\"active\");\r\n\t}\r\n}\r\n\r\nfunction validateDestination(errorObj) {\r\n\tconst errorElement = document.getElementById(\"destinationErrorMessage\");\r\n\tconst field = document.querySelectorAll(\".js-validateDestinationOnChange\");\r\n\tconst unknownCheck = document.getElementById(\"destinationUnknown\");\r\n\terrorObj[\"destination\"] = false;\r\n\r\n\tfield.forEach((element) => {\r\n\t\telement.addEventListener(\"change\", function () {\r\n\t\t\tif (this.selectedIndex != 0 && this.classList.contains(\"select-plain\")) {\r\n\t\t\t\tthis.classList.add(\"dstSelected\");\r\n\t\t\t\terrorElement.classList.remove(\"active\");\r\n\t\t\t\terrorObj[\"destination\"] = true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.classList.remove(\"dstSelected\");\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\tunknownCheck.addEventListener(\"change\", function () {\r\n\t\tif (this.checked) {\r\n\t\t\tthis.classList.add(\"dstSelected\");\r\n\t\t\terrorElement.classList.remove(\"active\");\r\n\t\t\terrorObj[\"destination\"] = true;\r\n\t\t} else {\r\n\t\t\tthis.classList.remove(\"dstSelected\");\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction validateTripDatesOnSubmit(errorObj) {\r\n\tvar valid = false;\r\n\tconst errorElement = document.getElementById(\"datesErrorMessage\");\r\n\tvar errorMultiElement = document.getElementById(\"datesMultiErrorMessage\");\r\n\tvar selectedCount = 0;\r\n\r\n\terrorObj[\"tripDates\"] = false;\r\n\tif (\r\n\t\tdocument.getElementById(\"season\").selectedIndex != 0 ||\r\n\t\tdocument.getElementById(\"tripDates\").value != \"\" ||\r\n\t\tdocument.getElementById(\"datesUnknown\").checked\r\n\t) {\r\n\t\tvar valid = true;\r\n\t\terrorObj[\"tripDates\"] = true;\r\n\t}\r\n\r\n\tselectedCount = document.querySelectorAll(\".datesSelected\").length;\r\n\tconsole.log(\"gggggg\", valid);\r\n\r\n\tif (selectedCount == 0) {\r\n\t\terrorMultiElement.classList.remove(\"active\");\r\n\t\terrorObj[\"tripDates\"] = true;\r\n\t}\r\n\tif (selectedCount == 1) {\r\n\t\terrorMultiElement.classList.remove(\"active\");\r\n\t\terrorObj[\"tripDates\"] = true;\r\n\t}\r\n\tif (selectedCount > 1) {\r\n\t\terrorMultiElement.classList.add(\"active\");\r\n\t\terrorObj[\"tripDates\"] = false;\r\n\t}\r\n\r\n\tif (valid == false) {\r\n\t\terrorElement.classList.add(\"active\");\r\n\t} else {\r\n\t\terrorElement.classList.remove(\"active\");\r\n\t}\r\n}\r\n\r\nfunction validateTripDates(errorObj) {\r\n\tconst errorElement = document.getElementById(\"datesErrorMessage\");\r\n\tconst field = document.querySelectorAll(\".js-validateDatesOnChange\");\r\n\tconst unknownDatesCheck = document.getElementById(\"datesUnknown\");\r\n\tconst datesRange = document.getElementById(\"tripDates\");\r\n\terrorObj[\"tripDates\"] = false;\r\n\r\n\tfield.forEach((element) => {\r\n\t\telement.addEventListener(\"change\", function () {\r\n\t\t\tif (this.selectedIndex != 0 && this.classList.contains(\"select-plain\")) {\r\n\t\t\t\tthis.classList.add(\"datesSelected\");\r\n\t\t\t\terrorElement.classList.remove(\"active\");\r\n\t\t\t\terrorObj[\"tripDates\"] = true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.classList.remove(\"datesSelected\");\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\tunknownDatesCheck.addEventListener(\"change\", function () {\r\n\t\tif (this.checked) {\r\n\t\t\tthis.classList.add(\"datesSelected\");\r\n\t\t\terrorElement.classList.remove(\"active\");\r\n\t\t\terrorObj[\"tripDates\"] = true;\r\n\t\t} else {\r\n\t\t\tthis.classList.remove(\"datesSelected\");\r\n\t\t}\r\n\t});\r\n\r\n\tdatesRange.addEventListener(\"input\", function () {\r\n\t\tif (datesRange.value == \"\") datesRange.classList.remove(\"datesSelected\");\r\n\t});\r\n}\r\n\r\nfunction validationField(\r\n\tfield,\r\n\tmyevent = null,\r\n\tmyFunc = null,\r\n\terrorObj,\r\n\teventCallback\r\n) {\r\n\tconst fieldContainer = field.parentNode;\r\n\tconst wrongfield = fieldContainer.querySelector(\".wrongField\");\r\n\tconst emptyfield = fieldContainer.querySelector(\".emptyField\");\r\n\tif (myevent) {\r\n\t\tfield.addEventListener(myevent, () => {\r\n\t\t\tif (field.value == \"\") {\r\n\t\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\t\twrongfield && wrongfield.classList.remove(\"active\");\r\n\t\t\t\terrorObj[field.id] = false;\r\n\t\t\t} else {\r\n\t\t\t\tif (myFunc) {\r\n\t\t\t\t\tif (myFunc(field)) {\r\n\t\t\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\t\t\twrongfield && wrongfield.classList.remove(\"active\");\r\n\t\t\t\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\t\t\t\terrorObj[field.id] = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\t\t\twrongfield && wrongfield.classList.add(\"active\");\r\n\t\t\t\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\t\t\t\terrorObj[field.id] = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\t\terrorObj[field.id] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\teventCallback && eventCallback();\r\n\t\t});\r\n\t} else {\r\n\t\tif (field.value == \"\") {\r\n\t\t\temptyfield && emptyfield.classList.add(\"active\");\r\n\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\twrongfield && wrongfield.classList.remove(\"active\");\r\n\t\t\terrorObj[field.id] = false;\r\n\t\t} else {\r\n\t\t\tconsole.log(myFunc);\r\n\t\t\tif (myFunc) {\r\n\t\t\t\tif (myFunc(field)) {\r\n\t\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\t\twrongfield && wrongfield.classList.remove(\"active\");\r\n\t\t\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\t\t\terrorObj[field.id] = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\t\twrongfield && wrongfield.classList.add(\"active\");\r\n\t\t\t\t\tfieldContainer.classList.add(\"errored\");\r\n\t\t\t\t\terrorObj[field.id] = false;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfieldContainer.classList.remove(\"errored\");\r\n\t\t\t\temptyfield && emptyfield.classList.remove(\"active\");\r\n\t\t\t\terrorObj[field.id] = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// VALIDATE MAIL FUNCTION\r\nfunction validateMail(elem) {\r\n\tif (\r\n\t\telem.value.match(/^([\\w-.]+@([\\w-]+\\.)+[\\w-]{2,6})?$/) == null ||\r\n\t\telem.length < 2\r\n\t) {\r\n\t\t// Have errors\r\n\t\treturn false;\r\n\t} else {\r\n\t\t// Don't have errors\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// VALIDATE IF TEXT FIELD, ALLOWS ONLY LETTERS ,UP TO 2 SPACES AND DOTS\r\nfunction validateText(elem) {\r\n\tif (\r\n\t\telem.value.match(/^[α-ωΑ-Ωa-zA-ZάΆήΉίΊέΈόΌύΎώΏ.\\s]*$/) == null ||\r\n\t\t(elem.value.match(/\\s/g) != null && elem.value.match(/\\s/g).length >= 3) ||\r\n\t\t(elem.value.match(/\\./g) != null && elem.value.match(/\\./g).length >= 2) ||\r\n\t\telem.value.length < 2\r\n\t) {\r\n\t\t// Have errors\r\n\t\treturn false;\r\n\t} else {\r\n\t\t// Don't have errors\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// VALIDATE FIELD FOR PHONE NUMBER, ALLOWS ONLY NUMBERS MINIMUM LENGTH 10 DIGITS\r\nfunction validatePhone(elem) {\r\n\tif (elem.value.match(/^[0-9 +()]*$/) == null || elem.value.length < 10) {\r\n\t\t// Have errors\r\n\t\treturn false;\r\n\t} else {\r\n\t\t// Dont have errors\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nfunction validateCheckbox(elem) {\r\n\t// if (jQuery(elem).is(':checked')) {\r\n\tif (elem.checked) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction validateRadio(elem) {\r\n\tconsole.log(elem);\r\n\tif (elem.checked) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n// Age validator\r\n// You need both getAge and checkAge\r\nfunction getAge(birthDateString) {\r\n\tvar today = new Date();\r\n\tvar birthDate = new Date(birthDateString);\r\n\tvar age = today.getFullYear() - birthDate.getFullYear();\r\n\tvar m = today.getMonth() - birthDate.getMonth();\r\n\tif (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\r\n\t\tage--;\r\n\t}\r\n\treturn age;\r\n}\r\n\r\nfunction checkAge(elem) {\r\n\tif (getAge(elem.value) >= 18) {\r\n\t\treturn true;\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nexport {\r\n\tvalidationsChecks,\r\n\tvalidationsRadios,\r\n\tvalidationsRadioGroup,\r\n\tvalidationsSelects,\r\n\tvalidationField,\r\n\tvalidateMail,\r\n\tvalidatePhone,\r\n\tvalidateCheckbox,\r\n\tvalidateText,\r\n\tcheckAge,\r\n\tgetAge,\r\n\tvalidateDestination,\r\n\tvalidateDestinationOnSubmit,\r\n\tvalidateTripDatesOnSubmit,\r\n\tvalidateTripDates,\r\n\tvalidationsCheckGroup\r\n};\r\n","import {\r\n\tvalidationsChecks,\r\n\tvalidationsSelects,\r\n\tvalidationField,\r\n\tvalidateMail,\r\n\tvalidatePhone,\r\n\tvalidateCheckbox,\r\n\tvalidateText,\r\n\tcheckAge,\r\n\tgetAge,\r\n\tvalidationsCheckGroup\r\n} from \"./validation_functions/validationsUpdated.js\";\r\n\r\nexport default function powerUpFormSimple() {\r\n\tconst enable = false;\r\n\tlet fErrors = {};\r\n\tconst mForm = document.querySelector(\"#powerUpFormSimple\");\r\n\tconst NodePageId = document.querySelector(\"#NodePageId\");\r\n\tconst UmbracoKey = document.querySelector(\"#UmbracoKey\");\r\n\tconst CrmLeadCodeForCustomer = document.querySelector(\"#CrmLeadCodeForCustomer\");\r\n\tconst CrmLeadCodeForNonCustomer = document.querySelector(\"#CrmLeadCodeForNonCustomer\");\r\n\tconst PowerUpName = document.querySelector(\"#PowerUpName\");\r\n\tconst submitButton = mForm.querySelector(\"#formSubmit\");\r\n\tconst resetButton = mForm.querySelector(\"input[type='reset']\");\r\n\tconst fname = mForm.querySelector(\"#Name\");\r\n\tconst lname = mForm.querySelector(\"#LastName\");\r\n\tconst email = mForm.querySelector(\"#Email\");\r\n\tconst fphone = mForm.querySelector(\"#MobilePhone\");\r\n\tconst fTerms = mForm.querySelector(\"#AcceptTerms\");\r\n\tconst fNewsletter = mForm.querySelector(\"#Newsletter\");\r\n\tconst IsCustomer = mForm.querySelectorAll(\"input[name='MatterFormCustomer']\");\r\n\tconst EventName = mForm.querySelectorAll(\"input[name='EventName']\");\r\n\tlet EventNames;\r\n\tlet EventId;\r\n\r\n\t//let fieldsComparison = [fname.id, lname.id, email.id, fphone.id, fTerms.id];\r\n\tlet fieldsComparison = EventName.length > 0 ? [fname.id, lname.id, email.id, fphone.id, fTerms.id, EventName[0].name] : [fname.id, lname.id, email.id, fphone.id, fTerms.id];\r\n\r\n\tconst eventIdsArray = [];\r\n\tconst eventNamesArray = [];\r\n\tEventName.length > 0 && EventName.forEach(elem => {\r\n\t\telem.addEventListener('click', e => e.preventDefault())\r\n\t\tconst parent = elem.parentNode;\r\n\t\tconst label = parent.querySelector('label');\r\n\t\tlabel.addEventListener('click', e => e.preventDefault())\r\n\t\tconst eventId = parent.querySelector(\"input[type='hidden']\")\r\n\t\telem.checked && toggleArrayValue(eventIdsArray, eventId.value)\r\n\t\tEventId = eventIdsArray.join(\",\");\r\n\t\telem.checked && toggleArrayValue(eventNamesArray, elem.value)\r\n\t\tEventNames = eventNamesArray.join(\",\");\r\n\t\tparent.addEventListener('click', (e) => {\r\n\t\t\t!elem.checked ? elem.checked = true : elem.checked = false;\r\n\t\t\t// elem.click()\r\n\t\t\ttoggleArrayValue(eventIdsArray, eventId.value)\r\n\t\t\tEventId = eventIdsArray.join(\",\");\r\n\t\t\ttoggleArrayValue(eventNamesArray, elem.value)\r\n\t\t\tEventNames = eventNamesArray.join(\",\");\r\n\t\t})\r\n\t})\r\n\r\n\r\n\tlet formModal = document.querySelector(\"#noMatterFormd\");\r\n\tformModal && formModal.querySelector(\".close-btn\").addEventListener('click', () => formModal.close())\r\n\r\n\tfunction checkCorrects() {\r\n\t\tif (Object.keys(fErrors).length == fieldsComparison.length) {\r\n\t\t\tlet hasErrors = false;\r\n\t\t\tfor (const property in fErrors) {\r\n\t\t\t\tconsole.log(`${property}: ${fErrors[property]}`);\r\n\t\t\t\tfErrors[property] == false ? (hasErrors = true) : null;\r\n\t\t\t}\r\n\t\t\thasErrors\r\n\t\t\t\t? submitButton.classList.add(\"button--disabled\")\r\n\t\t\t\t: submitButton.classList.remove(\"button--disabled\");\r\n\t\t} else {\r\n\t\t\tsubmitButton.classList.add(\"button--disabled\");\r\n\t\t}\r\n\t\tif (Object.keys(fErrors).length > 1) {\r\n\t\t\tresetButton.classList.remove(\"button--disabled\")\r\n\t\t} else {\r\n\t\t\tresetButton.classList.add(\"button--disabled\")\r\n\t\t}\r\n\t}\r\n\r\n\tresetButton.addEventListener(\"click\", () => {\r\n\t\tsetTimeout(() => {\r\n\t\t\tresetButton.classList.add(\"button--disabled\")\r\n\t\t\tdelete fErrors?.[fname.name];\r\n\t\t\tdelete fErrors?.[lname.name];\r\n\t\t\tdelete fErrors?.[fphone.name];\r\n\t\t\tdelete fErrors?.[email.name];\r\n\t\t\tdelete fErrors?.[fTerms.name];\r\n\t\t\tdelete fErrors?.[fNewsletter.name];\r\n\t\t\tsubmitButton.classList.add(\"button--disabled\");\r\n\t\t}, 100)\r\n\t})\r\n\r\n\tvalidationField(fname, \"blur\", null, fErrors, checkCorrects);\r\n\tvalidationField(lname, \"blur\", null, fErrors, checkCorrects);\r\n\tvalidationField(email, \"blur\", validateMail, fErrors, checkCorrects);\r\n\tvalidationField(fphone, \"blur\", null, fErrors, checkCorrects);\r\n\tvalidationsChecks(fTerms, \"change\", fErrors, checkCorrects);\r\n\t// validationsChecks(fNewsletter, \"change\", fErrors, checkCorrects);\r\n\tEventName.length > 0 && validationsCheckGroup(EventName, \"click\", fErrors, checkCorrects);\r\n\r\n\tsubmitButton.addEventListener(\"click\", async function (e) {\r\n\t\te.preventDefault();\r\n\t\tlet hasErrors = false;\r\n\t\tvalidationField(fname, null, null, fErrors);\r\n\t\tvalidationField(lname, null, null, fErrors);\r\n\t\tvalidationField(email, null, validateMail, fErrors);\r\n\t\tvalidationField(fphone, null, null, fErrors);\r\n\t\tvalidationsChecks(fTerms, null, fErrors);\r\n\t\tEventName.length > 0 && validationsCheckGroup(EventName, null, fErrors, checkCorrects);\r\n\t\t// validationsChecks(fNewsletter, null, fErrors);\r\n\t\t// We check the fErros object properties for if any of them is false. If yes then we change hasErrors to true.\r\n\t\tfor (const property in fErrors) {\r\n\t\t\tconsole.log(`${property}: ${fErrors[property]}`);\r\n\t\t\tfErrors[property] == false ? (hasErrors = true) : null;\r\n\t\t}\r\n\r\n\t\thasErrors ? null : await SubmitDeclareInterestForm(mForm.action, formModal);\r\n\t});\r\n\tasync function SubmitDeclareInterestForm(url, formModal) {\r\n\t\tvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n\t\tvar locale = document.head.querySelector('meta[name=\"locale\"]');\r\n\t\tdocument.body.classList.add(\"loading\");\r\n\t\tlet data = {\r\n\t\t\tNodePageId: NodePageId.value,\r\n\t\t\tUmbracoKey: UmbracoKey.value,\r\n\t\t\tPowerUpName: PowerUpName.value,\r\n\t\t\tName: fname.value,\r\n\t\t\tLastName: lname.value,\r\n\t\t\tEmail: email.value,\r\n\t\t\tMobilePhone: fphone.value,\r\n\t\t\tAcceptTerms: fTerms.value,\r\n\t\t\tNewsletter: fNewsletter.checked,\r\n\t\t\tCrmLeadCode: getSelectedValue(IsCustomer) == \"true\" ? CrmLeadCodeForCustomer.value : CrmLeadCodeForNonCustomer.value,\r\n\t\t\tEventName: EventNames,\r\n\t\t\tEventId: EventId, \r\n\t\t\tPageUrl: window.location.href,\r\n\t\t\tGdprconsent: mForm.querySelector(\"[data-key='Gdprconsent']\") ? mForm.querySelector(\"[data-key='Gdprconsent']\")?.checked ? \"2\" : \"1\" : \"\",\r\n\t\t\tCommunicationconsent: mForm.querySelector(\"[data-key='Communicationconsent']\") ? mForm.querySelector(\"[data-key='Communicationconsent']\")?.checked ? \"2\" : \"1\" : \"\",\r\n\t\t};\r\n\r\n\t\tvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n\t\tvar locale = document.head.querySelector('meta[name=\"locale\"]');\r\n\t\twindow.InitiateLoader(mForm);\r\n\t\twindow.jQuery.ajax({\r\n\t\t\tbeforeSend: function (xhr) {\r\n\t\t\t\tif (token) {\r\n\t\t\t\t\txhr.setRequestHeader(\"__RequestVerificationToken\", token.content);\r\n\t\t\t\t}\r\n\t\t\t\tif (locale) {\r\n\t\t\t\t\txhr.setRequestHeader(\"__CurrentLocale\", locale.content);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\turl: url,\r\n\t\t\tmethod: \"post\",\r\n\t\t\tdata: data\r\n\t\t}).done((resp) => {\r\n\r\n\t\t\twindow.RemoveLoader(mForm);\r\n\t\t\tdocument.body.classList.remove(\"loading\");\r\n\t\t\tconsole.log('resp', resp)\r\n\t\t\tif (resp.success) {\r\n\r\n\t\t\t\tfname.value = \"\";\r\n\t\t\t\tlname.value = \"\";\r\n\t\t\t\temail.value = \"\";\r\n\t\t\t\tfphone.value = \"\";\r\n\t\t\t\tfTerms.checked = false;\r\n\t\t\t\tfNewsletter.checked = false;\r\n\t\t\t\tdata = {\r\n\t\t\t\t\tNodePageId: NodePageId.value,\r\n\t\t\t\t\tUmbracoKey: UmbracoKey.value,\r\n\t\t\t\t\tPowerUpName: PowerUpName.value,\r\n\t\t\t\t\tName: \"\",\r\n\t\t\t\t\tLastName: \"\",\r\n\t\t\t\t\tEmail: \"\",\r\n\t\t\t\t\tMobilePhone: \"\",\r\n\t\t\t\t\tAcceptTerms: false,\r\n\t\t\t\t\tEventName: \"\",\r\n\t\t\t\t\tEventId: \"\",\r\n\t\t\t\t};\r\n\r\n\t\t\t\tformModal && formModal.showModal();\r\n\t\t\t\tformModal.setAttribute('aria-hidden', 'false');\r\n\t\t\t\tmForm.classList.add('hidden')\r\n\t\t\t\tformModal.querySelector('.success__message').classList.remove('hidden')\r\n\r\n\t\t\t\tdocument.querySelector(\".success_result .textMessage\").innerHTML =\r\n\t\t\t\t\tresp.Message;\r\n\t\t\t\tdocument.querySelector(\".success_result .textThankYouMessage\").innerHTML =\r\n\t\t\t\t\tresp.ThankyouMessage;\r\n\r\n\t\t\t\tdocument.querySelector(\".success_result\").classList.remove(\"hidden\");\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tdocument.body.classList.remove(\"loading\");\r\n\t\t\t\tdocument.querySelector('#error_result .textMessage').innerHTML = resp.Message;\r\n\t\t\t\tdocument.querySelector('#error_result').classList.remove('hidden')\r\n\t\t\t\tmForm.classList.add('hidden')\r\n\t\t\t}\r\n\r\n\t\t}).fail((er) => {\r\n\t\t\tdocument.body.classList.remove(\"loading\");\r\n\t\t\tdocument.querySelector('#error_result .textMessage').innerHTML = resp.Message;\r\n\t\t\tdocument.querySelector('#error_result').classList.remove('hidden')\r\n\t\t\tmForm.classList.add('hidden')\r\n\t\t});\r\n\t}\r\n}\r\n\r\n\r\nfunction getSelectedValue(radioButtons) {\r\n\tfor (const radioButton of radioButtons) {\r\n\t\tif (radioButton.checked) {\r\n\t\t\treturn radioButton.value;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction toggleArrayValue(arr, val) {\r\n\tconst index = arr.indexOf(val);\r\n\tif (index === -1) {\r\n\t\tarr.push(val); // add value to array if it doesn't exist\r\n\t} else {\r\n\t\tarr.splice(index, 1); // remove value from array if it exists\r\n\t}\r\n}\r\n","import {\r\n\tvalidationsChecks,\r\n\tvalidationsSelects,\r\n\tvalidationField,\r\n\tvalidateMail,\r\n\tvalidatePhone,\r\n\tvalidateCheckbox,\r\n\tvalidateText,\r\n\tcheckAge,\r\n\tgetAge,\r\n\tvalidationsCheckGroup,\r\n\tvalidationsRadios,\r\n\tvalidationsRadiosParentEvent\r\n} from \"./validation_functions/validationsUpdated.js\";\r\n\r\nexport default function offerPageForm() {\r\n\tconst enable = false;\r\n\tlet fErrors = {};\r\n\tconst mForm = document.querySelector(\"#offerPageForm\");\r\n\tconst PageName = document.querySelector(\"#PageName\");\r\n\tconst CrmLeadCode = document.querySelector(\"#CrmLeadCode\");\r\n\tconst submitButton = mForm.querySelector(\"#formSubmit\");\r\n\tconst resetButton = mForm.querySelector(\"input[type='reset']\");\r\n\tconst fname = mForm.querySelector(\"#Name\");\r\n\tconst lname = mForm.querySelector(\"#LastName\");\r\n\tconst email = mForm.querySelector(\"#Email\");\r\n\tconst fphone = mForm.querySelector(\"#MobilePhone\");\r\n\tconst fTerms = mForm.querySelector(\"#AcceptTerms\");\r\n\tconst fNewsletter = mForm.querySelector(\"#Newsletter\");\r\n\tconst CommodityInput = mForm.querySelectorAll(\"input[name='Commodity']\");\r\n\tlet EventTitle = \"\";\r\n\r\n\tlet fieldsComparison = CommodityInput.length > 0 ? [fname.id, lname.id, email.id, fphone.id, fTerms.id, CommodityInput[0].name] : [fname.id, lname.id, email.id, fphone.id, fTerms.id];\r\n\tfunction getSelectedRadioValue(name) {\r\n\t\tconst radios = document.getElementsByName(name);\r\n\t\tfor (let radio of radios) {\r\n\t\t\tif (radio.checked) {\r\n\t\t\t\treturn radio.value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tCommodityInput.length > 0 && CommodityInput.forEach(elem => {\r\n\t\telem.addEventListener('click', e => e.preventDefault())\r\n\t\tconst parent = elem.parentNode;\r\n\t\tconst label = parent.querySelector('label');\r\n\t\tlabel.addEventListener('click', e => e.preventDefault())\r\n\t\tparent.addEventListener('click', (e) => {\r\n\t\t\t!elem.checked ? elem.checked = true : elem.checked = false;\r\n\t\t\tvar EventTitleElement = parent.querySelector(\"#EventTitle\")\r\n\t\t\tEventTitle = EventTitleElement != null ? EventTitleElement.value : EventTitle;\r\n\t\t})\r\n\r\n\t})\r\n\r\n\tfunction checkCorrects() {\r\n\t\tif (Object.keys(fErrors).length == fieldsComparison.length) {\r\n\t\t\tlet hasErrors = false;\r\n\t\t\tfor (const property in fErrors) {\r\n\t\t\t\tconsole.log(`${property}: ${fErrors[property]}`);\r\n\t\t\t\tfErrors[property] == false ? (hasErrors = true) : null;\r\n\t\t\t}\r\n\t\t\thasErrors\r\n\t\t\t\t? submitButton.classList.add(\"button--disabled\")\r\n\t\t\t\t: submitButton.classList.remove(\"button--disabled\");\r\n\t\t} else {\r\n\t\t\tsubmitButton.classList.add(\"button--disabled\");\r\n\t\t}\r\n\t\tif (Object.keys(fErrors).length > 1) {\r\n\t\t\tresetButton.classList.remove(\"button--disabled\")\r\n\t\t} else {\r\n\t\t\tresetButton.classList.add(\"button--disabled\")\r\n\t\t}\r\n\t\tconsole.log('fErrors', fErrors)\r\n\t}\r\n\r\n\tresetButton.addEventListener(\"click\", () => {\r\n\t\tsetTimeout(() => {\r\n\t\t\tresetButton.classList.add(\"button--disabled\")\r\n\t\t\tdelete fErrors?.[fname.name];\r\n\t\t\tdelete fErrors?.[lname.name];\r\n\t\t\tdelete fErrors?.[fphone.name];\r\n\t\t\tdelete fErrors?.[email.name];\r\n\t\t\tdelete fErrors?.[fTerms.name];\r\n\t\t\tdelete fErrors?.[fNewsletter.name];\r\n\t\t\tCommodityInput.length > 0 && delete fErrors?.[CommodityInput[0].name];\r\n\t\t\tsubmitButton.classList.add(\"button--disabled\");\r\n\t\t}, 100)\r\n\t})\r\n\r\n\tvalidationField(fname, \"blur\", null, fErrors, checkCorrects);\r\n\tvalidationField(lname, \"blur\", null, fErrors, checkCorrects);\r\n\tvalidationField(email, \"blur\", validateMail, fErrors, checkCorrects);\r\n\tvalidationField(fphone, \"blur\", null, fErrors, checkCorrects);\r\n\tvalidationsChecks(fTerms, \"change\", fErrors, checkCorrects);\r\n\tCommodityInput.length > 0 && validationsRadiosParentEvent(CommodityInput, \"click\", fErrors, checkCorrects)\r\n\r\n\tsubmitButton.addEventListener(\"click\", async function (e) {\r\n\t\te.preventDefault();\r\n\t\tlet hasErrors = false;\r\n\t\tvalidationField(fname, null, null, fErrors);\r\n\t\tvalidationField(lname, null, null, fErrors);\r\n\t\tvalidationField(email, null, validateMail, fErrors);\r\n\t\tvalidationField(fphone, null, null, fErrors);\r\n\t\tvalidationsChecks(fTerms, null, fErrors);\r\n\t\tCommodityInput.length > 0 && validationsRadiosParentEvent(CommodityInput, null, fErrors)\r\n\r\n\t\t// We check the fErros object properties for if any of them is false. If yes then we change hasErrors to true.\r\n\t\tfor (const property in fErrors) {\r\n\t\t\tconsole.log(`${property}: ${fErrors[property]}`);\r\n\t\t\tfErrors[property] == false ? (hasErrors = true) : null;\r\n\t\t}\r\n\r\n\t\thasErrors ? null : await SubmitDeclareInterestForm(mForm.action);\r\n\t});\r\n\tasync function SubmitDeclareInterestForm(url) {\r\n\r\n\t\tvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\r\n\t\tvar locale = document.head.querySelector('meta[name=\"locale\"]');\r\n\t\tdocument.body.classList.add(\"loading\");\r\n\r\n\t\tconst CommodityValue = getSelectedRadioValue('Commodity');\r\n\r\n\t\tlet data = {\r\n\t\t\tPageName: PageName.value,\r\n\t\t\tName: fname.value,\r\n\t\t\tLastName: lname.value,\r\n\t\t\tEmail: email.value,\r\n\t\t\tMobilePhone: fphone.value,\r\n\t\t\tAcceptTerms: fTerms.value,\r\n\t\t\tNewsletter: fNewsletter.checked,\r\n\t\t\tCrmLeadCode: CrmLeadCode.value,\r\n\t\t\tCommodity: CommodityValue,\r\n\t\t\tPageUrl: window.location.href,\r\n\t\t\tGdprconsent: mForm.querySelector(\"[data-key='Gdprconsent']\") ? mForm.querySelector(\"[data-key='Gdprconsent']\")?.checked ? \"2\" : \"1\" : \"\",\r\n\t\t\tCommunicationconsent: mForm.querySelector(\"[data-key='Communicationconsent']\") ? mForm.querySelector(\"[data-key='Communicationconsent']\")?.checked ? \"2\" : \"1\" : \"\",\r\n\t\t\tEventTitle: EventTitle\r\n\t\t};\r\n\t\tvar myHeaders = new Headers();\r\n\t\tmyHeaders.append(\"Content-Type\", \"application/json\");\r\n\t\tmyHeaders.append(\"__CurrentLocale\", locale.content);\r\n\t\ttoken && myHeaders.append(\"__RequestVerificationToken\", `${token.content}`);\r\n\r\n\t\ttry {\r\n\r\n\t\t\tconst response = await fetch(url, {\r\n\t\t\t\tmethod: \"POST\",\r\n\t\t\t\theaders: myHeaders,\r\n\t\t\t\tbody: JSON.stringify(data),\r\n\t\t\t});\r\n\r\n\t\t\tconst responseData = await response.json();\r\n\r\n\t\t\tif (!response.ok) {\r\n\t\t\t\tdocument.body.classList.remove(\"loading\");\r\n\t\t\t\tdocument.querySelector(\".error_result .textMessage\").innerHTML =\r\n\t\t\t\t\tresponseData.Message;\r\n\t\t\t\tdocument.querySelector(\".error_result\").classList.remove(\"hidden\");\r\n\t\t\t\tmForm.classList.add('hidden');\r\n\t\t\t\tthrow new Error(`HTTP error: ${response.status}`);\r\n\t\t\t}\r\n\r\n\t\t\tdocument.body.classList.remove(\"loading\");\r\n\t\t\tif (responseData.success) {\r\n\t\t\t\tfname.value = \"\";\r\n\t\t\t\tlname.value = \"\";\r\n\t\t\t\temail.value = \"\";\r\n\t\t\t\tfphone.value = \"\";\r\n\t\t\t\tfTerms.checked = false;\r\n\t\t\t\tfNewsletter.checked = false;\r\n\t\t\t\tdata = {\r\n\t\t\t\t\tPageName: PageName.value,\r\n\t\t\t\t\tName: \"\",\r\n\t\t\t\t\tLastName: \"\",\r\n\t\t\t\t\tEmail: \"\",\r\n\t\t\t\t\tMobilePhone: \"\",\r\n\t\t\t\t\tAcceptTerms: false,\r\n\t\t\t\t\tOfferTitle: \"\",\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (responseData.success) {\r\n\t\t\t\tdocument.querySelector(\".success_result .textMessage\").innerHTML =\r\n\t\t\t\t\tresponseData.Message;\r\n\t\t\t\tdocument.querySelector(\".success_result .textThankYouMessage\").innerHTML =\r\n\t\t\t\t\tresponseData.ThankyouMessage;\r\n\t\t\t\tdocument.querySelector(\".success_result\").classList.remove(\"hidden\");\r\n\t\t\t\tmForm.classList.add('hidden');\r\n\r\n\t\t\t\tvar targetDiv = document.getElementById('participation');\r\n\t\t\t\tif (targetDiv) {\r\n\t\t\t\t\ttargetDiv.scrollIntoView({ behavior: 'smooth' });\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t} else {\r\n\t\t\t\tdocument.body.classList.remove(\"loading\");\r\n\t\t\t\tdocument.querySelector(\".error_result .textMessage\").innerHTML =\r\n\t\t\t\t\tresponseData.Message;\r\n\t\t\t\tdocument.querySelector(\".error_result\").classList.remove(\"hidden\");\r\n\t\t\t\tmForm.classList.add('hidden');\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\r\n\t\t\tdocument.body.classList.remove(\"loading\");\r\n\r\n\t\t\tdocument.querySelector(\".error_result .textMessage\").innerHTML =\r\n\t\t\t\t`There was an error sending the form: ${error}`;\r\n\t\t\tdocument.querySelector(\".error_result\").classList.remove(\"hidden\");\r\n\t\t\tmForm.classList.add('hidden');\r\n\t\t\t// console.error(`There was an error sending the form: ${error}`);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\nfunction getSelectedValue(radioButtons) {\r\n\tfor (const radioButton of radioButtons) {\r\n\t\tif (radioButton.checked) {\r\n\t\t\treturn radioButton.value;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction toggleArrayValue(arr, val) {\r\n\tconst index = arr.indexOf(val);\r\n\tif (index === -1) {\r\n\t\tarr.push(val); // add value to array if it doesn't exist\r\n\t} else {\r\n\t\tarr.splice(index, 1); // remove value from array if it exists\r\n\t}\r\n}\r\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.3\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || 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 if (!ctx && !canvas) {\n return;\n }\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */ case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */ case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */ function _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */ function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */ function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */ const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */ function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */ function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */ function _createResolver(scopes, prefixes = [\n ''\n], rootScopes, fallback, getTarget = ()=>scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */ function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */ function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.4.3\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n 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, meta) {\n const { iScale , vScale } = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\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 && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).some((key)=>isFunction(value[key]));\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.4.3\";\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 xSet = new Set();\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n const xAverage = [\n ...xSet\n ].reduce((a, b)=>a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter((i)=>this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.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 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b)=>a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","/*!\n * chartjs-plugin-datalabels v2.2.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2022 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n if (typeof window !== 'undefined') {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n }\n\n // devicePixelRatio is undefined on IE10\n // https://stackoverflow.com/a/20204180/8837887\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n var screen = window.screen;\n if (screen) {\n return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n }\n }\n\n return 1;\n}());\n\nvar utils = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(inputs) {\n var lines = [];\n var input;\n\n inputs = [].concat(inputs);\n while (inputs.length) {\n input = inputs.pop();\n if (typeof input === 'string') {\n lines.unshift.apply(lines, input.split('\\n'));\n } else if (Array.isArray(input)) {\n inputs.push.apply(inputs, input);\n } else if (!isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(ctx, lines, font) {\n var items = [].concat(lines);\n var ilen = items.length;\n var prev = ctx.font;\n var width = 0;\n var i;\n\n ctx.font = font.string;\n\n for (i = 0; i < ilen; ++i) {\n width = Math.max(ctx.measureText(items[i]).width, width);\n }\n\n ctx.font = prev;\n\n return {\n height: ilen * font.lineHeight,\n width: width\n };\n },\n\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(a0, a1) {\n var prev = a0.slice();\n var updates = [];\n var i, j, ilen, v;\n\n for (i = 0, ilen = a1.length; i < ilen; ++i) {\n v = a1[i];\n j = prev.indexOf(v);\n\n if (j === -1) {\n updates.push([v, 1]);\n } else {\n prev.splice(j, 1);\n }\n }\n\n for (i = 0, ilen = prev.length; i < ilen; ++i) {\n updates.push([prev[i], -1]);\n }\n\n return updates;\n },\n\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(v) {\n return Math.round(v * devicePixelRatio) / devicePixelRatio;\n }\n};\n\nfunction orient(point, origin) {\n var x0 = origin.x;\n var y0 = origin.y;\n\n if (x0 === null) {\n return {x: 0, y: -1};\n }\n if (y0 === null) {\n return {x: 1, y: 0};\n }\n\n var dx = point.x - x0;\n var dy = point.y - y0;\n var ln = Math.sqrt(dx * dx + dy * dy);\n\n return {\n x: ln ? dx / ln : 0,\n y: ln ? dy / ln : -1\n };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n switch (align) {\n case 'center':\n vx = vy = 0;\n break;\n case 'bottom':\n vx = 0;\n vy = 1;\n break;\n case 'right':\n vx = 1;\n vy = 0;\n break;\n case 'left':\n vx = -1;\n vy = 0;\n break;\n case 'top':\n vx = 0;\n vy = -1;\n break;\n case 'start':\n vx = -vx;\n vy = -vy;\n break;\n case 'end':\n // keep natural orientation\n break;\n default:\n // clockwise rotation (in degree)\n align *= (Math.PI / 180);\n vx = Math.cos(align);\n vy = Math.sin(align);\n break;\n }\n\n return {\n x: x,\n y: y,\n vx: vx,\n vy: vy\n };\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n var res = R_INSIDE;\n\n if (x < rect.left) {\n res |= R_LEFT;\n } else if (x > rect.right) {\n res |= R_RIGHT;\n }\n if (y < rect.top) {\n res |= R_TOP;\n } else if (y > rect.bottom) {\n res |= R_BOTTOM;\n }\n\n return res;\n}\n\nfunction clipped(segment, area) {\n var x0 = segment.x0;\n var y0 = segment.y0;\n var x1 = segment.x1;\n var y1 = segment.y1;\n var r0 = region(x0, y0, area);\n var r1 = region(x1, y1, area);\n var r, x, y;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(r0 | r1) || (r0 & r1)) {\n // both points inside or on the same side: no clipping\n break;\n }\n\n // at least one point is outside\n r = r0 || r1;\n\n if (r & R_TOP) {\n x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n y = area.top;\n } else if (r & R_BOTTOM) {\n x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n y = area.bottom;\n } else if (r & R_RIGHT) {\n y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n x = area.right;\n } else if (r & R_LEFT) {\n y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n x = area.left;\n }\n\n if (r === r0) {\n x0 = x;\n y0 = y;\n r0 = region(x0, y0, area);\n } else {\n x1 = x;\n y1 = y;\n r1 = region(x1, y1, area);\n }\n }\n\n return {\n x0: x0,\n x1: x1,\n y0: y0,\n y1: y1\n };\n}\n\nfunction compute$1(range, config) {\n var anchor = config.anchor;\n var segment = range;\n var x, y;\n\n if (config.clamp) {\n segment = clipped(segment, config.area);\n }\n\n if (anchor === 'start') {\n x = segment.x0;\n y = segment.y0;\n } else if (anchor === 'end') {\n x = segment.x1;\n y = segment.y1;\n } else {\n x = (segment.x0 + segment.x1) / 2;\n y = (segment.y0 + segment.y1) / 2;\n }\n\n return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n arc: function(el, config) {\n var angle = (el.startAngle + el.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = el.innerRadius;\n var r1 = el.outerRadius;\n\n return compute$1({\n x0: el.x + vx * r0,\n y0: el.y + vy * r0,\n x1: el.x + vx * r1,\n y1: el.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(el, config) {\n var v = orient(el, config.origin);\n var rx = v.x * el.options.radius;\n var ry = v.y * el.options.radius;\n\n return compute$1({\n x0: el.x - rx,\n y0: el.y - ry,\n x1: el.x + rx,\n y1: el.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n bar: function(el, config) {\n var v = orient(el, config.origin);\n var x = el.x;\n var y = el.y;\n var sx = 0;\n var sy = 0;\n\n if (el.horizontal) {\n x = Math.min(el.x, el.base);\n sx = Math.abs(el.base - el.x);\n } else {\n y = Math.min(el.y, el.base);\n sy = Math.abs(el.base - el.y);\n }\n\n return compute$1({\n x0: x,\n y0: y + sy,\n x1: x + sx,\n y1: y,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n fallback: function(el, config) {\n var v = orient(el, config.origin);\n\n return compute$1({\n x0: el.x,\n y0: el.y,\n x1: el.x + (el.width || 0),\n y1: el.y + (el.height || 0),\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n var borderWidth = model.borderWidth || 0;\n var padding = model.padding;\n var th = model.size.height;\n var tw = model.size.width;\n var tx = -tw / 2;\n var ty = -th / 2;\n\n return {\n frame: {\n x: tx - padding.left - borderWidth,\n y: ty - padding.top - borderWidth,\n w: tw + padding.width + borderWidth * 2,\n h: th + padding.height + borderWidth * 2\n },\n text: {\n x: tx,\n y: ty,\n w: tw,\n h: th\n }\n };\n}\n\nfunction getScaleOrigin(el, context) {\n var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n if (!scale) {\n return null;\n }\n\n if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n return {x: scale.xCenter, y: scale.yCenter};\n }\n\n var pixel = scale.getBasePixel();\n return el.horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof ArcElement) {\n return positioners.arc;\n }\n if (el instanceof PointElement) {\n return positioners.point;\n }\n if (el instanceof BarElement) {\n return positioners.bar;\n }\n return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n var HALF_PI = Math.PI / 2;\n\n if (radius) {\n var r = Math.min(radius, h / 2, w / 2);\n var left = x + r;\n var top = y + r;\n var right = x + w - r;\n var bottom = y + h - r;\n\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -Math.PI, 0);\n ctx.arc(left, bottom, r, 0, Math.PI);\n } else {\n ctx.arc(left, top, r, -Math.PI, Math.PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, w, h);\n }\n}\n\nfunction drawFrame(ctx, rect, model) {\n var bgColor = model.backgroundColor;\n var borderColor = model.borderColor;\n var borderWidth = model.borderWidth;\n\n if (!bgColor && (!borderColor || !borderWidth)) {\n return;\n }\n\n ctx.beginPath();\n\n drawRoundedRect(\n ctx,\n rasterize(rect.x) + borderWidth / 2,\n rasterize(rect.y) + borderWidth / 2,\n rasterize(rect.w) - borderWidth,\n rasterize(rect.h) - borderWidth,\n model.borderRadius);\n\n ctx.closePath();\n\n if (bgColor) {\n ctx.fillStyle = bgColor;\n ctx.fill();\n }\n\n if (borderColor && borderWidth) {\n ctx.strokeStyle = borderColor;\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = 'miter';\n ctx.stroke();\n }\n}\n\nfunction textGeometry(rect, align, font) {\n var h = font.lineHeight;\n var w = rect.w;\n var x = rect.x;\n var y = rect.y + h / 2;\n\n if (align === 'center') {\n x += w / 2;\n } else if (align === 'end' || align === 'right') {\n x += w;\n }\n\n return {\n h: h,\n w: w,\n x: x,\n y: y\n };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n var shadow = ctx.shadowBlur;\n var stroked = cfg.stroked;\n var x = rasterize(cfg.x);\n var y = rasterize(cfg.y);\n var w = rasterize(cfg.w);\n\n if (stroked) {\n ctx.strokeText(text, x, y, w);\n }\n\n if (cfg.filled) {\n if (shadow && stroked) {\n // Prevent drawing shadow on both the text stroke and fill, so\n // if the text is stroked, remove the shadow for the text fill.\n ctx.shadowBlur = 0;\n }\n\n ctx.fillText(text, x, y, w);\n\n if (shadow && stroked) {\n ctx.shadowBlur = shadow;\n }\n }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n var align = model.textAlign;\n var color = model.color;\n var filled = !!color;\n var font = model.font;\n var ilen = lines.length;\n var strokeColor = model.textStrokeColor;\n var strokeWidth = model.textStrokeWidth;\n var stroked = strokeColor && strokeWidth;\n var i;\n\n if (!ilen || (!filled && !stroked)) {\n return;\n }\n\n // Adjust coordinates based on text alignment and line height\n rect = textGeometry(rect, align, font);\n\n ctx.font = font.string;\n ctx.textAlign = align;\n ctx.textBaseline = 'middle';\n ctx.shadowBlur = model.textShadowBlur;\n ctx.shadowColor = model.textShadowColor;\n\n if (filled) {\n ctx.fillStyle = color;\n }\n if (stroked) {\n ctx.lineJoin = 'round';\n ctx.lineWidth = strokeWidth;\n ctx.strokeStyle = strokeColor;\n }\n\n for (i = 0, ilen = lines.length; i < ilen; ++i) {\n drawTextLine(ctx, lines[i], {\n stroked: stroked,\n filled: filled,\n w: rect.w,\n x: rect.x,\n y: rect.y + rect.h * i\n });\n }\n}\n\nvar Label = function(config, ctx, el, index) {\n var me = this;\n\n me._config = config;\n me._index = index;\n me._model = null;\n me._rects = null;\n me._ctx = ctx;\n me._el = el;\n};\n\nmerge(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var font = toFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, defaults$1.color], context, index);\n\n return {\n align: resolve([config.align, 'center'], context, index),\n anchor: resolve([config.anchor, 'center'], context, index),\n area: context.chart.chartArea,\n backgroundColor: resolve([config.backgroundColor, null], context, index),\n borderColor: resolve([config.borderColor, null], context, index),\n borderRadius: resolve([config.borderRadius, 0], context, index),\n borderWidth: resolve([config.borderWidth, 0], context, index),\n clamp: resolve([config.clamp, false], context, index),\n clip: resolve([config.clip, false], context, index),\n color: color,\n display: display,\n font: font,\n lines: lines,\n offset: resolve([config.offset, 4], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el, context),\n padding: toPadding(resolve([config.padding, 4], context, index)),\n positioner: getPositioner(me._el),\n rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n size: utils.textSize(me._ctx, lines, font),\n textAlign: resolve([config.textAlign, 'start'], context, index),\n textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n textShadowColor: resolve([config.textShadowColor, color], context, index),\n textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n };\n },\n\n update: function(context) {\n var me = this;\n var model = null;\n var rects = null;\n var index = me._index;\n var config = me._config;\n var value, label, lines;\n\n // We first resolve the display option (separately) to avoid computing\n // other options in case the label is hidden (i.e. display: false).\n var display = resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = valueOrDefault(callback(config.formatter, [value, context]), value);\n lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n if (lines.length) {\n model = me._modelize(display, lines, config, context);\n rects = boundingRects(model);\n }\n }\n\n me._model = model;\n me._rects = rects;\n },\n\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n\n visible: function() {\n return this._model && this._model.opacity;\n },\n\n model: function() {\n return this._model;\n },\n\n draw: function(chart, center) {\n var me = this;\n var ctx = chart.ctx;\n var model = me._model;\n var rects = me._rects;\n var area;\n\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n if (model.clip) {\n area = model.area;\n ctx.beginPath();\n ctx.rect(\n area.left,\n area.top,\n area.right - area.left,\n area.bottom - area.top);\n ctx.clip();\n }\n\n ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n ctx.translate(rasterize(center.x), rasterize(center.y));\n ctx.rotate(model.rotation);\n\n drawFrame(ctx, rects.frame, model);\n drawText(ctx, model.lines, rects.text, model);\n\n ctx.restore();\n }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nfunction projected(points, axis) {\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var origin = axis.origin;\n var i, pt, vx, vy, dp;\n\n for (i = 0; i < points.length; ++i) {\n pt = points[i];\n vx = pt.x - origin.x;\n vy = pt.y - origin.y;\n dp = axis.vx * vx + axis.vy * vy;\n min = Math.min(min, dp);\n max = Math.max(max, dp);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction toAxis(p0, p1) {\n var vx = p1.x - p0.x;\n var vy = p1.y - p0.y;\n var ln = Math.sqrt(vx * vx + vy * vy);\n\n return {\n vx: (p1.x - p0.x) / ln,\n vy: (p1.y - p0.y) / ln,\n origin: p0,\n ln: ln\n };\n}\n\nvar HitBox = function() {\n this._rotation = 0;\n this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\n\nmerge(HitBox.prototype, {\n center: function() {\n var r = this._rect;\n return {\n x: r.x + r.w / 2,\n y: r.y + r.h / 2\n };\n },\n\n update: function(center, rect, rotation) {\n this._rotation = rotation;\n this._rect = {\n x: rect.x + center.x,\n y: rect.y + center.y,\n w: rect.w,\n h: rect.h\n };\n },\n\n contains: function(point) {\n var me = this;\n var margin = 1;\n var rect = me._rect;\n\n point = rotated(point, me.center(), -me._rotation);\n\n return !(point.x < rect.x - margin\n || point.y < rect.y - margin\n || point.x > rect.x + rect.w + margin * 2\n || point.y > rect.y + rect.h + margin * 2);\n },\n\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(other) {\n var r0 = this._points();\n var r1 = other._points();\n var axes = [\n toAxis(r0[0], r0[1]),\n toAxis(r0[0], r0[3])\n ];\n var i, pr0, pr1;\n\n if (this._rotation !== other._rotation) {\n // Only separate with r1 axis if the rotation is different,\n // else it's enough to separate r0 and r1 with r0 axis only!\n axes.push(\n toAxis(r1[0], r1[1]),\n toAxis(r1[0], r1[3])\n );\n }\n\n for (i = 0; i < axes.length; ++i) {\n pr0 = projected(r0, axes[i]);\n pr1 = projected(r1, axes[i]);\n\n if (pr0.max < pr1.min || pr1.max < pr0.min) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n */\n _points: function() {\n var me = this;\n var rect = me._rect;\n var angle = me._rotation;\n var center = me.center();\n\n return [\n rotated({x: rect.x, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n ];\n }\n});\n\nfunction coordinates(el, model, geometry) {\n var point = model.positioner(el, model);\n var vx = point.vx;\n var vy = point.vy;\n\n if (!vx && !vy) {\n // if aligned center, we don't want to offset the center point\n return {x: point.x, y: point.y};\n }\n\n var w = geometry.w;\n var h = geometry.h;\n\n // take in account the label rotation\n var rotation = model.rotation;\n var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n // scale the unit vector (vx, vy) to get at least dx or dy equal to\n // w or h respectively (else we would calculate the distance to the\n // ellipse inscribed in the bounding rect)\n var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n dx *= vx * vs;\n dy *= vy * vs;\n\n // finally, include the explicit offset\n dx += model.offset * vx;\n dy += model.offset * vy;\n\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n}\n\nfunction collide(labels, collider) {\n var i, j, s0, s1;\n\n // IMPORTANT Iterate in the reverse order since items at the end of the\n // list have an higher weight/priority and thus should be less impacted\n // by the overlapping strategy.\n\n for (i = labels.length - 1; i >= 0; --i) {\n s0 = labels[i].$layout;\n\n for (j = i - 1; j >= 0 && s0._visible; --j) {\n s1 = labels[j].$layout;\n\n if (s1._visible && s0._box.intersects(s1._box)) {\n collider(s0, s1);\n }\n }\n }\n\n return labels;\n}\n\nfunction compute(labels) {\n var i, ilen, label, state, geometry, center, proxy;\n\n // Initialize labels for overlap detection\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n // Chart.js 3 removed el._model in favor of getProps(), making harder to\n // abstract reading values in positioners. Also, using string arrays to\n // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n // positioners inefficient in the normal case (i.e. not the final values)\n // and the code a bit ugly, so let's use a Proxy instead.\n proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n geometry = label.geometry();\n center = coordinates(proxy, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n }\n }\n\n // Auto hide overlapping labels\n return collide(labels, function(s0, s1) {\n var h0 = s0._hidable;\n var h1 = s1._hidable;\n\n if ((h0 && h1) || h1) {\n s1._visible = false;\n } else if (h0) {\n s0._visible = false;\n }\n });\n}\n\nvar layout = {\n prepare: function(datasets) {\n var labels = [];\n var i, j, ilen, jlen, label;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n label = datasets[i][j];\n labels.push(label);\n label.$layout = {\n _box: new HitBox(),\n _hidable: false,\n _visible: true,\n _set: i,\n _idx: label._index\n };\n }\n }\n\n // TODO New `z` option: labels with a higher z-index are drawn\n // of top of the ones with a lower index. Lowest z-index labels\n // are also discarded first when hiding overlapping labels.\n labels.sort(function(a, b) {\n var sa = a.$layout;\n var sb = b.$layout;\n\n return sa._idx === sb._idx\n ? sb._set - sa._set\n : sb._idx - sa._idx;\n });\n\n this.update(labels);\n\n return labels;\n },\n\n update: function(labels) {\n var dirty = false;\n var i, ilen, label, model, state;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n model = label.model();\n state = label.$layout;\n state._hidable = model && model.display === 'auto';\n state._visible = label.visible();\n dirty |= state._hidable;\n }\n\n if (dirty) {\n compute(labels);\n }\n },\n\n lookup: function(labels, point) {\n var i, state;\n\n // IMPORTANT Iterate in the reverse order since items at the end of\n // the list have an higher z-index, thus should be picked first.\n\n for (i = labels.length - 1; i >= 0; --i) {\n state = labels[i].$layout;\n\n if (state && state._visible && state._box.contains(point)) {\n return labels[i];\n }\n }\n\n return null;\n },\n\n draw: function(chart, labels) {\n var i, ilen, label, state, geometry, center;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n geometry = label.geometry();\n center = coordinates(label._el, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar formatter = function(value) {\n if (isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (isObject(value)) {\n if (!isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!isNullOrUndef(value.r)) {\n label = value.r;\n } else {\n label = '';\n keys = Object.keys(value);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n }\n }\n }\n\n return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n align: 'center',\n anchor: 'center',\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: false,\n clip: false,\n color: undefined,\n display: true,\n font: {\n family: undefined,\n lineHeight: 1.2,\n size: undefined,\n style: undefined,\n weight: null\n },\n formatter: formatter,\n labels: undefined,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n var override = dataset.datalabels;\n var listeners = {};\n var configs = [];\n var labels, keys;\n\n if (override === false) {\n return null;\n }\n if (override === true) {\n override = {};\n }\n\n options = merge({}, [options, override]);\n labels = options.labels || {};\n keys = Object.keys(labels);\n delete options.labels;\n\n if (keys.length) {\n keys.forEach(function(key) {\n if (labels[key]) {\n configs.push(merge({}, [\n options,\n labels[key],\n {_key: key}\n ]));\n }\n });\n } else {\n // Default label if no \"named\" label defined.\n configs.push(options);\n }\n\n // listeners: {