{"version":3,"file":"mdb.umd.min.js","sources":["../../src/js/mdb/dom/data.js","../../src/js/mdb/util/index.js","../../src/js/mdb/dom/event-handler.js","../../src/js/mdb/dom/manipulator.js","../../src/js/mdb/dom/selector-engine.js","../../src/js/bootstrap/mdb-prefix/dom/data.js","../../src/js/bootstrap/mdb-prefix/util/index.js","../../src/js/bootstrap/mdb-prefix/dom/event-handler.js","../../src/js/bootstrap/mdb-prefix/dom/manipulator.js","../../src/js/bootstrap/mdb-prefix/util/config.js","../../src/js/bootstrap/mdb-prefix/base-component.js","../../src/js/bootstrap/mdb-prefix/button.js","../../src/js/autoinit/init.js","../../src/js/free/button.js","../../src/js/bootstrap/mdb-prefix/dom/selector-engine.js","../../src/js/bootstrap/mdb-prefix/util/backdrop.js","../../src/js/bootstrap/mdb-prefix/util/component-functions.js","../../src/js/bootstrap/mdb-prefix/util/focustrap.js","../../src/js/bootstrap/mdb-prefix/util/scrollbar.js","../../src/js/bootstrap/mdb-prefix/offcanvas.js","../../src/js/bootstrap/mdb-prefix/util/swipe.js","../../src/js/bootstrap/mdb-prefix/carousel.js","../../src/js/free/carousel.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../src/js/bootstrap/mdb-prefix/util/sanitizer.js","../../src/js/bootstrap/mdb-prefix/util/template-factory.js","../../src/js/bootstrap/mdb-prefix/tooltip.js","../../src/js/bootstrap/mdb-prefix/popover.js","../../src/js/free/popover.js","../../src/js/bootstrap/mdb-prefix/scrollspy.js","../../src/js/free/scrollspy.js","../../src/js/bootstrap/mdb-prefix/tab.js","../../src/js/free/tab.js","../../src/js/free/tooltip.js","../../node_modules/detect-autofill/dist/detect-autofill.js","../../src/js/free/base-component.js","../../src/js/free/input.js","../../src/js/bootstrap/mdb-prefix/collapse.js","../../src/js/free/collapse.js","../../src/js/bootstrap/mdb-prefix/dropdown.js","../../src/js/free/dropdown.js","../../src/js/free/ripple.js","../../src/js/free/range.js","../../src/js/pro/animate.js","../../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../../node_modules/chart.js/dist/chart.mjs","../../node_modules/deepmerge/dist/cjs.js","../../src/js/pro/charts/chartsDefaults.js","../../src/js/pro/charts/charts.js","../../src/js/pro/lightbox.js","../../src/js/pro/rating.js","../../src/js/mdb/perfect-scrollbar/lib/css.js","../../src/js/mdb/perfect-scrollbar/lib/dom.js","../../src/js/mdb/perfect-scrollbar/lib/class-names.js","../../src/js/mdb/perfect-scrollbar/lib/event-manager.js","../../src/js/mdb/perfect-scrollbar/process-scroll-diff.js","../../src/js/mdb/perfect-scrollbar/lib/util.js","../../src/js/mdb/perfect-scrollbar/update-geometry.js","../../src/js/mdb/perfect-scrollbar/handlers/drag-thumb.js","../../src/js/mdb/perfect-scrollbar/index.js","../../src/js/mdb/perfect-scrollbar/handlers/click-rail.js","../../src/js/mdb/perfect-scrollbar/handlers/keyboard.js","../../src/js/mdb/perfect-scrollbar/handlers/mouse-wheel.js","../../src/js/mdb/perfect-scrollbar/handlers/touch.js","../../src/js/mdb/util/focusTrap.js","../../src/js/mdb/util/keycodes.js","../../src/js/mdb/util/touch/swipe.js","../../src/js/mdb/util/touch/index.js","../../src/js/pro/sidenav.js","../../src/js/bootstrap/mdb-prefix/alert.js","../../src/js/mdb/util/stack.js","../../src/js/pro/alert.js","../../src/js/bootstrap/mdb-prefix/toast.js","../../src/js/pro/toast.js","../../src/js/pro/timepicker/templates.js","../../src/js/pro/timepicker/utils.js","../../src/js/pro/timepicker/index.js","../../src/js/pro/navbar.js","../../src/js/pro/infinite-scroll.js","../../src/js/pro/lazy-load.js","../../src/js/pro/datepicker/date-utils.js","../../src/js/pro/datepicker/templates.js","../../src/js/pro/datepicker/index.js","../../src/js/pro/popconfirm.js","../../src/js/pro/datatable/html/columns.js","../../src/js/pro/datatable/html/table.js","../../src/js/pro/datatable/html/rows.js","../../src/js/pro/datatable/pagination/templates.js","../../src/js/pro/select/select-option.js","../../src/js/pro/select/selection-model.js","../../src/js/pro/select/util.js","../../src/js/pro/select/templates.js","../../src/js/pro/select/index.js","../../src/js/pro/datatable/pagination/index.js","../../src/js/pro/datatable/index.js","../../src/js/pro/datatable/util.js","../../src/js/pro/stepper.js","../../src/js/pro/sticky.js","../../src/js/pro/touch/touchUtil.js","../../src/js/pro/touch/press.js","../../src/js/pro/touch/swipe.js","../../src/js/pro/touch/pan.js","../../src/js/pro/touch/pinch.js","../../src/js/pro/touch/tap.js","../../src/js/pro/touch/rotate.js","../../src/js/pro/touch/index.js","../../src/js/pro/smooth-scroll.js","../../src/js/pro/perfect-scrollbar.js","../../src/js/pro/loading-management/index.js","../../src/js/pro/loading-management/templates.js","../../src/js/mdb/util/sanitizer.js","../../src/js/pro/autocomplete/templates.js","../../src/js/pro/autocomplete/index.js","../../src/js/bootstrap/mdb-prefix/modal.js","../../src/js/mdb/util/scrollbar.js","../../src/js/pro/modal.js","../../src/js/pro/clipboard.js","../../src/js/pro/chips/templates.js","../../src/js/pro/chips/chip.js","../../src/js/pro/chips/index.js","../../src/js/pro/multi-range/template.js","../../src/js/pro/multi-range/utils.js","../../src/js/pro/multi-range/index.js","../../src/js/pro/date-time-picker/utils.js","../../src/js/pro/date-time-picker/index.js","../../src/js/pro/date-time-picker/templates.js","../../src/js/autoinit/callbacks/free.js","../../src/js/autoinit/callbacks/pro.js","../../src/js/autoinit/initSelectors/pro.js","../../src/js/autoinit/initSelectors/free.js","../../src/js/autoinit/callbacks/charts.js","../../src/js/autoinit/index.pro.js","../../src/js/mdb.pro.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {};\n let id = 1;\n return {\n set(element, key, data) {\n if (typeof element[key] === 'undefined') {\n element[key] = {\n key,\n id,\n };\n id++;\n }\n\n storeData[element[key].id] = data;\n },\n get(element, key) {\n if (!element || typeof element[key] === 'undefined') {\n return null;\n }\n\n const keyProperties = element[key];\n if (keyProperties.key === key) {\n return storeData[keyProperties.id];\n }\n\n return null;\n },\n delete(element, key) {\n if (typeof element[key] === 'undefined') {\n return;\n }\n\n const keyProperties = element[key];\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id];\n delete element[key];\n }\n },\n };\n})();\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data);\n },\n getData(instance, key) {\n return mapData.get(instance, key);\n },\n removeData(instance, key) {\n mapData.delete(instance, key);\n },\n};\n\nexport default Data;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = (obj) => {\n if (obj === null || obj === undefined) {\n return `${obj}`;\n }\n\n return {}.toString\n .call(obj)\n .match(/\\s([a-z]+)/i)[1]\n .toLowerCase();\n};\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = (prefix) => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = (element) => {\n let selector = element.getAttribute('data-mdb-target');\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href');\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = (element) => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = (element) => {\n const selector = getSelector(element);\n\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = (element) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) *\n MILLISECONDS_MULTIPLIER\n );\n};\n\nconst triggerTransitionEnd = (element) => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = (obj) => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n};\n\nconst getElement = (obj) => {\n if (isElement(obj)) {\n // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj;\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj);\n }\n\n return null;\n};\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false;\n const durationPadding = 5;\n const emulatedDuration = duration + durationPadding;\n\n function listener() {\n called = true;\n element.removeEventListener(TRANSITION_END, listener);\n }\n\n element.addEventListener(TRANSITION_END, listener);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element);\n }\n }, emulatedDuration);\n};\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach((property) => {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = value && isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n );\n }\n });\n};\n\nconst isVisible = (element) => {\n if (!element) {\n return false;\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element);\n const parentNodeStyle = getComputedStyle(element.parentNode);\n\n return (\n elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n );\n }\n\n return false;\n};\n\nconst isDisabled = (element) => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = (element) => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => function () {};\n\nconst reflow = (element) => element.offsetHeight;\n\nconst getjQuery = () => {\n const { jQuery } = window;\n\n if (jQuery && !document.body.hasAttribute('data-mdb-no-jquery')) {\n return jQuery;\n }\n\n return null;\n};\n\nconst onDOMContentLoaded = (callback) => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = document.documentElement.dir === 'rtl';\n\nconst array = (collection) => {\n return Array.from(collection);\n};\n\nconst element = (tag) => {\n return document.createElement(tag);\n};\n\nconst defineJQueryPlugin = (plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nexport {\n getjQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n getElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n array,\n element,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n};\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst $ = getjQuery();\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\nconst nativeEvents = [\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n];\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--; '') {\n if (domElements[i] === target) {\n event.delegateTarget = target;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n }\n\n // To please ESLint\n return null;\n };\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events);\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]];\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event;\n }\n }\n\n return null;\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string';\n const originalHandler = delegation ? delegationFn : handler;\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '');\n const custom = customEvents[typeEvent];\n\n if (custom) {\n typeEvent = custom;\n }\n\n const isNative = nativeEvents.indexOf(typeEvent) > -1;\n\n if (!isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [delegation, originalHandler, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n if (!handler) {\n handler = delegationFn;\n delegationFn = null;\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(\n originalTypeEvent,\n handler,\n delegationFn\n );\n const events = getEvent(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff;\n\n return;\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = delegation\n ? bootstrapDelegationHandler(element, handler, delegationFn)\n : bootstrapHandler(element, handler);\n\n fn.delegationSelector = delegation ? handler : null;\n fn.originalHandler = originalHandler;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, delegation);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n Object.keys(storeElementEvent).forEach((handlerKey) => {\n if (handlerKey.indexOf(namespace) > -1) {\n const event = storeElementEvent[handlerKey];\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false);\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true);\n },\n\n extend(element, events, componentName) {\n events.forEach((event) => {\n EventHandler.on(element, `${event.name}.bs.${componentName}`, (e) => {\n const eventParameters = {};\n if (event.parametersToCopy) {\n event.parametersToCopy.forEach((param) => {\n eventParameters[param] = e[param];\n });\n }\n\n const mdbEvent = EventHandler.trigger(\n element,\n `${event.name}.mdb.${componentName}`,\n eventParameters\n );\n\n if (mdbEvent.defaultPrevented) {\n e.preventDefault();\n }\n });\n });\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(\n originalTypeEvent,\n handler,\n delegationFn\n );\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getEvent(element);\n const isNamespace = originalTypeEvent.charAt(0) === '.';\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return;\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n return;\n }\n\n if (isNamespace) {\n Object.keys(events).forEach((elementEvent) => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n });\n }\n\n const storeElementEvent = events[typeEvent] || {};\n Object.keys(storeElementEvent).forEach((keyHandlers) => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) {\n const event = storeElementEvent[keyHandlers];\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const typeEvent = event.replace(stripNameRegex, '');\n const inNamespace = event !== typeEvent;\n const isNative = nativeEvents.indexOf(typeEvent) > -1;\n\n let jQueryEvent;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n let evt = null;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents');\n evt.initEvent(typeEvent, bubbles, true);\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true,\n });\n }\n\n // merge custom informations in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach((key) => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key];\n },\n });\n });\n }\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n },\n};\n\nexport const EventHandlerMulti = {\n on(element, eventsName, handler, delegationFn) {\n const events = eventsName.split(' ');\n\n for (let i = 0; i < events.length; i++) {\n EventHandler.on(element, events[i], handler, delegationFn);\n }\n },\n off(element, originalTypeEvent, handler, delegationFn) {\n const events = originalTypeEvent.split(' ');\n\n for (let i = 0; i < events.length; i++) {\n EventHandler.off(element, events[i], handler, delegationFn);\n }\n },\n};\n\nexport default EventHandler;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true;\n }\n\n if (val === 'false') {\n return false;\n }\n\n if (val === Number(val).toString()) {\n return Number(val);\n }\n\n if (val === '' || val === 'null') {\n return null;\n }\n\n return val;\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-mdb-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-mdb-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {\n ...element.dataset,\n };\n\n Object.keys(attributes)\n .filter((key) => key.startsWith('mdb'))\n .forEach((key) => {\n let pureKey = key.replace(/^mdb/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(attributes[key]);\n });\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-mdb-${normalizeDataKey(key)}`));\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect();\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft,\n };\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft,\n };\n },\n\n style(element, style) {\n Object.assign(element.style, style);\n },\n\n toggleClass(element, className) {\n if (!element) {\n return;\n }\n\n if (element.classList.contains(className)) {\n element.classList.remove(className);\n } else {\n element.classList.add(className);\n }\n },\n\n addClass(element, className) {\n if (element.classList.contains(className)) return;\n element.classList.add(className);\n },\n\n addStyle(element, style) {\n Object.keys(style).forEach((property) => {\n element.style[property] = style[property];\n });\n },\n\n removeClass(element, className) {\n if (!element.classList.contains(className)) return;\n element.classList.remove(className);\n },\n\n hasClass(element, className) {\n return element.classList.contains(className);\n },\n};\n\nexport default Manipulator;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3;\n\nconst SelectorEngine = {\n closest(element, selector) {\n return element.closest(selector);\n },\n\n matches(element, selector) {\n return element.matches(selector);\n },\n\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n const children = [].concat(...element.children);\n\n return children.filter((child) => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n\n let ancestor = element.parentNode;\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (this.matches(ancestor, selector)) {\n parents.push(ancestor);\n }\n\n ancestor = ancestor.parentNode;\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (this.matches(next, selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n};\n\nexport default SelectorEngine;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(\n `Bootstrap doesn't allow more than one instance per element. Bound instance: ${\n Array.from(instanceMap.keys())[0]\n }.`\n );\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n },\n};\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = (selector) => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = (object) => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString\n .call(object)\n .match(/\\s([a-z]+)/i)[1]\n .toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = (prefix) => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getTransitionDurationFromElement = (element) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) *\n MILLISECONDS_MULTIPLIER\n );\n};\n\nconst triggerTransitionEnd = (element) => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = (object) => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = (object) => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n\n return null;\n};\n\nconst isVisible = (element) => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = (element) => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = (element) => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = (element) => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-mdb-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = (callback) => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = (plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n\n let called = false;\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType,\n};\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js';\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout',\n};\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll',\n]);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, { delegateTarget: target });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(\n (event) => event.callable === callable && event.delegationSelector === delegationSelector\n );\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = (fn) => {\n return function (event) {\n if (\n !event.relatedTarget ||\n (event.relatedTarget !== event.delegateTarget &&\n !event.delegateTarget.contains(event.relatedTarget))\n ) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated\n ? bootstrapDelegationHandler(element, handler, callable)\n : bootstrapHandler(element, callable);\n\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(\n originalTypeEvent,\n handler,\n delegationFunction\n );\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n },\n};\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n },\n });\n }\n }\n\n return obj;\n}\n\nexport default EventHandler;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twmdb/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-mdb-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-mdb-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const mdbKeys = Object.keys(element.dataset).filter(\n (key) => key.startsWith('mdb') && !key.startsWith('mdbConfig')\n );\n\n for (const key of mdbKeys) {\n let pureKey = key.replace(/^mdb/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-mdb-${normalizeDataKey(key)}`));\n },\n};\n\nexport default Manipulator;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js';\nimport { isElement, toType } from './index.js';\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {}),\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n );\n }\n }\n }\n}\n\nexport default Config;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js';\nimport EventHandler from './dom/event-handler.js';\nimport Config from './util/config.js';\nimport { executeAfterTransition, getElement } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n\n element = getElement(element);\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return (\n this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n );\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\nexport default BaseComponent;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport { defineJQueryPlugin } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'button';\nconst DATA_KEY = 'bs.button';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst CLASS_NAME_ACTIVE = 'active';\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n// event.preventDefault()\n\n// const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n// const data = Button.getOrCreateInstance(button)\n\n// data.toggle()\n// })\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Button)\n\nexport default Button;\n","import SelectorEngine from '../mdb/dom/selector-engine';\nimport { defineJQueryPlugin } from '../mdb/util/index';\n\nconst mapComponentsData = (() => {\n const componentsData = [];\n return {\n set(componentName) {\n componentsData.push(componentName);\n },\n get(componentName) {\n return componentsData.includes(componentName);\n },\n };\n})();\n\nexport const InitializedComponents = {\n set(componentName) {\n mapComponentsData.set(componentName);\n },\n get(componentName) {\n return mapComponentsData.get(componentName);\n },\n};\n\nconst isInitialized = (componentName) => {\n return InitializedComponents.get(componentName);\n};\n\nexport const bindCallbackEventsIfNeeded = (component) => {\n if (!isInitialized(component.NAME)) {\n const manualInit = true;\n initComponent(component, manualInit);\n }\n};\n\nconst initComponent = (component, manualInit = false) => {\n if (!component || InitializedComponents.get(component.NAME)) {\n return;\n }\n\n if (!manualInit) {\n InitializedComponents.set(component.NAME);\n }\n\n const thisComponent = _defaultInitSelectors[component.NAME] || null;\n const isToggler = thisComponent?.isToggler || false;\n\n defineJQueryPlugin(component);\n if (thisComponent?.advanced) {\n thisComponent.advanced(component, thisComponent?.selector);\n return;\n }\n\n if (isToggler) {\n thisComponent.callback(component, thisComponent?.selector);\n\n return;\n }\n\n if (manualInit) {\n return;\n }\n\n SelectorEngine.find(thisComponent?.selector).forEach((element) => {\n let instance = component.getInstance(element);\n if (!instance) {\n instance = new component(element); // eslint-disable-line\n if (thisComponent?.onInit) {\n instance[thisComponent.onInit]();\n }\n }\n });\n};\n\nlet _defaultInitSelectors;\nexport class InitMDB {\n constructor(defaultInitSelectors) {\n _defaultInitSelectors = defaultInitSelectors;\n }\n\n init = (components) => {\n components.forEach((component) => initComponent(component));\n };\n\n initMDB = (components, checkOtherImports = false) => {\n const componentList = Object.keys(_defaultInitSelectors).map((element) => {\n const requireAutoInit = Boolean(\n document.querySelector(_defaultInitSelectors[element].selector)\n );\n\n if (requireAutoInit) {\n const component = components[_defaultInitSelectors[element].name];\n if (!component && !InitializedComponents.get(element) && checkOtherImports) {\n // eslint-disable-next-line no-console\n console.warn(\n `Please import ${_defaultInitSelectors[element].name} from \"MDB\" package and add it to a object parameter inside \"initMDB\" function`\n );\n }\n return component;\n }\n\n return null;\n });\n\n this.init(componentList);\n };\n}\n","import Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\n\nimport BSButton from '../bootstrap/mdb-prefix/button';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\nconst NAME = 'button';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_CLICK = `click${EVENT_KEY}`;\nconst EVENT_TRANSITIONEND = 'transitionend';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\n\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_SHOWN = 'shown';\nconst CLASS_NAME_FIXED_ACTION_BTN = 'fixed-action-btn';\n\nconst SELECTOR_ACTION_BUTTON = '.fixed-action-btn:not(.smooth-scroll) > .btn-floating';\nconst SELECTOR_LIST_ELEMENT = 'ul .btn';\nconst SELECTOR_LIST = 'ul';\n\nclass Button extends BSButton {\n constructor(element) {\n super(element);\n this._fn = {};\n\n if (this._element) {\n Data.setData(this._element, DATA_KEY, this);\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Static\n static get NAME() {\n return NAME;\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Button(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](options);\n }\n });\n }\n\n // Getters\n get _actionButton() {\n return SelectorEngine.findOne(SELECTOR_ACTION_BUTTON, this._element);\n }\n\n get _buttonListElements() {\n return SelectorEngine.find(SELECTOR_LIST_ELEMENT, this._element);\n }\n\n get _buttonList() {\n return SelectorEngine.findOne(SELECTOR_LIST, this._element);\n }\n\n get _isTouchDevice() {\n return 'ontouchstart' in document.documentElement;\n }\n\n // Public\n show() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n EventHandler.trigger(this._element, EVENT_SHOW);\n // EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, this._bindListOpenTransitionEnd);\n this._bindListOpenTransitionEnd();\n Manipulator.addStyle(this._element, { height: `${this._fullContainerHeight}px` });\n this._toggleVisibility(true);\n }\n }\n\n hide() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n EventHandler.trigger(this._element, EVENT_HIDE);\n // EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, this._bindListHideTransitionEnd);\n this._bindListHideTransitionEnd();\n this._toggleVisibility(false);\n }\n }\n\n dispose() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n EventHandler.off(this._actionButton, EVENT_CLICK);\n this._actionButton.removeEventListener(EVENT_MOUSEENTER, this._fn.mouseenter);\n this._element.removeEventListener(EVENT_MOUSELEAVE, this._fn.mouseleave);\n }\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _init() {\n if (Manipulator.hasClass(this._element, CLASS_NAME_FIXED_ACTION_BTN)) {\n this._saveInitialHeights();\n this._setInitialStyles();\n this._bindInitialEvents();\n }\n }\n\n _bindMouseEnter() {\n this._actionButton.addEventListener(\n EVENT_MOUSEENTER,\n // prettier-ignore\n this._fn.mouseenter = () => {\n if (!this._isTouchDevice) {\n this.show();\n }\n }\n // prettier-ignore\n );\n }\n\n _bindMouseLeave() {\n this._element.addEventListener(\n EVENT_MOUSELEAVE,\n // prettier-ignore\n this._fn.mouseleave = () => {\n this.hide();\n }\n // prettier-ignore\n );\n }\n\n _bindClick() {\n EventHandler.on(this._actionButton, EVENT_CLICK, () => {\n if (Manipulator.hasClass(this._element, CLASS_NAME_ACTIVE)) {\n this.hide();\n } else {\n this.show();\n }\n });\n }\n\n _bindListHideTransitionEnd() {\n EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, (event) => {\n if (event.propertyName === 'transform') {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n this._element.style.height = `${this._initialContainerHeight}px`;\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n }\n });\n }\n\n _bindListOpenTransitionEnd() {\n EventHandler.on(this._buttonList, EVENT_TRANSITIONEND, (event) => {\n if (event.propertyName === 'transform') {\n EventHandler.off(this._buttonList, EVENT_TRANSITIONEND);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n }\n });\n }\n\n _toggleVisibility(isVisible) {\n const action = isVisible ? 'addClass' : 'removeClass';\n const listTranslate = isVisible ? 'translate(0)' : `translateY(${this._fullContainerHeight}px)`;\n Manipulator.addStyle(this._buttonList, { transform: listTranslate });\n\n if (this._buttonListElements) {\n this._buttonListElements.forEach((el) => Manipulator[action](el, CLASS_NAME_SHOWN));\n }\n Manipulator[action](this._element, CLASS_NAME_ACTIVE);\n }\n\n _getHeight(element) {\n const computed = window.getComputedStyle(element);\n const height = parseFloat(computed.getPropertyValue('height'));\n return height;\n }\n\n _saveInitialHeights() {\n this._initialContainerHeight = this._getHeight(this._element);\n this._initialListHeight = this._getHeight(this._buttonList);\n this._fullContainerHeight = this._initialContainerHeight + this._initialListHeight;\n }\n\n _bindInitialEvents() {\n this._bindClick();\n this._bindMouseEnter();\n this._bindMouseLeave();\n }\n\n _setInitialStyles() {\n this._buttonList.style.marginBottom = `${this._initialContainerHeight}px`;\n this._buttonList.style.transform = `translateY(${this._fullContainerHeight}px)`;\n\n this._element.style.height = `${this._initialContainerHeight}px`;\n }\n}\n\nexport default Button;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js';\n\nconst getSelector = (element) => {\n let selector = element.getAttribute('data-mdb-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector\n ? selector\n .split(',')\n .map((sel) => parseSelector(sel))\n .join(',')\n : null;\n};\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter((child) => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]',\n ]\n .map((selector) => `${selector}:not([tabindex^=\"-\"])`)\n .join(',');\n\n return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n\n return null;\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element);\n\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n\n return selector ? SelectorEngine.find(selector) : [];\n },\n};\n\nexport default SelectorEngine;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js';\nimport Config from './config.js';\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop';\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_SHOW = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`;\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body', // give the choice to place backdrop under different elements\n};\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)',\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\nexport default Backdrop;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js';\nimport SelectorEngine from '../dom/selector-engine.js';\nimport { isDisabled } from './index.js';\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n\n EventHandler.on(document, clickEvent, `[data-mdb-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\nexport { enableDismissTrigger };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js';\nimport SelectorEngine from '../dom/selector-engine.js';\nimport Config from './config.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap';\nconst DATA_KEY = 'bs.focustrap';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`;\n\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\n\nconst Default = {\n autofocus: true,\n trapElement: null, // The element to trap focus inside of\n};\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element',\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));\n\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY);\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config;\n\n if (\n event.target === document ||\n event.target === trapElement ||\n trapElement.contains(event.target)\n ) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\nexport default FocusTrap;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js';\nimport SelectorEngine from '../dom/selector-engine.js';\nimport { isElement } from './index.js';\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(\n this._element,\n PROPERTY_PADDING,\n (calculatedValue) => calculatedValue + width\n );\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(\n SELECTOR_FIXED_CONTENT,\n PROPERTY_PADDING,\n (calculatedValue) => calculatedValue + width\n );\n this._setElementAttributes(\n SELECTOR_STICKY_CONTENT,\n PROPERTY_MARGIN,\n (calculatedValue) => calculatedValue - width\n );\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = (element) => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = (element) => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\nexport default ScrollBarHelper;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport Backdrop from './util/backdrop.js';\nimport { enableDismissTrigger } from './util/component-functions.js';\nimport FocusTrap from './util/focustrap.js';\nimport { defineJQueryPlugin, isDisabled, isVisible } from './util/index.js';\nimport ScrollBarHelper from './util/scrollbar.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas';\nconst DATA_KEY = 'bs.offcanvas';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\nconst ESCAPE_KEY = 'Escape';\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\n\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;\n\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-toggle=\"offcanvas\"]';\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false,\n};\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean',\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW);\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null,\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element,\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n// const target = SelectorEngine.getElementFromSelector(this)\n\n// if (['A', 'AREA'].includes(this.tagName)) {\n// event.preventDefault()\n// }\n\n// if (isDisabled(this)) {\n// return\n// }\n\n// EventHandler.one(target, EVENT_HIDDEN, () => {\n// // focus on trigger when it is closed\n// if (isVisible(this)) {\n// this.focus()\n// }\n// })\n\n// // avoid conflict when clicking a toggler of an offcanvas, while another is open\n// const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n// if (alreadyOpen && alreadyOpen !== target) {\n// Offcanvas.getInstance(alreadyOpen).hide()\n// }\n\n// const data = Offcanvas.getOrCreateInstance(target)\n// data.toggle(this)\n// })\n\n// EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n// for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n// Offcanvas.getOrCreateInstance(selector).show()\n// }\n// })\n\n// EventHandler.on(window, EVENT_RESIZE, () => {\n// for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n// if (getComputedStyle(element).position !== 'fixed') {\n// Offcanvas.getOrCreateInstance(element).hide()\n// }\n// }\n// })\n\n// enableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js';\nimport Config from './config.js';\nimport { execute } from './index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe';\nconst EVENT_KEY = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null,\n};\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)',\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX =\n event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return (\n this._supportPointerEvents &&\n (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n );\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\nexport default Swipe;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport Manipulator from './dom/manipulator.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd,\n} from './util/index.js';\nimport Swipe from './util/swipe.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel';\nconst DATA_KEY = 'bs.carousel';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`;\nconst EVENT_SLID = `slid${EVENT_KEY}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\n\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-mdb-slide], [data-mdb-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-mdb-ride=\"carousel\"]';\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT,\n};\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true,\n};\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean',\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(\n () => this._maybeEnableCycle(),\n TOUCHEVENT_COMPAT_WAIT + this._config.interval\n );\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack,\n };\n\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE);\n activeIndicator.removeAttribute('aria-current');\n\n const newActiveIndicator = SelectorEngine.findOne(\n `[data-mdb-slide-to=\"${index}\"]`,\n this._indicatorsElement\n );\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-mdb-interval'), 10);\n\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement =\n element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = (eventName) => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex,\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n\n nextElement.classList.add(orderClassName);\n\n reflow(nextElement);\n\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE);\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);\n\n this._isSliding = false;\n\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n// const target = SelectorEngine.getElementFromSelector(this)\n\n// if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n// return\n// }\n\n// event.preventDefault()\n\n// const carousel = Carousel.getOrCreateInstance(target)\n// const slideIndex = this.getAttribute('data-mdb-slide-to')\n\n// if (slideIndex) {\n// carousel.to(slideIndex)\n// carousel._maybeEnableCycle()\n// return\n// }\n\n// if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n// carousel.next()\n// carousel._maybeEnableCycle()\n// return\n// }\n\n// carousel.prev()\n// carousel._maybeEnableCycle()\n// })\n\n// EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n// const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n// for (const carousel of carousels) {\n// Carousel.getOrCreateInstance(carousel)\n// }\n// })\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Carousel)\n\nexport default Carousel;\n","import EventHandler from '../mdb/dom/event-handler';\nimport BSCarousel from '../bootstrap/mdb-prefix/carousel';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel';\n\nconst EVENT_SLIDE_BS = 'slide.bs.carousel';\nconst EVENT_SLID_BS = 'slid.bs.carousel';\n\nconst EXTENDED_EVENTS = [\n { name: 'slide', parametersToCopy: ['relatedTarget', 'direction', 'from', 'to'] },\n { name: 'slid', parametersToCopy: ['relatedTarget', 'direction', 'from', 'to'] },\n];\n\nclass Carousel extends BSCarousel {\n constructor(element, data) {\n super(element, data);\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_SLIDE_BS);\n EventHandler.off(this._element, EVENT_SLID_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindMdbEvents();\n }\n\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n}\n\nexport default Carousel;\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: [],\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href',\n]);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList\n .filter((attributeRegex) => attributeRegex instanceof RegExp)\n .some((regex) => regex.test(attributeName));\n};\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js';\nimport Config from './config.js';\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js';\nimport { execute, getElement, isElement } from './index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory';\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>',\n};\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string',\n};\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)',\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map((config) => this._resolvePossibleFunction(config))\n .filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n this._config.content = { ...this._config.content, ...content };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize\n ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn)\n : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n}\n\nexport default TemplateFactory;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core';\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport Manipulator from './dom/manipulator.js';\nimport {\n defineJQueryPlugin,\n execute,\n findShadowRoot,\n getElement,\n getUID,\n isRTL,\n noop,\n} from './util/index.js';\nimport { DefaultAllowlist } from './util/sanitizer.js';\nimport TemplateFactory from './util/template-factory.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\n\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW = 'show';\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\n\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\n\nconst EVENT_HIDE = 'hide';\nconst EVENT_HIDDEN = 'hidden';\nconst EVENT_SHOW = 'show';\nconst EVENT_SHOWN = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK = 'click';\nconst EVENT_FOCUSIN = 'focusin';\nconst EVENT_FOCUSOUT = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left',\n};\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template:\n '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus',\n};\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org)\");\n }\n\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n\n EventHandler.off(\n this._element.closest(SELECTOR_MODAL),\n EVENT_MODAL_HIDE,\n this._hideModalHandler\n );\n\n if (this._element.getAttribute('data-mdb-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-mdb-original-title'));\n }\n\n this._disposePopper();\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(\n this._element\n );\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const { container } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n this._popper = this._createPopper(tip);\n\n tip.classList.add(CLASS_NAME_SHOW);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE));\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n this._disposePopper();\n }\n\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN));\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n\n const tipId = getUID(this.constructor.NAME).toString();\n\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass),\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle(),\n };\n }\n\n _getTitle() {\n return (\n this._resolvePossibleFunction(this._config.title) ||\n this._element.getAttribute('data-mdb-original-title')\n );\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE));\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW);\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const { offset } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map((value) => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return (popperData) => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements,\n },\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset(),\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary,\n },\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`,\n },\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: (data) => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n },\n },\n ],\n };\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig]),\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(\n this._element,\n this.constructor.eventName(EVENT_CLICK),\n this._config.selector,\n (event) => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n }\n );\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn =\n trigger === TRIGGER_HOVER\n ? this.constructor.eventName(EVENT_MOUSEENTER)\n : this.constructor.eventName(EVENT_FOCUSIN);\n const eventOut =\n trigger === TRIGGER_HOVER\n ? this.constructor.eventName(EVENT_MOUSELEAVE)\n : this.constructor.eventName(EVENT_FOCUSOUT);\n\n EventHandler.on(this._element, eventIn, this._config.selector, (event) => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, (event) => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(\n this._element.closest(SELECTOR_MODAL),\n EVENT_MODAL_HIDE,\n this._hideModalHandler\n );\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-mdb-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {}),\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay,\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Tooltip)\n\nexport default Tooltip;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js';\nimport { defineJQueryPlugin } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'popover';\n\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template:\n '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\n trigger: 'click',\n};\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)',\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent(),\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Popover)\n\nexport default Popover;\n","import EventHandler from '../mdb/dom/event-handler';\nimport BSPopover from '../bootstrap/mdb-prefix/popover';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover';\n\nconst EVENT_SHOW_BS = 'show.bs.popover';\nconst EVENT_SHOWN_BS = 'shown.bs.popover';\nconst EVENT_HIDE_BS = 'hide.bs.popover';\nconst EVENT_HIDDEN_BS = 'hidden.bs.popover';\nconst EVENT_INSERTED_BS = 'inserted.bs.popover';\n\nconst EXTENDED_EVENTS = [\n { name: 'show' },\n { name: 'shown' },\n { name: 'hide' },\n { name: 'hidden' },\n { name: 'inserted' },\n];\n\nclass Popover extends BSPopover {\n constructor(element, data) {\n super(element, data);\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this.element, EVENT_SHOW_BS);\n EventHandler.off(this.element, EVENT_SHOWN_BS);\n EventHandler.off(this.element, EVENT_HIDE_BS);\n EventHandler.off(this.element, EVENT_HIDDEN_BS);\n EventHandler.off(this.element, EVENT_INSERTED_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindMdbEvents();\n }\n\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n}\n\nexport default Popover;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy';\nconst DATA_KEY = 'bs.scrollspy';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`;\nconst EVENT_CLICK = `click${EVENT_KEY}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE = 'active';\n\nconst SELECTOR_DATA_SPY = '[data-mdb-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1],\n};\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array',\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n if (!this._config.target) {\n return;\n }\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement =\n getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0,\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n if (this._observer) {\n this._observer.disconnect();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map((value) => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin,\n };\n\n return new IntersectionObserver((entries) => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);\n const activate = (entry) => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious =\n entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE);\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(\n SELECTOR_DROPDOWN_TOGGLE,\n target.closest(SELECTOR_DROPDOWN)\n ).classList.add(CLASS_NAME_ACTIVE);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE);\n\n const activeNodes = SelectorEngine.find(\n `${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`,\n parent\n );\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n// for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n// ScrollSpy.getOrCreateInstance(spy)\n// }\n// })\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy;\n","import EventHandler from '../mdb/dom/event-handler';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Manipulator from '../mdb/dom/manipulator';\nimport BSScrollSpy from '../bootstrap/mdb-prefix/scrollspy';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_ACTIVATE_BS = 'activate.bs.scrollspy';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`;\n\nconst CLASS_COLLAPSIBLE = 'collapsible-scrollspy';\nconst CLASS_ACTIVE = 'active';\n\nconst SELECTOR_LIST = 'ul';\nconst SELECTOR_ACTIVE = `.${CLASS_ACTIVE}`;\nconst SELECTOR_COLLAPSIBLE_SCROLLSPY = `.${CLASS_COLLAPSIBLE}`;\n\nclass ScrollSpy extends BSScrollSpy {\n constructor(element, data) {\n super(element, data);\n\n this._collapsibles = [];\n this._init();\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_ACTIVATE_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindActivateEvent();\n this._getCollapsibles();\n\n if (this._collapsibles.length === 0) {\n return;\n }\n\n this._showSubsection();\n this._hideSubsection();\n }\n\n _getHeight(element) {\n return element.offsetHeight;\n }\n\n _hide(target) {\n const itemsToHide = SelectorEngine.findOne(SELECTOR_LIST, target.parentNode);\n itemsToHide.style.overflow = 'hidden';\n itemsToHide.style.height = `${0}px`;\n }\n\n _show(target, destinedHeight) {\n target.style.height = destinedHeight;\n }\n\n _getCollapsibles() {\n const collapsibleElements = SelectorEngine.find(SELECTOR_COLLAPSIBLE_SCROLLSPY);\n\n if (!collapsibleElements) {\n return;\n }\n\n collapsibleElements.forEach((collapsibleElement) => {\n const listParent = collapsibleElement.parentNode;\n const list = SelectorEngine.findOne(SELECTOR_LIST, listParent);\n const listHeight = list.offsetHeight;\n this._collapsibles.push({\n element: list,\n relatedTarget: collapsibleElement.getAttribute('href'),\n height: `${listHeight}px`,\n });\n });\n }\n\n _showSubsection() {\n const activeElements = SelectorEngine.find(SELECTOR_ACTIVE);\n const actives = activeElements.filter((active) => {\n return Manipulator.hasClass(active, CLASS_COLLAPSIBLE);\n });\n\n actives.forEach((active) => {\n const list = SelectorEngine.findOne(SELECTOR_LIST, active.parentNode);\n const height = this._collapsibles.find((collapsible) => {\n return (collapsible.relatedTarget = active.getAttribute('href'));\n }).height;\n this._show(list, height);\n });\n }\n\n _hideSubsection() {\n const unactives = SelectorEngine.find(SELECTOR_COLLAPSIBLE_SCROLLSPY).filter((collapsible) => {\n return Manipulator.hasClass(collapsible, 'active') === false;\n });\n unactives.forEach((unactive) => {\n this._hide(unactive);\n });\n }\n\n _bindActivateEvent() {\n EventHandler.on(this._element, EVENT_ACTIVATE_BS, (e) => {\n this._showSubsection();\n this._hideSubsection();\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: e.relatedTarget,\n });\n });\n }\n}\n\nexport default ScrollSpy;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'tab';\nconst DATA_KEY = 'bs.tab';\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`;\n\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\n\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-tab-initialized]'; // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-mdb-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-mdb-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-mdb-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n\n if (!this._parent) {\n return;\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren());\n\n EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n\n const hideEvent = active\n ? EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem })\n : null;\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active });\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return;\n }\n\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW);\n return;\n }\n\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem,\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW);\n return;\n }\n\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));\n }\n\n _keydown(event) {\n if (\n ![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(\n event.key\n )\n ) {\n return;\n }\n\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault();\n\n const children = this._getChildren().filter((element) => !isDisabled(element));\n let nextActiveElement;\n\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n }\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n\n _getActiveElem() {\n return this._getChildren().find((child) => this._elemIsActive(child)) || null;\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n const isActive = this._elemIsActive(child);\n const outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab');\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child);\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child);\n\n if (!target) {\n return;\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW);\n outerElem.setAttribute('aria-expanded', open);\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM)\n ? elem\n : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n// if (['A', 'AREA'].includes(this.tagName)) {\n// event.preventDefault()\n// }\n\n// if (isDisabled(this)) {\n// return\n// }\n\n// Tab.getOrCreateInstance(this).show()\n// })\n\n/**\n * Initialize on focus\n */\n// EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n// for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n// Tab.getOrCreateInstance(element)\n// }\n// })\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Tab)\n\nexport default Tab;\n","import { getElementFromSelector } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport BSTab from '../bootstrap/mdb-prefix/tab';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_SHOW_BS = 'show.bs.tab';\nconst EVENT_SHOWN_BS = 'shown.bs.tab';\nconst EVENT_HIDE_BS = 'hide.bs.tab';\nconst EVENT_HIDDEN_BS = 'hidden.bs.tab';\n\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_SHOW = 'show';\n\nclass Tab extends BSTab {\n constructor(element) {\n super(element);\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_SHOW_BS);\n EventHandler.off(this._element, EVENT_SHOWN_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Override\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n\n let hideEvent = null;\n let hideEventMdb = null;\n\n if (active) {\n hideEvent = EventHandler.trigger(active, EVENT_HIDE_BS, { relatedTarget: innerElem });\n hideEventMdb = EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem });\n }\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW_BS, { relatedTarget: active });\n const showEventMdb = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active });\n\n if (\n showEvent.defaultPrevented ||\n showEventMdb.defaultPrevented ||\n (hideEvent && hideEvent.defaultPrevented) ||\n (hideEventMdb && hideEventMdb.defaultPrevented)\n ) {\n return;\n }\n\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n this._activate(getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW);\n return;\n }\n\n element.focus();\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN_BS, {\n relatedTarget: relatedElem,\n });\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem,\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n\n this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW);\n return;\n }\n\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN_BS, { relatedTarget: relatedElem });\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));\n }\n}\n\nexport default Tab;\n","import EventHandler from '../mdb/dom/event-handler';\nimport BSTooltip from '../bootstrap/mdb-prefix/tooltip';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip';\n\nconst EVENT_HIDE_BS = 'hide.bs.tooltip';\nconst EVENT_HIDDEN_BS = 'hidden.bs.tooltip';\nconst EVENT_SHOW_BS = 'show.bs.tooltip';\nconst EVENT_SHOWN_BS = 'shown.bs.tooltip';\nconst EVENT_INSERTED_BS = 'inserted.bs.tooltip';\n\nconst EXTENDED_EVENTS = [\n { name: 'show' },\n { name: 'shown' },\n { name: 'hide' },\n { name: 'hidden' },\n { name: 'inserted' },\n];\n\nclass Tooltip extends BSTooltip {\n constructor(element, data) {\n super(element, data);\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_SHOW_BS);\n EventHandler.off(this._element, EVENT_SHOWN_BS);\n EventHandler.off(this._element, EVENT_HIDE_BS);\n EventHandler.off(this._element, EVENT_HIDDEN_BS);\n EventHandler.off(this._element, EVENT_INSERTED_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindMdbEvents();\n }\n\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n}\n\nexport default Tooltip;\n","(()=>{var e={454:(e,t,n)=>{\"use strict\";n.d(t,{Z:()=>a});var r=n(645),o=n.n(r)()((function(e){return e[1]}));o.push([e.id,\"INPUT:-webkit-autofill,SELECT:-webkit-autofill,TEXTAREA:-webkit-autofill{animation-name:onautofillstart}INPUT:not(:-webkit-autofill),SELECT:not(:-webkit-autofill),TEXTAREA:not(:-webkit-autofill){animation-name:onautofillcancel}@keyframes onautofillstart{}@keyframes onautofillcancel{}\",\"\"]);const a=o},645:e=>{\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?\"@media \".concat(t[2],\" {\").concat(n,\"}\"):n})).join(\"\")},t.i=function(e,n,r){\"string\"==typeof e&&(e=[[null,e,\"\"]]);var o={};if(r)for(var a=0;a<this.length;a++){var i=this[a][0];null!=i&&(o[i]=!0)}for(var u=0;u<e.length;u++){var c=[].concat(e[u]);r&&o[c[0]]||(n&&(c[2]?c[2]=\"\".concat(n,\" and \").concat(c[2]):c[2]=n),t.push(c))}},t}},810:()=>{!function(){if(\"undefined\"!=typeof window)try{var e=new window.CustomEvent(\"test\",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error(\"Could not prevent default\")}catch(e){var t=function(e,t){var n,r;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent(\"CustomEvent\")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r=n.preventDefault,n.preventDefault=function(){r.call(this);try{Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}()},379:(e,t,n)=>{\"use strict\";var r,o=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function i(e){for(var t=-1,n=0;n<a.length;n++)if(a[n].identifier===e){t=n;break}return t}function u(e,t){for(var n={},r=[],o=0;o<e.length;o++){var u=e[o],c=t.base?u[0]+t.base:u[0],l=n[c]||0,s=\"\".concat(c,\" \").concat(l);n[c]=l+1;var d=i(s),f={css:u[1],media:u[2],sourceMap:u[3]};-1!==d?(a[d].references++,a[d].updater(f)):a.push({identifier:s,updater:m(f,t),references:1}),r.push(s)}return r}function c(e){var t=document.createElement(\"style\"),r=e.attributes||{};if(void 0===r.nonce){var a=n.nc;a&&(r.nonce=a)}if(Object.keys(r).forEach((function(e){t.setAttribute(e,r[e])})),\"function\"==typeof e.insert)e.insert(t);else{var i=o(e.insert||\"head\");if(!i)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");i.appendChild(t)}return t}var l,s=(l=[],function(e,t){return l[e]=t,l.filter(Boolean).join(\"\\n\")});function d(e,t,n,r){var o=n?\"\":r.media?\"@media \".concat(r.media,\" {\").concat(r.css,\"}\"):r.css;if(e.styleSheet)e.styleSheet.cssText=s(t,o);else{var a=document.createTextNode(o),i=e.childNodes;i[t]&&e.removeChild(i[t]),i.length?e.insertBefore(a,i[t]):e.appendChild(a)}}function f(e,t,n){var r=n.css,o=n.media,a=n.sourceMap;if(o?e.setAttribute(\"media\",o):e.removeAttribute(\"media\"),a&&\"undefined\"!=typeof btoa&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))),\" */\")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var v=null,p=0;function m(e,t){var n,r,o;if(t.singleton){var a=p++;n=v||(v=c(t)),r=d.bind(null,n,a,!1),o=d.bind(null,n,a,!0)}else n=c(t),r=f.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||\"boolean\"==typeof t.singleton||(t.singleton=(void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r));var n=u(e=e||[],t);return function(e){if(e=e||[],\"[object Array]\"===Object.prototype.toString.call(e)){for(var r=0;r<n.length;r++){var o=i(n[r]);a[o].references--}for(var c=u(e,t),l=0;l<n.length;l++){var s=i(n[l]);0===a[s].references&&(a[s].updater(),a.splice(s,1))}n=c}}}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={id:r,exports:{}};return e[r](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{\"use strict\";var e=n(379),t=n.n(e),r=n(454);function o(e){if(!e.hasAttribute(\"autocompleted\")){e.setAttribute(\"autocompleted\",\"\");var t=new window.CustomEvent(\"onautocomplete\",{bubbles:!0,cancelable:!0,detail:null});e.dispatchEvent(t)||(e.value=\"\")}}function a(e){e.hasAttribute(\"autocompleted\")&&(e.removeAttribute(\"autocompleted\"),e.dispatchEvent(new window.CustomEvent(\"onautocomplete\",{bubbles:!0,cancelable:!1,detail:null})))}t()(r.Z,{insert:\"head\",singleton:!1}),r.Z.locals,n(810),document.addEventListener(\"animationstart\",(function(e){\"onautofillstart\"===e.animationName?o(e.target):a(e.target)}),!0),document.addEventListener(\"input\",(function(e){\"insertReplacementText\"!==e.inputType&&\"data\"in e?a(e.target):o(e.target)}),!0)})()})();","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from '../mdb/dom/data';\nimport { getElement } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n// const VERSION = '5.1.3';\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n Data.setData(this._element, this.constructor.DATA_KEY, this);\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n Object.getOwnPropertyNames(this).forEach((propertyName) => {\n this[propertyName] = null;\n });\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return (\n this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n );\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n static get DATA_KEY() {\n return `mdb.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n}\n\nexport default BaseComponent;\n","import { element, onDOMContentLoaded } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport 'detect-autofill';\nimport BaseComponent from './base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'input';\nconst DATA_KEY = 'mdb.input';\nconst CLASSNAME_ACTIVE = 'active';\nconst CLASSNAME_NOTCH = 'form-notch';\nconst CLASSNAME_NOTCH_LEADING = 'form-notch-leading';\nconst CLASSNAME_NOTCH_MIDDLE = 'form-notch-middle';\nconst CLASSNAME_NOTCH_TRAILING = 'form-notch-trailing';\nconst CLASSNAME_PLACEHOLDER_ACTIVE = 'placeholder-active';\nconst CLASSNAME_HELPER = 'form-helper';\nconst CLASSNAME_COUNTER = 'form-counter';\n\nconst SELECTOR_NOTCH = `.${CLASSNAME_NOTCH}`;\nconst SELECTOR_NOTCH_LEADING = `.${CLASSNAME_NOTCH_LEADING}`;\nconst SELECTOR_NOTCH_MIDDLE = `.${CLASSNAME_NOTCH_MIDDLE}`;\nconst SELECTOR_HELPER = `.${CLASSNAME_HELPER}`;\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Input extends BaseComponent {\n constructor(element) {\n super(element);\n\n this._label = null;\n this._labelWidth = 0;\n this._labelMarginLeft = 0;\n this._notchLeading = null;\n this._notchMiddle = null;\n this._notchTrailing = null;\n this._initiated = false;\n this._helper = null;\n this._counter = false;\n this._counterElement = null;\n this._maxLength = 0;\n this._leadingIcon = null;\n if (this._element) {\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n get input() {\n const inputElement =\n SelectorEngine.findOne('input', this._element) ||\n SelectorEngine.findOne('textarea', this._element);\n return inputElement;\n }\n\n // Public\n init() {\n if (this._initiated) {\n return;\n }\n this._getLabelData();\n this._applyDivs();\n this._applyNotch();\n this._activate();\n this._getHelper();\n this._getCounter();\n this._initiated = true;\n }\n\n update() {\n this._getLabelData();\n this._getNotchData();\n this._applyNotch();\n this._activate();\n this._getHelper();\n this._getCounter();\n }\n\n forceActive() {\n Manipulator.addClass(this.input, CLASSNAME_ACTIVE);\n }\n\n forceInactive() {\n Manipulator.removeClass(this.input, CLASSNAME_ACTIVE);\n }\n\n dispose() {\n this._removeBorder();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n\n /*\n _getIcons() {\n this._leadingIcon = SelectorEngine.findOne('i.leading', this._element);\n\n if (this._leadingIcon !== null) {\n this._applyLeadingIcon();\n }\n }\n\n _applyLeadingIcon() {\n this._label.innerHTML = ` ${this._label.innerHTML}`;\n this._label.insertBefore(this._leadingIcon, this._label.firstChild);\n }\n */\n\n _getLabelData() {\n this._label = SelectorEngine.findOne('label', this._element);\n if (this._label === null) {\n this._showPlaceholder();\n } else {\n this._getLabelWidth();\n this._getLabelPositionInInputGroup();\n this._toggleDefaultDatePlaceholder();\n }\n }\n\n _getHelper() {\n this._helper = SelectorEngine.findOne(SELECTOR_HELPER, this._element);\n }\n\n _getCounter() {\n this._counter = Manipulator.getDataAttribute(this.input, 'showcounter');\n if (this._counter) {\n this._maxLength = this.input.maxLength;\n this._showCounter();\n }\n }\n\n _showCounter() {\n const counters = SelectorEngine.find('.form-counter', this._element);\n if (counters.length > 0) {\n return;\n }\n this._counterElement = document.createElement('div');\n Manipulator.addClass(this._counterElement, CLASSNAME_COUNTER);\n const actualLength = this.input.value.length;\n this._counterElement.innerHTML = `${actualLength} / ${this._maxLength}`;\n this._helper.appendChild(this._counterElement);\n this._bindCounter();\n }\n\n _bindCounter() {\n EventHandler.on(this.input, 'input', () => {\n const actualLength = this.input.value.length;\n this._counterElement.innerHTML = `${actualLength} / ${this._maxLength}`;\n });\n }\n\n _toggleDefaultDatePlaceholder(input = this.input) {\n const type = input.getAttribute('type');\n const typesWithPlaceholder = ['date', 'time', 'datetime-local', 'month', 'week'];\n\n if (!typesWithPlaceholder.includes(type)) {\n return;\n }\n\n const isInputFocused = document.activeElement === input;\n\n if (!isInputFocused && !input.value) {\n input.style.opacity = 0;\n } else {\n input.style.opacity = 1;\n }\n }\n\n _showPlaceholder() {\n Manipulator.addClass(this.input, CLASSNAME_PLACEHOLDER_ACTIVE);\n }\n\n _getNotchData() {\n this._notchMiddle = SelectorEngine.findOne(SELECTOR_NOTCH_MIDDLE, this._element);\n this._notchLeading = SelectorEngine.findOne(SELECTOR_NOTCH_LEADING, this._element);\n }\n\n _getLabelWidth() {\n this._labelWidth = this._label.clientWidth * 0.8 + 8;\n }\n\n _getLabelPositionInInputGroup() {\n this._labelMarginLeft = 0;\n\n if (!this._element.classList.contains('input-group')) return;\n const input = this.input;\n const prefix = SelectorEngine.prev(input, '.input-group-text')[0];\n if (prefix === undefined) {\n this._labelMarginLeft = 0;\n } else {\n this._labelMarginLeft = prefix.offsetWidth - 1;\n }\n }\n\n _applyDivs() {\n const allNotchWrappers = SelectorEngine.find(SELECTOR_NOTCH, this._element);\n const notchWrapper = element('div');\n Manipulator.addClass(notchWrapper, CLASSNAME_NOTCH);\n this._notchLeading = element('div');\n Manipulator.addClass(this._notchLeading, CLASSNAME_NOTCH_LEADING);\n this._notchMiddle = element('div');\n Manipulator.addClass(this._notchMiddle, CLASSNAME_NOTCH_MIDDLE);\n this._notchTrailing = element('div');\n Manipulator.addClass(this._notchTrailing, CLASSNAME_NOTCH_TRAILING);\n if (allNotchWrappers.length >= 1) {\n return;\n }\n notchWrapper.append(this._notchLeading);\n notchWrapper.append(this._notchMiddle);\n notchWrapper.append(this._notchTrailing);\n this._element.append(notchWrapper);\n }\n\n _applyNotch() {\n this._notchMiddle.style.width = `${this._labelWidth}px`;\n this._notchLeading.style.width = `${this._labelMarginLeft + 9}px`;\n\n if (this._label === null) return;\n this._label.style.marginLeft = `${this._labelMarginLeft}px`;\n }\n\n _removeBorder() {\n const border = SelectorEngine.findOne(SELECTOR_NOTCH, this._element);\n if (border) border.remove();\n }\n\n _activate(event) {\n onDOMContentLoaded(() => {\n this._getElements(event);\n\n if (!this._element) {\n return;\n }\n\n const input = event ? event.target : this.input;\n\n if (input.value !== '') {\n Manipulator.addClass(input, CLASSNAME_ACTIVE);\n }\n this._toggleDefaultDatePlaceholder(input);\n });\n }\n\n _getElements(event) {\n let initialized;\n if (event) {\n this._element = event.target.parentNode;\n this._label = SelectorEngine.findOne('label', this._element);\n\n initialized = Manipulator.getDataAttribute(\n this._element,\n `${this.constructor.NAME}-initialized`\n );\n }\n\n if (!initialized) {\n return;\n }\n\n if (event && this._label) {\n const prevLabelWidth = this._labelWidth;\n this._getLabelData();\n\n if (prevLabelWidth !== this._labelWidth) {\n this._notchMiddle = SelectorEngine.findOne('.form-notch-middle', event.target.parentNode);\n this._notchLeading = SelectorEngine.findOne(\n SELECTOR_NOTCH_LEADING,\n event.target.parentNode\n );\n this._applyNotch();\n }\n }\n }\n\n _deactivate(event) {\n const input = event ? event.target : this.input;\n\n if (input.value === '') {\n input.classList.remove(CLASSNAME_ACTIVE);\n }\n this._toggleDefaultDatePlaceholder(input);\n }\n\n static activate(instance) {\n return function (event) {\n instance._activate(event);\n };\n }\n\n static deactivate(instance) {\n return function (event) {\n instance._deactivate(event);\n };\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data && /dispose/.test(config)) {\n return;\n }\n if (!data) {\n data = new Input(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](options);\n }\n });\n }\n}\n\nexport default Input;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport { defineJQueryPlugin, getElement, reflow } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse';\nconst DATA_KEY = 'bs.collapse';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-collapse-init]';\n\nconst Default = {\n parent: null,\n toggle: true,\n};\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean',\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n this._isTransitioning = false;\n this._triggerArray = [];\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(\n (foundElement) => foundElement === this._element\n );\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter((element) => element !== this._element)\n .map((element) => Collapse.getOrCreateInstance(element, { toggle: false }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n this._element.style[dimension] = '';\n\n EventHandler.trigger(this._element, EVENT_SHOWN);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(\n (element) => !children.includes(element)\n );\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n// // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n// if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n// event.preventDefault()\n// }\n\n// for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n// Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n// }\n// })\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Collapse)\n\nexport default Collapse;\n","import EventHandler from '../mdb/dom/event-handler';\nimport BSCollapse from '../bootstrap/mdb-prefix/collapse';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse';\n\nconst EVENT_SHOW_BS = 'show.bs.collapse';\nconst EVENT_SHOWN_BS = 'shown.bs.collapse';\nconst EVENT_HIDE_BS = 'hide.bs.collapse';\nconst EVENT_HIDDEN_BS = 'hidden.bs.collapse';\n\nconst EXTENDED_EVENTS = [{ name: 'show' }, { name: 'shown' }, { name: 'hide' }, { name: 'hidden' }];\n\nclass Collapse extends BSCollapse {\n constructor(element, data = {}) {\n super(element, data);\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_SHOW_BS);\n EventHandler.off(this._element, EVENT_SHOWN_BS);\n EventHandler.off(this._element, EVENT_HIDE_BS);\n EventHandler.off(this._element, EVENT_HIDDEN_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindMdbEvents();\n }\n\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n}\n\nexport default Collapse;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core';\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport Manipulator from './dom/manipulator.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n} from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown';\nconst DATA_KEY = 'bs.dropdown';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\n\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-dropdown-initialized]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle',\n};\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)',\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu =\n SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element,\n };\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW);\n this._element.classList.add(CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element,\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW);\n this._element.classList.remove(CLASS_NAME_SHOW);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (\n typeof config.reference === 'object' &&\n !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(\n `${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`\n );\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--mdb-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const { offset } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map((value) => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return (popperData) => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary,\n },\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset(),\n },\n },\n ],\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [\n {\n name: 'applyStyles',\n enabled: false,\n },\n ];\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig]),\n };\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) =>\n isVisible(element)\n );\n\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (\n context._menu.contains(event.target) &&\n ((event.type === 'keyup' && event.key === TAB_KEY) ||\n /input|select|option|textarea|form/i.test(event.target.tagName))\n ) {\n continue;\n }\n\n const relatedTarget = { relatedTarget: context._element };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY;\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE)\n ? this\n : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode);\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\n// EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\n// EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\n// EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n// event.preventDefault()\n// Dropdown.getOrCreateInstance(this).toggle()\n// })\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Dropdown)\n\nexport default Dropdown;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport BSDropdown from '../bootstrap/mdb-prefix/dropdown';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n dropdownAnimation: 'on',\n};\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n dropdownAnimation: 'string',\n};\n\nconst EVENT_HIDE = 'hide.bs.dropdown';\nconst EVENT_HIDDEN = 'hidden.bs.dropdown';\nconst EVENT_SHOW = 'show.bs.dropdown';\nconst EVENT_SHOWN = 'shown.bs.dropdown';\n\nconst EVENT_HIDE_MDB = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN_MDB = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW_MDB = `show${EVENT_KEY}`;\nconst EVENT_SHOWN_MDB = `shown${EVENT_KEY}`;\n\nconst ANIMATION_CLASS = 'animation';\nconst ANIMATION_SHOW_CLASS = 'fade-in';\nconst ANIMATION_HIDE_CLASS = 'fade-out';\n\nclass Dropdown extends BSDropdown {\n constructor(element, data) {\n super(element, data);\n this._config = this._getConfig(data);\n this._menuStyle = '';\n this._popperPlacement = '';\n this._mdbPopperConfig = '';\n\n //* prevents dropdown close issue when system animation is turned off\n const isPrefersReducedMotionSet = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n if (this._config.dropdownAnimation === 'on' && !isPrefersReducedMotionSet) {\n this._init();\n }\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_SHOW);\n EventHandler.off(this._parent, EVENT_SHOWN);\n EventHandler.off(this._parent, EVENT_HIDE);\n EventHandler.off(this._parent, EVENT_HIDDEN);\n\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindShowEvent();\n this._bindShownEvent();\n this._bindHideEvent();\n this._bindHiddenEvent();\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _getOffset() {\n const { offset } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map((val) => Number.parseInt(val, 10));\n }\n\n if (typeof offset === 'function') {\n return (popperData) => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary,\n },\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset(),\n },\n },\n ],\n };\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static');\n popperConfig.modifiers = [\n {\n name: 'applyStyles',\n enabled: false,\n },\n ];\n }\n\n return {\n ...popperConfig,\n /* eslint no-extra-parens: \"off\" */\n ...(typeof this._config.popperConfig === 'function'\n ? this._config.popperConfig(popperConfig)\n : this._config.popperConfig),\n };\n }\n\n _bindShowEvent() {\n EventHandler.on(this._element, EVENT_SHOW, (e) => {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW_MDB, {\n relatedTarget: e.relatedTarget,\n });\n\n if (showEvent.defaultPrevented) {\n e.preventDefault();\n return;\n }\n\n this._dropdownAnimationStart('show');\n });\n }\n\n _bindShownEvent() {\n EventHandler.on(this._parent, EVENT_SHOWN, (e) => {\n const shownEvent = EventHandler.trigger(this._parent, EVENT_SHOWN_MDB, {\n relatedTarget: e.relatedTarget,\n });\n\n if (shownEvent.defaultPrevented) {\n e.preventDefault();\n return;\n }\n });\n }\n\n _bindHideEvent() {\n EventHandler.on(this._parent, EVENT_HIDE, (e) => {\n const hideEvent = EventHandler.trigger(this._parent, EVENT_HIDE_MDB, {\n relatedTarget: e.relatedTarget,\n });\n\n if (hideEvent.defaultPrevented) {\n e.preventDefault();\n return;\n }\n\n this._menuStyle = this._menu.style.cssText;\n this._popperPlacement = this._menu.getAttribute('data-popper-placement');\n this._mdbPopperConfig = this._menu.getAttribute('data-mdb-popper');\n });\n }\n\n _bindHiddenEvent() {\n EventHandler.on(this._parent, EVENT_HIDDEN, (e) => {\n const hiddenEvent = EventHandler.trigger(this._parent, EVENT_HIDDEN_MDB, {\n relatedTarget: e.relatedTarget,\n });\n\n if (hiddenEvent.defaultPrevented) {\n e.preventDefault();\n return;\n }\n\n if (this._config.display !== 'static' && this._menuStyle !== '') {\n this._menu.style.cssText = this._menuStyle;\n }\n\n this._menu.setAttribute('data-popper-placement', this._popperPlacement);\n this._menu.setAttribute('data-mdb-popper', this._mdbPopperConfig);\n\n this._dropdownAnimationStart('hide');\n });\n }\n\n _dropdownAnimationStart(action) {\n switch (action) {\n case 'show':\n this._menu.classList.add(ANIMATION_CLASS, ANIMATION_SHOW_CLASS);\n this._menu.classList.remove(ANIMATION_HIDE_CLASS);\n break;\n default:\n // hide\n this._menu.classList.add(ANIMATION_CLASS, ANIMATION_HIDE_CLASS);\n this._menu.classList.remove(ANIMATION_SHOW_CLASS);\n break;\n }\n\n this._bindAnimationEnd();\n }\n\n _bindAnimationEnd() {\n EventHandler.one(this._menu, 'animationend', () => {\n this._menu.classList.remove(ANIMATION_CLASS, ANIMATION_HIDE_CLASS, ANIMATION_SHOW_CLASS);\n });\n }\n}\n\nexport default Dropdown;\n","import { element, typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BaseComponent from './base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'ripple';\nconst DATA_KEY = 'mdb.ripple';\nconst CLASSNAME_RIPPLE = 'ripple-surface';\nconst CLASSNAME_RIPPLE_WAVE = 'ripple-wave';\nconst CLASSNAME_RIPPLE_WRAPPER = 'input-wrapper';\nconst SELECTOR_BTN = '.btn';\nconst SELECTOR_COMPONENT = [SELECTOR_BTN, `[data-mdb-${NAME}-init]`];\n\nconst CLASSNAME_UNBOUND = 'ripple-surface-unbound';\nconst GRADIENT =\n 'rgba({{color}}, 0.2) 0, rgba({{color}}, 0.3) 40%, rgba({{color}}, 0.4) 50%, rgba({{color}}, 0.5) 60%, rgba({{color}}, 0) 70%';\nconst DEFAULT_RIPPLE_COLOR = [0, 0, 0];\nconst BOOTSTRAP_COLORS = [\n 'primary',\n 'secondary',\n 'success',\n 'danger',\n 'warning',\n 'info',\n 'light',\n 'dark',\n];\n\n// Sets value when run opacity transition\n// Hide element after 50% (0.5) time of animation and finish on 100%\nconst TRANSITION_BREAK_OPACITY = 0.5;\n\nconst Default = {\n rippleCentered: false,\n rippleColor: '',\n rippleDuration: '500ms',\n rippleRadius: 0,\n rippleUnbound: false,\n};\n\nconst DefaultType = {\n rippleCentered: 'boolean',\n rippleColor: 'string',\n rippleDuration: 'string',\n rippleRadius: 'number',\n rippleUnbound: 'boolean',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Ripple extends BaseComponent {\n constructor(element, options) {\n super(element);\n this._options = this._getConfig(options);\n\n if (this._element) {\n Manipulator.addClass(this._element, CLASSNAME_RIPPLE);\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n this._clickHandler = this._createRipple.bind(this);\n this._rippleTimer = null;\n this._isMinWidthSet = false;\n this._rippleInSpan = false;\n\n this.init();\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n\n init() {\n this._addClickEvent(this._element);\n }\n\n dispose() {\n EventHandler.off(this._element, 'mousedown', this._clickHandler);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n\n _autoInit(event) {\n SELECTOR_COMPONENT.forEach((selector) => {\n const target = SelectorEngine.closest(event.target, selector);\n if (target) {\n this._element = SelectorEngine.closest(event.target, selector);\n }\n });\n\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n if (this._element.classList.contains('btn') && dataAttributes.rippleInit === false) {\n return;\n }\n\n this._options = this._getConfig();\n\n if (this._element.tagName.toLowerCase() === 'input') {\n const parent = this._element.parentNode;\n\n this._rippleInSpan = true;\n\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains(CLASSNAME_RIPPLE)) {\n this._element = parent;\n } else {\n const shadow = getComputedStyle(this._element).boxShadow;\n const btn = this._element;\n const wrapper = document.createElement('span');\n\n if (btn.classList.contains('btn-block')) {\n wrapper.style.display = 'block';\n }\n\n EventHandler.one(wrapper, 'mouseup', (e) => {\n // prevent submit on click other than LMB, ripple still triggered, but submit is blocked\n if (e.button === 0) {\n btn.click();\n }\n });\n\n wrapper.classList.add(CLASSNAME_RIPPLE, CLASSNAME_RIPPLE_WRAPPER);\n\n Manipulator.addStyle(wrapper, {\n border: 0,\n 'box-shadow': shadow,\n });\n\n // Put element as child\n parent.replaceChild(wrapper, this._element);\n wrapper.appendChild(this._element);\n this._element = wrapper;\n }\n this._element.focus();\n }\n\n if (!this._element.style.minWidth) {\n Manipulator.style(this._element, { 'min-width': `${getComputedStyle(this._element).width}` });\n this._isMinWidthSet = true;\n }\n\n Manipulator.addClass(this._element, CLASSNAME_RIPPLE);\n this._createRipple(event);\n }\n\n _addClickEvent(target) {\n EventHandler.on(target, 'mousedown', this._clickHandler);\n }\n\n _getEventLayer(event) {\n const x = Math.round(event.clientX - event.target.getBoundingClientRect().x);\n const y = Math.round(event.clientY - event.target.getBoundingClientRect().y);\n return { layerX: x, layerY: y };\n }\n\n _createRipple(event) {\n if (this._element === null) {\n return;\n }\n\n if (!Manipulator.hasClass(this._element, CLASSNAME_RIPPLE)) {\n Manipulator.addClass(this._element, CLASSNAME_RIPPLE);\n }\n\n const { layerX, layerY } = this._getEventLayer(event);\n const offsetX = layerX;\n const offsetY = layerY;\n const height = this._element.offsetHeight;\n const width = this._element.offsetWidth;\n const duration = this._durationToMsNumber(this._options.rippleDuration);\n const diameterOptions = {\n offsetX: this._options.rippleCentered ? height / 2 : offsetX,\n offsetY: this._options.rippleCentered ? width / 2 : offsetY,\n height,\n width,\n };\n const diameter = this._getDiameter(diameterOptions);\n const radiusValue = this._options.rippleRadius || diameter / 2;\n\n const opacity = {\n delay: duration * TRANSITION_BREAK_OPACITY,\n duration: duration - duration * TRANSITION_BREAK_OPACITY,\n };\n\n const styles = {\n left: this._options.rippleCentered\n ? `${width / 2 - radiusValue}px`\n : `${offsetX - radiusValue}px`,\n top: this._options.rippleCentered\n ? `${height / 2 - radiusValue}px`\n : `${offsetY - radiusValue}px`,\n height: `${this._options.rippleRadius * 2 || diameter}px`,\n width: `${this._options.rippleRadius * 2 || diameter}px`,\n transitionDelay: `0s, ${opacity.delay}ms`,\n transitionDuration: `${duration}ms, ${opacity.duration}ms`,\n };\n\n const rippleHTML = element('div');\n\n this._createHTMLRipple({ wrapper: this._element, ripple: rippleHTML, styles });\n this._removeHTMLRipple({ ripple: rippleHTML, duration });\n }\n\n _createHTMLRipple({ wrapper, ripple, styles }) {\n Object.keys(styles).forEach((property) => (ripple.style[property] = styles[property]));\n ripple.classList.add(CLASSNAME_RIPPLE_WAVE);\n if (this._options.rippleColor !== '') {\n this._removeOldColorClasses(wrapper);\n this._addColor(ripple, wrapper);\n }\n\n this._toggleUnbound(wrapper);\n this._appendRipple(ripple, wrapper);\n }\n\n _removeHTMLRipple({ ripple, duration }) {\n if (this._rippleTimer) {\n clearTimeout(this._rippleTimer);\n this._rippleTimer = null;\n }\n this._rippleTimer = setTimeout(() => {\n if (ripple) {\n ripple.remove();\n if (this._element) {\n SelectorEngine.find(`.${CLASSNAME_RIPPLE_WAVE}`, this._element).forEach((rippleEl) => {\n rippleEl.remove();\n });\n if (this._isMinWidthSet) {\n Manipulator.style(this._element, { 'min-width': '' });\n this._isMinWidthSet = false;\n }\n if (this._rippleInSpan && this._element.classList.contains(CLASSNAME_RIPPLE_WRAPPER)) {\n this._removeWrapperSpan();\n } else {\n Manipulator.removeClass(this._element, CLASSNAME_RIPPLE);\n }\n }\n }\n }, duration);\n }\n\n _removeWrapperSpan() {\n const child = this._element.firstChild;\n\n this._element.replaceWith(child);\n this._element = child;\n this._element.focus();\n this._rippleInSpan = false;\n }\n\n _durationToMsNumber(time) {\n return Number(time.replace('ms', '').replace('s', '000'));\n }\n\n _getConfig(config = {}) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _getDiameter({ offsetX, offsetY, height, width }) {\n const top = offsetY <= height / 2;\n const left = offsetX <= width / 2;\n const pythagorean = (sideA, sideB) => Math.sqrt(sideA ** 2 + sideB ** 2);\n\n const positionCenter = offsetY === height / 2 && offsetX === width / 2;\n // mouse position on the quadrants of the coordinate system\n const quadrant = {\n first: top === true && left === false,\n second: top === true && left === true,\n third: top === false && left === true,\n fourth: top === false && left === false,\n };\n\n const getCorner = {\n topLeft: pythagorean(offsetX, offsetY),\n topRight: pythagorean(width - offsetX, offsetY),\n bottomLeft: pythagorean(offsetX, height - offsetY),\n bottomRight: pythagorean(width - offsetX, height - offsetY),\n };\n\n let diameter = 0;\n\n if (positionCenter || quadrant.fourth) {\n diameter = getCorner.topLeft;\n } else if (quadrant.third) {\n diameter = getCorner.topRight;\n } else if (quadrant.second) {\n diameter = getCorner.bottomRight;\n } else if (quadrant.first) {\n diameter = getCorner.bottomLeft;\n }\n return diameter * 2;\n }\n\n _appendRipple(target, parent) {\n const FIX_ADD_RIPPLE_EFFECT = 50; // delay for active animations\n parent.appendChild(target);\n setTimeout(() => {\n Manipulator.addClass(target, 'active');\n }, FIX_ADD_RIPPLE_EFFECT);\n }\n\n _toggleUnbound(target) {\n if (this._options.rippleUnbound === true) {\n Manipulator.addClass(target, CLASSNAME_UNBOUND);\n } else {\n target.classList.remove(CLASSNAME_UNBOUND);\n }\n }\n\n _addColor(target, parent) {\n const IS_BOOTSTRAP_COLOR = BOOTSTRAP_COLORS.find(\n (color) => color === this._options.rippleColor.toLowerCase()\n );\n\n if (IS_BOOTSTRAP_COLOR) {\n Manipulator.addClass(\n parent,\n `${CLASSNAME_RIPPLE}-${this._options.rippleColor.toLowerCase()}`\n );\n } else {\n const rgbValue = this._colorToRGB(this._options.rippleColor).join(',');\n const gradientImage = GRADIENT.split('{{color}}').join(`${rgbValue}`);\n target.style.backgroundImage = `radial-gradient(circle, ${gradientImage})`;\n }\n }\n\n _removeOldColorClasses(target) {\n const REGEXP_CLASS_COLOR = new RegExp(`${CLASSNAME_RIPPLE}-[a-z]+`, 'gi');\n const PARENT_CLASSS_COLOR = target.classList.value.match(REGEXP_CLASS_COLOR) || [];\n PARENT_CLASSS_COLOR.forEach((className) => {\n target.classList.remove(className);\n });\n }\n\n _colorToRGB(color) {\n function hexToRgb(color) {\n const HEX_COLOR_LENGTH = 7;\n const IS_SHORT_HEX = color.length < HEX_COLOR_LENGTH;\n if (IS_SHORT_HEX) {\n color = `#${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}`;\n }\n return [\n parseInt(color.substr(1, 2), 16),\n parseInt(color.substr(3, 2), 16),\n parseInt(color.substr(5, 2), 16),\n ];\n }\n\n function namedColorsToRgba(color) {\n const tempElem = document.body.appendChild(document.createElement('fictum'));\n const flag = 'rgb(1, 2, 3)';\n tempElem.style.color = flag;\n if (tempElem.style.color !== flag) {\n return DEFAULT_RIPPLE_COLOR;\n }\n tempElem.style.color = color;\n if (tempElem.style.color === flag || tempElem.style.color === '') {\n return DEFAULT_RIPPLE_COLOR;\n } // color parse failed\n color = getComputedStyle(tempElem).color;\n document.body.removeChild(tempElem);\n return color;\n }\n\n function rgbaToRgb(color) {\n color = color.match(/[.\\d]+/g).map((a) => +Number(a));\n color.length = 3;\n return color;\n }\n\n if (color.toLowerCase() === 'transparent') {\n return DEFAULT_RIPPLE_COLOR;\n }\n if (color[0] === '#') {\n return hexToRgb(color);\n }\n if (color.indexOf('rgb') === -1) {\n color = namedColorsToRgba(color);\n }\n if (color.indexOf('rgb') === 0) {\n return rgbaToRgb(color);\n }\n\n return DEFAULT_RIPPLE_COLOR;\n }\n\n // Static\n static autoInitial(instance) {\n return function (event) {\n instance._autoInit(event);\n };\n }\n\n static jQueryInterface(options) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY);\n if (!data) {\n return new Ripple(this, options);\n }\n\n return null;\n });\n }\n}\n\nexport default Ripple;\n","import { element } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BaseComponent from './base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'range';\nconst DATA_KEY = 'mdb.range';\nconst CLASSNAME_THUMB = 'thumb';\nconst CLASSNAME_ACTIVE = 'thumb-active';\nconst CLASSNAME_THUMB_VALUE = 'thumb-value';\n\nconst SELECTOR_THUMB_VALUE = `.${CLASSNAME_THUMB_VALUE}`;\nconst SELECTOR_THUMB = `.${CLASSNAME_THUMB}`;\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Range extends BaseComponent {\n constructor(element) {\n super(element);\n\n this._initiated = false;\n this._thumb = null;\n\n if (this._element) {\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n get rangeInput() {\n return SelectorEngine.findOne('input[type=range]', this._element);\n }\n\n // Public\n init() {\n if (this._initiated) {\n return;\n }\n this._addThumb();\n this._thumbUpdate();\n this._handleEvents();\n this._initiated = true;\n }\n\n dispose() {\n this._disposeEvents();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _addThumb() {\n const RANGE_THUMB = element('span');\n Manipulator.addClass(RANGE_THUMB, CLASSNAME_THUMB);\n RANGE_THUMB.innerHTML = '<span class=\"thumb-value\"></span>';\n this._element.append(RANGE_THUMB);\n this._thumb = SelectorEngine.findOne(SELECTOR_THUMB, this._element);\n }\n\n _handleEvents() {\n EventHandler.on(this.rangeInput, 'mousedown', () => this._showThumb());\n EventHandler.on(this.rangeInput, 'mouseup', () => this._hideThumb());\n EventHandler.on(this.rangeInput, 'touchstart', () => this._showThumb());\n EventHandler.on(this.rangeInput, 'touchend', () => this._hideThumb());\n EventHandler.on(this.rangeInput, 'input', () => this._thumbUpdate());\n }\n\n _disposeEvents() {\n EventHandler.off(this.rangeInput, 'mousedown');\n EventHandler.off(this.rangeInput, 'mouseup');\n EventHandler.off(this.rangeInput, 'touchstart');\n EventHandler.off(this.rangeInput, 'touchend');\n EventHandler.off(this.rangeInput, 'input');\n }\n\n _showThumb() {\n Manipulator.addClass(this._thumb, CLASSNAME_ACTIVE);\n }\n\n _hideThumb() {\n Manipulator.removeClass(this._thumb, CLASSNAME_ACTIVE);\n }\n\n _thumbUpdate() {\n const rangeInput = this.rangeInput;\n const inputValue = rangeInput.value;\n const minValue = rangeInput.min ? rangeInput.min : 0;\n const maxValue = rangeInput.max ? rangeInput.max : 100;\n const thumbValue = SelectorEngine.findOne(SELECTOR_THUMB_VALUE, this._thumb);\n thumbValue.textContent = inputValue;\n const newValue = Number(((inputValue - minValue) * 100) / (maxValue - minValue));\n Manipulator.style(this._thumb, { left: `calc(${newValue}% + (${8 - newValue * 0.15}px))` });\n }\n // Static\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data && /dispose/.test(config)) {\n return;\n }\n if (!data) {\n data = new Range(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](options);\n }\n });\n }\n}\n\nexport default Range;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport EventHandler from '../mdb/dom/event-handler';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'animation';\n\nconst DefaultType = {\n animation: 'string',\n animationStart: 'string',\n animationShowOnLoad: 'boolean',\n onStart: '(null|function)',\n onEnd: '(null|function)',\n onHide: '(null|function)',\n onShow: '(null|function)',\n animationOnScroll: '(string)',\n animationOffset: '(number|string)',\n animationDelay: '(number|string)',\n animationDuration: '(number|string)',\n animationReverse: 'boolean',\n animationInterval: '(number|string)',\n animationRepeat: '(number|boolean)',\n animationReset: 'boolean',\n};\n\nconst Default = {\n animation: 'fade',\n animationStart: 'onClick',\n animationShowOnLoad: true,\n onStart: null,\n onEnd: null,\n onHide: null,\n onShow: null,\n animationOnScroll: 'once',\n animationOffset: 0,\n animationDelay: 0,\n animationDuration: 500,\n animationReverse: false,\n animationInterval: 0,\n animationRepeat: false,\n animationReset: false,\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Animate extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._animateElement = this._getAnimateElement();\n this._isFirstScroll = true;\n this._repeatAnimateOnScroll = true;\n this._options = this._getConfig(options);\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n init() {\n this._init();\n }\n\n startAnimation() {\n this._startAnimation();\n }\n\n stopAnimation() {\n this._clearAnimationClass();\n }\n\n changeAnimationType(animation) {\n this._options.animation = animation;\n }\n\n dispose() {\n EventHandler.off(this._element, 'mousedown');\n EventHandler.off(this._animateElement, 'animationend');\n EventHandler.off(window, 'scroll');\n EventHandler.off(this._element, 'mouseover');\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _init() {\n switch (this._options.animationStart) {\n case 'onHover':\n this._bindHoverEvents();\n break;\n case 'onLoad':\n this._startAnimation();\n break;\n case 'onScroll':\n this._bindScrollEvents();\n break;\n case 'onClick':\n this._bindClickEvents();\n break;\n default:\n break;\n }\n\n this._bindTriggerOnEndCallback();\n\n if (this._options.animationReset) {\n this._bindResetAnimationAfterFinish();\n }\n }\n\n _getAnimateElement() {\n const targetId = Manipulator.getDataAttribute(this._element, 'animation-target');\n return targetId ? SelectorEngine.find(targetId)[0] : this._element;\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._animateElement);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n _animateOnScroll() {\n const elementOffsetTop = Manipulator.offset(this._animateElement).top;\n const elementHeight = this._animateElement.offsetHeight;\n const windowHeight = window.innerHeight;\n const shouldBeVisible =\n elementOffsetTop + this._options.animationOffset <= windowHeight &&\n elementOffsetTop + this._options.animationOffset + elementHeight >= 0;\n const isElementVisible = this._animateElement.style.visibility === 'visible';\n\n switch (true) {\n case shouldBeVisible && this._isFirstScroll:\n this._isFirstScroll = false;\n this._startAnimation();\n break;\n case !shouldBeVisible && this._isFirstScroll:\n this._isFirstScroll = false;\n this._hideAnimateElement();\n break;\n case shouldBeVisible && !isElementVisible && this._repeatAnimateOnScroll:\n if (this._options.animationOnScroll !== 'repeat') {\n this._repeatAnimateOnScroll = false;\n }\n this._callback(this._options.onShow);\n this._showAnimateElement();\n this._startAnimation();\n break;\n case !shouldBeVisible && isElementVisible && this._repeatAnimateOnScroll:\n this._hideAnimateElement();\n this._clearAnimationClass();\n this._callback(this._options.onHide);\n break;\n default:\n break;\n }\n }\n\n _addAnimatedClass() {\n Manipulator.addClass(this._animateElement, 'animation');\n Manipulator.addClass(this._animateElement, this._options.animation);\n }\n\n _clearAnimationClass() {\n this._animateElement.classList.remove(this._options.animation, 'animation');\n }\n\n _removeInvisibleClass() {\n Manipulator.removeClass(this._animateElement, 'invisible');\n }\n\n _startAnimation() {\n this._callback(this._options.onStart);\n\n this._removeInvisibleClass();\n this._addAnimatedClass();\n\n if (this._options.animationRepeat && !this._options.animationInterval) {\n this._setAnimationRepeat();\n }\n\n if (this._options.animationReverse) {\n this._setAnimationReverse();\n }\n\n if (this._options.animationDelay) {\n this._setAnimationDelay();\n }\n\n if (this._options.animationDuration) {\n this._setAnimationDuration();\n }\n\n if (this._options.animationInterval) {\n this._setAnimationInterval();\n }\n }\n\n _setAnimationReverse() {\n Manipulator.style(this._animateElement, {\n animationIterationCount: this._options.animationRepeat === true ? 'infinite' : '2',\n animationDirection: 'alternate',\n });\n }\n\n _setAnimationDuration() {\n Manipulator.style(this._animateElement, {\n animationDuration: `${this._options.animationDuration}ms`,\n });\n }\n\n _setAnimationDelay() {\n Manipulator.style(this._animateElement, {\n animationDelay: `${this._options.animationDelay}ms`,\n });\n }\n\n _setAnimationRepeat() {\n Manipulator.style(this._animateElement, {\n animationIterationCount:\n this._options.animationRepeat === true ? 'infinite' : this._options.animationRepeat,\n });\n }\n\n _setAnimationInterval() {\n EventHandler.on(this._animateElement, 'animationend', () => {\n this._clearAnimationClass();\n setTimeout(() => {\n this._addAnimatedClass();\n }, this._options.animationInterval);\n });\n }\n\n _hideAnimateElement() {\n Manipulator.style(this._animateElement, { visibility: 'hidden' });\n }\n\n _showAnimateElement() {\n Manipulator.style(this._animateElement, { visibility: 'visible' });\n }\n\n _bindResetAnimationAfterFinish() {\n EventHandler.on(this._animateElement, 'animationend', () => {\n this._clearAnimationClass();\n });\n }\n\n _bindTriggerOnEndCallback() {\n EventHandler.on(this._animateElement, 'animationend', () => {\n this._callback(this._options.onEnd);\n });\n }\n\n _bindScrollEvents() {\n if (!this._options.animationShowOnLoad) {\n this._animateOnScroll();\n }\n\n EventHandler.on(window, 'scroll', () => {\n this._animateOnScroll();\n });\n }\n\n _bindClickEvents() {\n EventHandler.on(this._element, 'mousedown', () => {\n this._startAnimation();\n });\n }\n\n _bindHoverEvents() {\n EventHandler.one(this._element, 'mouseover', () => {\n this._startAnimation();\n });\n EventHandler.one(this._animateElement, 'animationend', () => {\n // wait after bind hoverEvents to prevent animation looping\n setTimeout(() => {\n this._bindHoverEvents();\n }, 100);\n });\n }\n\n _callback(fn) {\n if (fn instanceof Function) {\n fn();\n }\n }\n\n // Static\n static autoInit(instance) {\n instance._init();\n }\n\n static jQueryInterface(options) {\n const animate = new Animate(this[0], options);\n animate.init();\n }\n}\n\nexport default Animate;\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction 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}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction 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}\nfunction _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}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\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$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _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 merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _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$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\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 _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 _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\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};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst 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 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}\nfunction _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 almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _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}\nfunction _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}\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;\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}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _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)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _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 {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _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\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\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: [listener]\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}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction 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}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _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(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _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\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _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;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -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)\n ? 0.5 * t * t * t\n : 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)\n ? 0.5 * t * t * t * t\n : -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)\n ? 0.5 * t * t * t * t * t\n : 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\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 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)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 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 :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 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)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 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 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}\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}\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}\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}\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}\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}\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}\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}\nfunction index_esm(input) {\n return new Color(input);\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 : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction 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}\nclass Defaults {\n constructor(_descriptors) {\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 }\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}\nvar defaults = 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\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _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}\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 if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\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}\nfunction _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}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\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:\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 ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, 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 case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = 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 ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = 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 ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = 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 ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, 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) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.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}\nfunction _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}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\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 (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 += font.lineHeight;\n }\n ctx.restore();\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 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 addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction 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)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction 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}\nfunction 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 = '';\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}\nfunction 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}\nfunction _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\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _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 deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\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' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n 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];\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 value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, 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 value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\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 (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\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\n : 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 (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\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 = [...parentScopes, ...rootScopes];\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 (defined(fallback) && 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), [''], rootScopes, fallback,\n () => 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 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 (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : 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 (defined(value)) {\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 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 s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\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}\nfunction 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}\nfunction 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 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 deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (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}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\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(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\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\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\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);\nfunction 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 {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\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(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\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;\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 ? Math.floor(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 height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction 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 = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\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\n || canvas.height !== deviceHeight\n || 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}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction 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\nfunction _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}\nfunction _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\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\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 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 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 },\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 {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\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({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _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}\nfunction 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 {start, end};\n}\nfunction 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({start: start % count, end: (end - 1) % count, loop});\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({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _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, [{start, end, loop}], 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}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction 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({start: s % count, end: e % count, loop: l, style: st});\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 return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined 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, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, 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 log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\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 = 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\n ? c1.mix(c0, factor).hexString()\n : 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([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\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([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\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({res, rej});\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\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.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});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.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});\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 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 || [key]).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, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\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 {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\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 }\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), values: null};\nclass DatasetController {\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.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 }\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\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\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 = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\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\n ? this.resolveDatasetElementOptions(mode)\n : 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 ||\n (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 ||\n (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 ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\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 {sharedOptions, includeOptions};\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([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\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}\nfunction 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}\nfunction 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}\nfunction 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 {start, end, reverse, top, bottom};\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 = {top: true, right: true, bottom: true, left: true};\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'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\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)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + 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]) ? {base, head: base} : 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)\n .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 ||\n\t\t\t\t(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)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : 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}, 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 }\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'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.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: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.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\nclass BubbleController extends DatasetController {\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 {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: meta.label,\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, {$shared: false});\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}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\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 {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\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)) {\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}\nDoughnutController.id = 'doughnut';\nDoughnutController.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: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.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}} = 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 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 tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\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 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 }\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}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\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 = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\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)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.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}} = 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 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 tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\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\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\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}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\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 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}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\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 = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\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 = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\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}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\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 borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 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});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.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',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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;\nfunction 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}\nfunction 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}\nfunction 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}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction 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 {titleX, titleY, maxWidth, rotation};\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 {min, max};\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 beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\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()\n ? this.width + margins.left + margins.right\n : 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, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\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, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\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, [this]);\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, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\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)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\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, [this]);\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);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\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) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\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) => ({width: widths[idx] || 0, height: heights[idx] || 0});\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 :\n min > 0 && max > 0 ? min :\n 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 ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(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()\n ? h * cos > w * sin ? w / cos : h / sin\n : 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} = 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 = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 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 optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\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 } 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 = y + textOffset - labelPadding.top;\n let left = x - 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 }\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 rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\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 {textAlign, x};\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 {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\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, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, 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 }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 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.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\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._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\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: [titleX, titleY],\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 if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\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 = [scope].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 = [this.controllers, this.scales, this.elements];\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 [...args].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 = new Registry();\n\nclass ScatterController extends DatasetController {\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 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 }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = 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}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\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 {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction 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}\nfunction 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}\nfunction 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({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction 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 = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction 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({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar 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\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : 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({element, datasetIndex: meta.index, index});\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\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n 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({element: data[i], datasetIndex, index: i});\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 = ['left', 'top', 'right', 'bottom'];\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 ?\n v0.index - v1.index :\n 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] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction 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] || {size: 0, count: 1};\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, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\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 = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\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(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\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] || {count: 1, placed: 0, weight: 1};\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}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\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 z: 0,\n draw(chartArea) {\n item.draw(chartArea);\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) =>\n 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, {left: 0, top: 0, right: 0, bottom: 0});\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';\nconst 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 === '';\nfunction 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 ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\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, {childList: true, subtree: true});\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, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass 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 ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass 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 = [chart, args, descriptor.options];\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}\nfunction 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 {plugins, localIds};\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, {plugin, local: localIds[id]}, 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 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 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 (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\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);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\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'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\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 datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\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 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 _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 {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\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 = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : 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)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\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)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\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]\n ? a[l2] - b[l2]\n : 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, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction 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}\nfunction 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}\nclass Chart {\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(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\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 _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 = {width, height};\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', {size: newSize});\n callback(options.onResize, [this, newSize], 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(\n 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 }\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.prototype, {\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', {mode, cancelable: true}) === 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', {mode});\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(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\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)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === 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', {mode, cancelable: true}) === 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({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\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', {cancelable: true}) === 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({chart: this});\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', {cancelable: true}) === 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', {cancelable: true}) === 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 = 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, {chart: this, type: 'chart'}));\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, {visible});\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 this.notifyPlugins('destroy');\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 _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, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], 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}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\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, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction 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 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}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction 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 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 ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\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 const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\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 ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\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 const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\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, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\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 if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\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(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\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 / 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 'circumference',\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) / 2;\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 let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction _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}\nfunction _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, {start, end: start + count - 1})) {\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 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, {property, start: value, end: value});\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, {start, end: start + count - 1});\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}\nLineElement.id = 'line';\nLineElement.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};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\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(['x', 'y'], 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(['x', 'y'], useFinalPosition);\n return {x, y};\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 return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], 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 {left, top, right, bottom};\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(['enableBorderRadius']);\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\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction 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 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(['x', 'y', 'base', 'horizontal'], 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}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\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(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\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', {value: data});\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 {start, count};\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([indexAxis, chart.options.indexAxis]) === '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 {property, start, end};\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({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\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: {tension: 0},\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 = [index];\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}\nfunction _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 ['origin', 'start', 'end', 'stack', 'shape'].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}\nfunction _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}\nfunction _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}\nfunction 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({x: null, y: scale.bottom}, 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({points, options: {}});\n}\nfunction 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}\nfunction 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}\nfunction 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 {first, last, point};\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 || {start: 0, end: TAU};\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}\nfunction 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, {line, target, above, below, area, scale, axis});\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, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\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, {move: lineLoop});\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, {move: lineLoop, reverse: true});\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, [this.chart], 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, fontSize, 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 = [0];\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] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, 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 = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\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 {color: fontColor, 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 || fontColor;\n ctx.fillStyle = legendItem.fontColor || 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 {\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)\n && _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)\n && _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, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\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({ctx: chart.ctx, options, chart});\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}} = 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: 0,\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) => !['generateLabels', 'filter', 'sort'].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 {titleX, titleY, maxWidth, rotation};\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: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction 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}\nfunction 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\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (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 {width, height};\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}\nfunction 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}\nfunction 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'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction 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}\nclass Tooltip extends Element {\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 || config._chart;\n this._chart = this.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 ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(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(options.callbacks.beforeBody.apply(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(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(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(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(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, {chart: this.chart, tooltip: this, replay});\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 {x1, x2, x3, y1, y2, y3};\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 labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = 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 = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.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 = labelColors.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 = labelColors.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'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 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;\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}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\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', args) === 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 },\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: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\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 },\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: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\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({index, label: raw});\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);\nclass CategoryScale extends Scale {\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\n : 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({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return 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}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\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 [{value: rmin}, {value: rmax}];\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(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\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({value: min});\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 ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\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({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\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 = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\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 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}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\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, [raw, index]);\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 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 const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(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\n ? '0'\n : 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\n ? 0\n : (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}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\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 : [label];\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}\nfunction 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(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\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 buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\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 }\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 drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.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 renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\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) {\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(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\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 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()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\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} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.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};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction 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'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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 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 {min, max};\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\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : 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 = {start, end, factor: 1 / (start + 1 + end)};\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(timeOpts.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((a, b) => a - b).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 _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\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 const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\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, [exampleTime], 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}\nTimeScale.id = 'time';\nTimeScale.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 major: {\n enabled: false\n }\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 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 {time: min, pos: 0},\n {time: max, pos: 1}\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({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\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}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\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, 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, elements, layouts, plugins, registerables, registry, scales };\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","const DEFAULT_LEGEND_COLOR = {\n plugins: {\n legend: {\n labels: {\n color: 'rgb(102,102,102)',\n },\n },\n },\n};\n\n// Default options\nconst DEFAULT_OPTIONS = {\n line: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n line: {\n backgroundColor: 'rgba(59, 112, 202, 0.0)',\n borderColor: 'rgb(59, 112, 202)',\n borderWidth: 2,\n tension: 0.0,\n },\n point: {\n borderColor: 'rgb(59, 112, 202)',\n backgroundColor: 'rgb(59, 112, 202)',\n },\n },\n responsive: true,\n legend: {\n display: true,\n },\n tooltips: {\n intersect: false,\n mode: 'index',\n },\n datasets: {\n borderColor: 'red',\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n display: false,\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n y: {\n stacked: false,\n grid: {\n borderDash: [2],\n drawBorder: false,\n zeroLineColor: 'rgba(0,0,0,0)',\n zeroLineBorderDash: [2],\n zeroLineBorderDashOffset: [2],\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n },\n },\n },\n bar: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n backgroundColor: 'rgb(59, 112, 202)',\n borderWidth: 0,\n responsive: true,\n legend: {\n display: true,\n },\n tooltips: {\n intersect: false,\n mode: 'index',\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n display: false,\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n y: {\n stacked: true,\n grid: {\n borderDash: [2],\n drawBorder: false,\n zeroLineColor: 'rgba(0,0,0,0)',\n zeroLineBorderDash: [2],\n zeroLineBorderDashOffset: [2],\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n },\n },\n },\n pie: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n arc: { backgroundColor: 'rgb(59, 112, 202)' },\n },\n responsive: true,\n legend: {\n display: true,\n },\n },\n },\n doughnut: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n arc: { backgroundColor: 'rgb(59, 112, 202)' },\n },\n responsive: true,\n legend: {\n display: true,\n },\n },\n },\n polarArea: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n arc: { backgroundColor: 'rgba(59, 112, 202, 0.5)' },\n },\n responsive: true,\n legend: {\n display: true,\n },\n },\n },\n radar: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n line: {\n backgroundColor: 'rgba(59, 112, 202, 0.5)',\n borderColor: 'rgb(59, 112, 202)',\n borderWidth: 2,\n },\n point: {\n borderColor: 'rgb(59, 112, 202)',\n backgroundColor: 'rgb(59, 112, 202)',\n },\n },\n responsive: true,\n legend: {\n display: true,\n },\n },\n },\n scatter: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n line: {\n backgroundColor: 'rgba(59, 112, 202, 0.5)',\n borderColor: 'rgb(59, 112, 202)',\n borderWidth: 2,\n tension: 0.0,\n },\n point: {\n borderColor: 'rgb(59, 112, 202)',\n backgroundColor: 'rgba(59, 112, 202, 0.5)',\n },\n },\n responsive: true,\n legend: {\n display: true,\n },\n tooltips: {\n intersect: false,\n mode: 'index',\n },\n datasets: {\n borderColor: 'red',\n },\n scales: {\n x: {\n stacked: true,\n grid: {\n display: false,\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n y: {\n stacked: false,\n grid: {\n borderDash: [2],\n drawBorder: false,\n zeroLineColor: 'rgba(0,0,0,0)',\n zeroLineBorderDash: [2],\n zeroLineBorderDashOffset: [2],\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n },\n },\n },\n bubble: {\n options: {\n ...DEFAULT_LEGEND_COLOR,\n elements: {\n point: {\n borderColor: 'rgb(59, 112, 202)',\n backgroundColor: 'rgba(59, 112, 202, 0.5)',\n },\n },\n responsive: true,\n legend: {\n display: true,\n },\n scales: {\n x: {\n grid: {\n display: false,\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n y: {\n grid: {\n borderDash: [2],\n drawBorder: false,\n zeroLineColor: 'rgba(0,0,0,0)',\n zeroLineBorderDash: [2],\n zeroLineBorderDashOffset: [2],\n },\n ticks: {\n fontColor: 'rgba(0,0,0, 0.5)',\n },\n },\n },\n },\n },\n};\n\nexport default DEFAULT_OPTIONS;\n","import {\n Chart as Chartjs,\n ArcElement,\n LineElement,\n BarElement,\n PointElement,\n BarController,\n BubbleController,\n DoughnutController,\n LineController,\n PieController,\n PolarAreaController,\n RadarController,\n ScatterController,\n CategoryScale,\n LinearScale,\n LogarithmicScale,\n RadialLinearScale,\n TimeScale,\n TimeSeriesScale,\n Decimation,\n Filler,\n Legend,\n Title,\n Tooltip,\n SubTitle,\n} from 'chart.js';\nimport merge from 'deepmerge';\nimport { element, typeCheckConfig } from '../../mdb/util/index';\nimport Data from '../../mdb/dom/data';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\nimport DEFAULT_OPTIONS from './chartsDefaults';\n\nChartjs.register(\n ArcElement,\n LineElement,\n BarElement,\n PointElement,\n BarController,\n BubbleController,\n DoughnutController,\n LineController,\n PieController,\n PolarAreaController,\n RadarController,\n ScatterController,\n CategoryScale,\n LinearScale,\n LogarithmicScale,\n RadialLinearScale,\n TimeScale,\n TimeSeriesScale,\n Decimation,\n Filler,\n Legend,\n Title,\n Tooltip,\n SubTitle\n);\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'chart';\nconst DATA_KEY = 'mdb.chart';\nconst CLASSNAME_CHARTS = 'chart';\n\nconst GENERATE_DATA = (options, type, defaultType) => {\n const mergeObjects = (target, source, options) => {\n const destination = target.slice();\n source.forEach((item, index) => {\n if (typeof destination[index] === 'undefined') {\n destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);\n } else if (options.isMergeableObject(item)) {\n destination[index] = merge(target[index], item, options);\n } else if (target.indexOf(item) === -1) {\n destination.push(item);\n }\n });\n return destination;\n };\n return merge(defaultType[type], options, {\n arrayMerge: mergeObjects,\n });\n};\n\nconst DEFAULT_DARK_OPTIONS = {\n darkTicksColor: '#fff',\n darkLabelColor: '#fff',\n darkGridLinesColor: '#555',\n darkmodeOff: 'undefined',\n darkMode: null,\n darkBgColor: '#262626',\n darkBgColorLight: '#fff',\n options: null,\n};\n\nconst DARK_OPTIONS_TYPE = {\n darkTicksColor: 'string',\n darkLabelColor: 'string',\n darkGridLinesColor: 'string',\n darkmodeOff: '(string|null)',\n darkMode: '(string|null)',\n darkBgColor: 'string',\n darkBgColorLight: 'string',\n options: '(object|null)',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n//\nclass Chart extends BaseComponent {\n constructor(element, data, options = {}, darkOptions = {}) {\n super(element);\n this._data = data;\n this._options = options;\n this._type = data.type;\n this._canvas = null;\n this._chart = null;\n this._darkOptions = this._getDarkConfig(darkOptions);\n this._darkModeClassContainer = document.querySelector('html');\n this._prevConfig = options;\n this._observer = null;\n\n if (this._element) {\n Manipulator.addClass(this._element, CLASSNAME_CHARTS);\n this._chartConstructor();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n if (this._element && this._darkOptions.darkmodeOff !== null) {\n // check mode on start\n let mode;\n\n switch (this._darkOptions.darkMode) {\n case 'dark':\n mode = 'dark';\n break;\n case 'light':\n mode = 'light';\n break;\n default:\n mode = this.systemColorMode;\n break;\n }\n\n this._handleMode(mode);\n // observe darkmode class container change\n this._observer = new MutationObserver(this._observerCallback.bind(this));\n this._observer.observe(this._darkModeClassContainer, {\n attributes: true,\n });\n }\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n get systemColorMode() {\n return (\n localStorage.theme ||\n Manipulator.getDataAttribute(this._darkModeClassContainer, 'theme') ||\n 'light'\n );\n }\n\n static get BarController() {\n return BarController;\n }\n\n static get BubbleController() {\n return BubbleController;\n }\n\n static get DoughnutController() {\n return DoughnutController;\n }\n\n static get LineController() {\n return LineController;\n }\n\n static get PieController() {\n return PieController;\n }\n\n static get PolarAreaController() {\n return PolarAreaController;\n }\n\n static get RadarController() {\n return RadarController;\n }\n\n static get ScatterController() {\n return ScatterController;\n }\n\n // Public\n dispose() {\n this._observer.disconnect();\n Data.removeData(this._element, DATA_KEY);\n\n this._chart.destroy();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n update(data, config = {}) {\n if (data) {\n this._data = { ...this._data, ...data };\n this._chart.data = this._data;\n }\n\n const configOptions = Object.prototype.hasOwnProperty.call(config, 'options')\n ? config\n : { options: { ...config } };\n\n this._options = merge(this._options, configOptions);\n\n this._chart.options = GENERATE_DATA(this._options, this._type, DEFAULT_OPTIONS).options;\n\n this._chart.update();\n }\n\n static register(MyType) {\n Chartjs.register(MyType);\n }\n\n setTheme(theme) {\n if ((theme !== 'dark' && theme !== 'light') || !this._data) {\n return;\n }\n this._handleMode(theme);\n }\n\n // Private\n _getDarkConfig(config) {\n let dataAttributes = {};\n const dataAttr = Manipulator.getDataAttributes(this._element);\n Object.keys(dataAttr).forEach(\n (key) => key.startsWith('dark') && (dataAttributes[key] = dataAttr[key])\n );\n\n dataAttributes = {\n ...DEFAULT_DARK_OPTIONS,\n ...dataAttributes,\n };\n\n const xyScale = {\n y: {\n ticks: {\n color: dataAttributes.darkTicksColor,\n },\n grid: {\n color: dataAttributes.darkGridLinesColor,\n },\n },\n x: {\n ticks: {\n color: dataAttributes.darkTicksColor,\n },\n grid: {\n color: dataAttributes.darkGridLinesColor,\n },\n },\n };\n\n const rScale = {\n r: {\n ticks: {\n color: dataAttributes.darkTicksColor,\n backdropColor: dataAttributes.darkBgColor,\n },\n grid: {\n color: dataAttributes.darkGridLinesColor,\n },\n pointLabels: {\n color: dataAttributes.darkTicksColor,\n },\n },\n };\n\n const radials = ['pie', 'doughnut', 'polarArea', 'radar'];\n\n let scales = {};\n\n if (!radials.includes(this._type)) {\n scales = xyScale;\n } else if (['polarArea', 'radar'].includes(this._type)) {\n scales = rScale;\n }\n\n const opt = {\n scales,\n plugins: {\n legend: {\n labels: {\n color: dataAttributes.darkLabelColor,\n },\n },\n },\n };\n\n // combine config\n config = {\n ...dataAttributes,\n options: {\n ...opt,\n },\n ...config,\n };\n\n typeCheckConfig(NAME, config, DARK_OPTIONS_TYPE);\n\n return config;\n }\n\n _getLightTheme(type) {\n const defaultOptions = DEFAULT_OPTIONS[`${type}`] ? DEFAULT_OPTIONS[`${type}`].options : {};\n const prevConfig = this._prevConfig || {};\n\n return merge(defaultOptions, prevConfig);\n }\n\n _chartConstructor() {\n if (this._data) {\n this._createCanvas();\n\n const options = GENERATE_DATA(this._options, this._type, DEFAULT_OPTIONS);\n\n this._chart = new Chartjs(this._canvas, {\n ...this._data,\n ...options,\n });\n }\n }\n\n _createCanvas() {\n if (this._canvas) return;\n if (this._element.nodeName === 'CANVAS') {\n this._canvas = this._element;\n } else {\n this._canvas = element('canvas');\n this._element.appendChild(this._canvas);\n }\n }\n\n _handleMode(systemColor) {\n if (systemColor === 'dark') {\n this._changeDatasetBorderColor();\n this.update(null, this._darkOptions.options);\n } else {\n this._changeDatasetBorderColor(false);\n // reset options before setting light theme\n this._options = null;\n this.update(null, this._getLightTheme(this._type));\n }\n }\n\n _observerCallback(mutationList) {\n mutationList.forEach((mutation) => {\n if (mutation.type === 'attributes') {\n this._handleMode(this.systemColorMode);\n }\n });\n }\n\n _changeDatasetBorderColor(dark = true) {\n if (!this._data.data) {\n return;\n }\n\n [...this._data.data.datasets].forEach(\n (set) =>\n ['pie', 'doughnut', 'polarArea'].includes(this._type) &&\n (set.borderColor = dark\n ? this._darkOptions.darkBgColor\n : this._darkOptions.darkBgColorLight)\n );\n }\n\n static jQueryInterface(data, options, type) {\n return this.each(function () {\n let chartData = Data.getData(this, DATA_KEY);\n\n if (!chartData && /dispose/.test(data)) {\n return;\n }\n\n if (!chartData) {\n const chartOptions = options\n ? GENERATE_DATA(options, type, DEFAULT_OPTIONS)\n : DEFAULT_OPTIONS[type];\n\n chartData = new Chart(this, data, chartOptions);\n }\n\n if (typeof data === 'string') {\n if (typeof chartData[data] === 'undefined') {\n throw new TypeError(`No method named \"${data}\"`);\n }\n\n chartData[data](options, type);\n }\n });\n }\n\n static getInstance(element) {\n return Data.getData(element, DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return (\n this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n );\n }\n}\n\nexport default Chart;\n","import { element, typeCheckConfig, isRTL } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'lightbox';\nconst DATA_KEY = 'mdb.lightbox';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASSNAME_LIGHTBOX = 'lightbox';\nconst CLASSNAME_GALLERY = 'lightbox-gallery';\n\nconst CLASSNAME_TOOLBAR = 'lightbox-gallery-toolbar';\nconst CLASSNAME_GALLERY_CONTENT = 'lightbox-gallery-content';\nconst CLASSNAME_COUNTER = 'lightbox-gallery-counter';\nconst CLASSNAME_FULLSCREEN_BTN = 'lightbox-gallery-fullscreen-btn';\nconst CLASSNAME_ZOOM_BTN = 'lightbox-gallery-zoom-btn';\nconst CLASSNAME_LEFT_TOOLS = 'lightbox-gallery-left-tools';\nconst CLASSNAME_RIGHT_TOOLS = 'lightbox-gallery-right-tools';\nconst CLASSNAME_CLOSE_BTN = 'lightbox-gallery-close-btn';\nconst CLASSNAME_LOADER = 'lightbox-gallery-loader';\nconst CLASSNAME_ARROW_LEFT = 'lightbox-gallery-arrow-left';\nconst CLASSNAME_ARROW_RIGHT = 'lightbox-gallery-arrow-right';\nconst CLASSNAME_CAPTION_WRAPPER = 'lightbox-gallery-caption-wrapper';\nconst CLASSNAME_CAPTION = 'lightbox-gallery-caption';\nconst CLASSNAME_IMG = 'lightbox-gallery-image';\n\nconst SELECTOR_TOGGLE = `[data-mdb-${NAME}-init] img:not(.lightbox-disabled)`;\n\nconst OPTIONS_TYPE = {\n container: 'string',\n zoomLevel: '(number|string)',\n};\n\nconst DEFAULT_OPTIONS = {\n container: 'body',\n zoomLevel: 1,\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Lightbox extends BaseComponent {\n constructor(element, options = {}) {\n super(element);\n\n this._options = options;\n this._getContainer();\n\n this._id = `lightbox-${Math.random().toString(36).substr(2, 9)}`;\n this._activeImg = 0;\n this._images = [];\n this._preloadedImages = [];\n this._zoom = 1;\n this._gallery = null;\n this._galleryToolbar = null;\n this._galleryContent = null;\n this._loader = null;\n this._imgCounter = null;\n this._animating = false;\n this._fullscreen = false;\n this._zoomBtn = null;\n this._fullscreenBtn = null;\n this._toolsToggleTimer = 0;\n this._mousedown = false;\n this._mousedownPositionX = 0;\n this._mousedownPositionY = 0;\n this._originalPositionX = 0;\n this._originalPositionY = 0;\n this._positionX = 0;\n this._positionY = 0;\n this._zoomTimer = 0;\n this._tapCounter = 0;\n this._tapTime = 0;\n this._rightArrow = null;\n this._leftArrowWrapper = null;\n this._rightArrowWrapper = null;\n this._initiated = false;\n this._multitouch = false;\n this._touchZoomPosition = [];\n\n if (this._element) {\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n get activeImg() {\n return this._activeImg;\n }\n\n get currentImg() {\n return SelectorEngine.findOne('.active', this._galleryContent);\n }\n\n get nextImage() {\n return this._activeImg === this._images.length - 1 ? 0 : this._activeImg + 1;\n }\n\n get previousImage() {\n return this._activeImg === 0 ? this._images.length - 1 : this._activeImg - 1;\n }\n\n get options() {\n const config = {\n ...DEFAULT_OPTIONS,\n ...Manipulator.getDataAttributes(this._element),\n ...this._options,\n };\n\n typeCheckConfig(NAME, config, OPTIONS_TYPE);\n\n return config;\n }\n\n // Public\n init() {\n if (this._initiated) {\n return;\n }\n\n this._appendTemplate();\n this._initiated = true;\n }\n\n open(target = 0) {\n this._getImages();\n this._setActiveImg(target);\n this._triggerEvents('open', 'opened');\n\n this._loadImages().then((images) => {\n this._preloadedImages = images;\n this._resizeImages(images);\n this._toggleTemplate();\n this._addEvents();\n this._focusFullscreenBtn();\n });\n }\n\n close() {\n this.reset();\n this._removeEvents();\n this._toggleTemplate();\n this._triggerEvents('close', 'closed');\n }\n\n slide(target = 'right') {\n if (this._animating === true || this._images.length <= 1) return;\n this._triggerEvents('slide', 'slid');\n\n this._beforeSlideEvents();\n if (target === 'right') this._slideHorizontally(target);\n if (target === 'left') this._slideHorizontally(target);\n if (target === 'first') this._slideToTarget(target);\n if (target === 'last') this._slideToTarget(target);\n this._afterSlideEvents();\n }\n\n zoomIn() {\n if (this._zoom >= 3) return;\n this._triggerEvents('zoomIn', 'zoomedIn');\n this._zoom += parseFloat(this.options.zoomLevel);\n Manipulator.style(this.currentImg.parentNode, { transform: `scale(${this._zoom})` });\n\n this._updateZoomBtn();\n }\n\n zoomOut() {\n if (this._zoom <= 1) return;\n this._triggerEvents('zoomOut', 'zoomedOut');\n this._zoom -= parseFloat(this.options.zoomLevel);\n Manipulator.style(this.currentImg.parentNode, { transform: `scale(${this._zoom})` });\n\n this._updateZoomBtn();\n this._updateImgPosition();\n }\n\n toggleFullscreen() {\n if (this._fullscreen === false) {\n Manipulator.addClass(this._fullscreenBtn, 'active');\n if (this._gallery.requestFullscreen) {\n this._gallery.requestFullscreen();\n }\n\n this._fullscreen = true;\n } else {\n Manipulator.removeClass(this._fullscreenBtn, 'active');\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n\n this._fullscreen = false;\n }\n }\n\n reset() {\n this._restoreDefaultFullscreen();\n this._restoreDefaultPosition();\n this._restoreDefaultZoom();\n clearTimeout(this._toolsToggleTimer);\n clearTimeout(this._doubleTapTimer);\n }\n\n dispose() {\n EventHandler.off(document, EVENT_CLICK_DATA_API, SELECTOR_TOGGLE, this.toggle);\n if (this._galleryContent) this._removeEvents();\n if (this._gallery) this._gallery.remove();\n\n Data.removeData(this._element, DATA_KEY);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _getImages() {\n const allImages = SelectorEngine.find('img', this._element);\n const lightboxImages = allImages.filter((image) => {\n return !image.classList.contains('lightbox-disabled');\n });\n this._images = lightboxImages;\n }\n\n _getContainer() {\n this._container = SelectorEngine.findOne(this.options.container);\n }\n\n _setActiveImg(target) {\n this._activeImg = typeof target === 'number' ? target : this._images.indexOf(target.target);\n }\n\n _appendTemplate() {\n this._gallery = element('div');\n Manipulator.addClass(this._gallery, CLASSNAME_GALLERY);\n this._element.dataset.id = this._id;\n this._gallery.id = this._id;\n\n this._appendLoader();\n this._appendToolbar();\n this._appendContent();\n this._appendArrows();\n this._appendCaption();\n this._container.append(this._gallery);\n }\n\n _appendToolbar() {\n this._galleryToolbar = element('div');\n this._imgCounter = element('p');\n this._fullscreenBtn = element('button');\n this._zoomBtn = element('button');\n const leftTools = element('div');\n const rightTools = element('div');\n const closeBtn = element('button');\n\n Manipulator.addClass(this._galleryToolbar, CLASSNAME_TOOLBAR);\n Manipulator.addClass(this._imgCounter, CLASSNAME_COUNTER);\n Manipulator.addClass(this._fullscreenBtn, CLASSNAME_FULLSCREEN_BTN);\n Manipulator.addClass(this._zoomBtn, CLASSNAME_ZOOM_BTN);\n Manipulator.addClass(leftTools, CLASSNAME_LEFT_TOOLS);\n Manipulator.addClass(rightTools, CLASSNAME_RIGHT_TOOLS);\n Manipulator.addClass(closeBtn, CLASSNAME_CLOSE_BTN);\n\n this._fullscreenBtn.setAttribute('aria-label', 'Toggle fullscreen');\n this._zoomBtn.setAttribute('aria-label', 'Zoom in');\n closeBtn.setAttribute('aria-label', 'Close');\n\n EventHandler.on(this._fullscreenBtn, EVENT_CLICK_DATA_API, () => this.toggleFullscreen());\n EventHandler.on(this._zoomBtn, EVENT_CLICK_DATA_API, () => this._toggleZoom());\n EventHandler.on(closeBtn, EVENT_CLICK_DATA_API, () => this.close());\n\n leftTools.append(this._imgCounter);\n rightTools.append(this._fullscreenBtn);\n rightTools.append(this._zoomBtn);\n rightTools.append(closeBtn);\n\n this._galleryToolbar.append(leftTools);\n this._galleryToolbar.append(rightTools);\n this._gallery.append(this._galleryToolbar);\n }\n\n _appendContent() {\n this._galleryContent = element('div');\n Manipulator.addClass(this._galleryContent, CLASSNAME_GALLERY_CONTENT);\n this._gallery.append(this._galleryContent);\n }\n\n _appendLoader() {\n this._loader = element('div');\n const spinner = element('div');\n const spinnerContent = element('span');\n\n Manipulator.addClass(this._loader, CLASSNAME_LOADER);\n Manipulator.addClass(spinner, 'spinner-grow');\n Manipulator.addClass(spinner, 'text-light');\n Manipulator.addClass(spinnerContent, 'sr-only');\n\n spinner.setAttribute('role', 'status');\n spinnerContent.innerHTML = 'Loading...';\n\n spinner.append(spinnerContent);\n this._loader.append(spinner);\n this._gallery.append(this._loader);\n }\n\n _appendArrows() {\n this._leftArrowWrapper = element('div');\n Manipulator.addClass(this._leftArrowWrapper, CLASSNAME_ARROW_LEFT);\n const leftArrow = element('button');\n leftArrow.setAttribute('aria-label', 'Previous');\n EventHandler.on(leftArrow, EVENT_CLICK_DATA_API, () => this.slide('left'));\n this._leftArrowWrapper.append(leftArrow);\n\n this._rightArrowWrapper = element('div');\n Manipulator.addClass(this._rightArrowWrapper, CLASSNAME_ARROW_RIGHT);\n this._rightArrow = element('button');\n this._rightArrow.setAttribute('aria-label', 'Next');\n EventHandler.on(this._rightArrow, EVENT_CLICK_DATA_API, () => this.slide());\n this._rightArrowWrapper.append(this._rightArrow);\n\n this._getImages();\n if (this._images.length <= 1) return;\n this._gallery.append(this._leftArrowWrapper);\n this._gallery.append(this._rightArrowWrapper);\n }\n\n _appendCaption() {\n const captionWrapper = element('div');\n const caption = element('p');\n\n Manipulator.addClass(captionWrapper, CLASSNAME_CAPTION_WRAPPER);\n Manipulator.addClass(caption, CLASSNAME_CAPTION);\n\n captionWrapper.append(caption);\n this._gallery.append(captionWrapper);\n }\n\n async _loadImages() {\n const promiseArray = [];\n const imageArray = [];\n\n this._galleryContent.innerHTML = '';\n let positionLeft = -100; // -100% so current image will be in the middle with 0% left\n\n const activeIndexes = [this.previousImage, this._activeImg, this.nextImage];\n\n activeIndexes.forEach((key) => {\n promiseArray.push(\n new Promise((resolve) => {\n const img = this._createImage(key, positionLeft, 'right');\n img.onload = () => {\n imageArray.push(img);\n resolve(img);\n };\n })\n );\n positionLeft += 100;\n });\n\n await Promise.all(promiseArray);\n return imageArray;\n }\n\n _createImage(index, positionLeft, direction) {\n const img = this._images[index];\n const newImg = new Image();\n const newImgWrapper = element('div');\n Manipulator.addClass(newImgWrapper, CLASSNAME_IMG);\n\n this._addImgStyles(newImg, newImgWrapper, positionLeft, img);\n\n newImgWrapper.append(newImg);\n if (direction === 'right') {\n this._galleryContent.append(newImgWrapper);\n } else {\n this._galleryContent.prepend(newImgWrapper);\n }\n\n newImg.src = img.dataset.mdbImg || img.src;\n\n return newImg;\n }\n\n _updatePreloadedImages(direction) {\n const isDirectionRight = direction === 'right';\n const targetChild = isDirectionRight\n ? this._galleryContent.firstChild\n : this._galleryContent.lastChild;\n const targetImage = targetChild?.querySelector('img');\n\n this._removeImageEvents(targetImage);\n this._galleryContent.removeChild(targetChild);\n\n const newIndex = isDirectionRight ? this.nextImage : this.previousImage;\n const positionLeft = isDirectionRight ? 200 : -200;\n const addedImage = this._createImage(newIndex, positionLeft, direction);\n\n this._addImageEvents(addedImage);\n this._preloadedImages = SelectorEngine.find('img', this._galleryContent);\n }\n\n _addImgStyles(newImg, newImgWrapper, positionLeft, img) {\n newImg.alt = img.alt;\n newImg.draggable = false;\n\n Manipulator.style(newImgWrapper, { position: 'absolute', left: `${positionLeft}%`, top: 0 });\n if (img.dataset.mdbCaption || img.dataset.mdbCaption === '') {\n newImg.dataset.caption = img.dataset.mdbCaption;\n }\n\n if (positionLeft === 0) {\n if (newImg.width < newImg.height) Manipulator.addClass(newImg, 'vertical');\n Manipulator.style(newImgWrapper, { opacity: 1 });\n Manipulator.addClass(newImg, 'active');\n } else {\n Manipulator.removeClass(newImg, 'active');\n }\n }\n\n _resizeImages(images) {\n images.forEach((img) => {\n this._calculateImgSize(img);\n });\n }\n\n _calculateImgSize(img) {\n if (img.width >= img.height) {\n img.style.width = '100%';\n img.style.maxWidth = '100%';\n img.style.height = 'auto';\n img.style.top = `${(img.parentNode.offsetHeight - img.height) / 2}px`;\n img.style.left = 0;\n } else {\n img.style.height = '100%';\n img.style.maxHeight = '100%';\n img.style.width = 'auto';\n img.style.left = `${(img.parentNode.offsetWidth - img.width) / 2}px`;\n img.style.top = 0;\n }\n\n if (img.width >= img.parentNode.offsetWidth) {\n img.style.width = `${img.parentNode.offsetWidth}px`;\n img.style.height = 'auto';\n img.style.left = 0;\n img.style.top = `${(img.parentNode.offsetHeight - img.height) / 2}px`;\n }\n if (img.height >= img.parentNode.offsetHeight) {\n img.style.height = `${img.parentNode.offsetHeight}px`;\n img.style.width = 'auto';\n img.style.top = 0;\n img.style.left = `${(img.parentNode.offsetWidth - img.width) / 2}px`;\n }\n\n this._positionX = parseFloat(img.style.left) || 0;\n this._positionY = parseFloat(img.style.top) || 0;\n }\n\n _onResize() {\n this._preloadedImages.forEach((img) => {\n this._calculateImgSize(img);\n });\n }\n\n _onFullscreenChange() {\n const isFullscreenEnabled =\n document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement;\n if (isFullscreenEnabled === undefined) {\n this._fullscreen = false;\n Manipulator.removeClass(this._fullscreenBtn, 'active');\n }\n }\n\n _beforeSlideEvents() {\n this._animationStart();\n this._restoreDefaultZoom();\n this._restoreDefaultPosition();\n this._resetDoubleTap();\n }\n\n _slideHorizontally(direction) {\n this._updateActiveImg(direction);\n this._updatePreloadedImages(direction);\n this._resizeImages(this._preloadedImages);\n\n this._preloadedImages = SelectorEngine.find('img', this._galleryContent);\n\n this._slidePreloadedImages();\n }\n\n _slideImg(img, position) {\n if (position === 0) {\n Manipulator.addClass(img, 'active');\n Manipulator.style(img.parentNode, { opacity: 1, transform: 'scale(1)' });\n } else {\n Manipulator.removeClass(img, 'active');\n Manipulator.style(img.parentNode, { opacity: 0, transform: 'scale(0.25)' });\n }\n img.parentNode.style.left = `${position}%`;\n }\n\n _slidePreloadedImages() {\n let positionLeft = -100;\n this._preloadedImages.forEach((image) => {\n this._slideImg(image, positionLeft);\n\n positionLeft += 100;\n });\n }\n\n _slideToTarget(target) {\n if (target === 'first' && this._activeImg === 0) return;\n if (target === 'last' && this._activeImg === this._images.length - 1) return;\n\n this.reset();\n this._removeEvents();\n this._showLoader();\n\n this._getImages();\n this._activeImg = target === 'first' ? 0 : this._images.length - 1;\n\n Manipulator.style(this.currentImg.parentNode, { transform: 'scale(0.25)', opacity: 0 });\n\n setTimeout(() => {\n this._loadImages().then((images) => {\n this._preloadedImages = images;\n this._resizeImages(images);\n this._addEvents();\n this._updateCaption();\n this._hideLoader();\n setTimeout(() => {\n Manipulator.style(this.currentImg.parentNode, { transform: 'scale(1)', opacity: 1 });\n }, 10);\n });\n }, 400);\n }\n\n _updateActiveImg(direction) {\n if (direction === 'right') {\n this._activeImg = this.nextImage;\n }\n\n if (direction === 'left') {\n this._activeImg = this.previousImage;\n }\n }\n\n _afterSlideEvents() {\n this._updateCounter();\n this._updateCaption();\n }\n\n _updateCounter() {\n if (this._images.length <= 1) return;\n setTimeout(() => {\n this._imgCounter.innerHTML = `${this._activeImg + 1} / ${this._images.length}`;\n }, 200);\n }\n\n _updateCaption() {\n setTimeout(() => {\n let caption = this.currentImg.alt;\n if (this.currentImg.dataset.caption || this.currentImg.dataset.caption === '') {\n caption = this.currentImg.dataset.caption;\n }\n SelectorEngine.findOne(`.${CLASSNAME_CAPTION}`, this._gallery).innerHTML = caption;\n }, 200);\n }\n\n _toggleTemplate() {\n if (this._gallery.style.visibility === 'visible') {\n Manipulator.style(this.currentImg.parentNode, { transform: 'scale(0.25)' });\n\n setTimeout(() => {\n this._hideGallery();\n this._enableScroll();\n this._showLoader();\n }, 100);\n } else {\n this._showGallery();\n this._disableScroll();\n this._updateCounter();\n this._updateCaption();\n this._setToolsToggleTimout();\n this._hideLoader();\n }\n }\n\n _showLoader() {\n Manipulator.style(this._loader, { opacity: 1 });\n }\n\n _hideLoader() {\n Manipulator.style(this._loader, { opacity: 0 });\n }\n\n _hideGallery() {\n Manipulator.style(this._gallery, { opacity: 0, pointerEvents: 'none', visibility: 'hidden' });\n }\n\n _showGallery() {\n Manipulator.style(this._gallery, {\n opacity: 1,\n pointerEvents: 'initial',\n visibility: 'visible',\n });\n setTimeout(() => {\n Manipulator.style(this.currentImg.parentNode, { transform: 'scale(1)' });\n }, 50);\n }\n\n _toggleZoom() {\n if (this._zoom !== 1) {\n this._restoreDefaultZoom();\n } else {\n this.zoomIn();\n }\n }\n\n _updateZoomBtn() {\n if (this._zoom > 1) {\n Manipulator.addClass(this._zoomBtn, 'active');\n this._zoomBtn.setAttribute('aria-label', 'Zoom out');\n } else {\n Manipulator.removeClass(this._zoomBtn, 'active');\n this._zoomBtn.setAttribute('aria-label', 'Zoom in');\n }\n }\n\n _updateImgPosition() {\n if (this._zoom === 1) {\n this._restoreDefaultPosition();\n }\n }\n\n _addEvents() {\n const images = SelectorEngine.find('img', this._galleryContent);\n\n this._onWindowTouchmove = this._onWindowTouchmove.bind(this);\n this._onWindowTouchstart = this._onWindowTouchstart.bind(this);\n this._onImgMousedown = this._onMousedown.bind(this);\n this._onImgMousemove = this._onMousemove.bind(this);\n this._onImgWheel = this._onWheel.bind(this);\n this._onImgMouseup = this._onMouseup.bind(this);\n this._onImgTouchend = this._onTouchend.bind(this);\n this._onImgDoubleClick = this._onDoubleClick.bind(this);\n this._onWindowResize = this._onResize.bind(this);\n this._onWindowFullscreenChange = this._onFullscreenChange.bind(this);\n this._onAnyImgAction = this._resetToolsToggler.bind(this);\n this._onGalleryClick = this._onBackdropClick.bind(this);\n this._onKeyupEvent = this._onKeyup.bind(this);\n this._onRightArrowKeydownEvent = this._onRightArrowKeydown.bind(this);\n this._onFullscreenBtnKeydownEvent = this._onFullscreenBtnKeydown.bind(this);\n\n images.forEach((img) => {\n this._addImageEvents(img);\n });\n\n document.addEventListener('touchmove', this._onWindowTouchmove, { passive: false });\n EventHandler.on(window, 'touchstart', this._onWindowTouchstart);\n EventHandler.on(window, 'mouseup', this._onImgMouseup);\n EventHandler.on(window, 'touchend', this._onImgTouchend);\n EventHandler.on(window, 'resize', this._onWindowResize);\n EventHandler.on(window, 'orientationchange', this._onWindowResize);\n EventHandler.on(window, 'keyup', this._onKeyupEvent);\n EventHandler.on(window, 'fullscreenchange', this._onWindowFullscreenChange);\n EventHandler.on(this._gallery, 'mousemove', this._onAnyImgAction);\n EventHandler.on(this._gallery, 'click', this._onGalleryClick);\n EventHandler.on(this._rightArrow, 'keydown', this._onRightArrowKeydownEvent);\n EventHandler.on(this._fullscreenBtn, 'keydown', this._onFullscreenBtnKeydownEvent);\n }\n\n _addImageEvents(img) {\n EventHandler.on(img, 'mousedown', this._onImgMousedown, { passive: true });\n EventHandler.on(img, 'touchstart', this._onImgMousedown, { passive: true });\n EventHandler.on(img, 'mousemove', this._onImgMousemove, { passive: true });\n EventHandler.on(img, 'touchmove', this._onImgMousemove, { passive: true });\n EventHandler.on(img, 'wheel', this._onImgWheel, { passive: true });\n EventHandler.on(img, 'dblclick', this._onImgDoubleClick, { passive: true });\n }\n\n _removeEvents() {\n const images = SelectorEngine.find('img', this._galleryContent);\n\n images.forEach((img) => {\n this._removeImageEvents(img);\n });\n\n document.removeEventListener('touchmove', this._onWindowTouchmove, { passive: false });\n EventHandler.off(window, 'touchstart', this._onWindowTouchstart);\n EventHandler.off(window, 'mouseup', this._onImgMouseup);\n EventHandler.off(window, 'touchend', this._onImgTouchend);\n EventHandler.off(window, 'resize', this._onWindowResize);\n EventHandler.off(window, 'orientationchange', this._onWindowResize);\n EventHandler.off(window, 'keyup', this._onKeyupEvent);\n EventHandler.off(window, 'fullscreenchange', this._onWindowFullscreenChange);\n EventHandler.off(this._gallery, 'mousemove', this._onAnyImgAction);\n EventHandler.off(this._gallery, 'click', this._onGalleryClick);\n EventHandler.off(this._rightArrow, 'keydown', this._onRightArrowKeydownEvent);\n EventHandler.off(this._fullscreenBtn, 'keydown', this._onFullscreenBtnKeydownEvent);\n }\n\n _removeImageEvents(img) {\n EventHandler.off(img, 'mousedown', this._onImgMousedown);\n EventHandler.off(img, 'touchstart', this._onImgMousedown);\n EventHandler.off(img, 'mousemove', this._onImgMousemove);\n EventHandler.off(img, 'touchmove', this._onImgMousemove);\n EventHandler.off(img, 'wheel', this._onImgWheel);\n EventHandler.off(img, 'dblclick', this._onImgDoubleClick);\n }\n\n _onMousedown(e) {\n const touch = e.touches;\n const x = touch ? touch[0].clientX : e.clientX;\n const y = touch ? touch[0].clientY : e.clientY;\n\n this._originalPositionX = parseFloat(this.currentImg.style.left) || 0;\n this._originalPositionY = parseFloat(this.currentImg.style.top) || 0;\n this._positionX = this._originalPositionX;\n this._positionY = this._originalPositionY;\n this._mousedownPositionX = x * (1 / this._zoom) - this._positionX;\n this._mousedownPositionY = y * (1 / this._zoom) - this._positionY;\n this._mousedown = true;\n\n if (e.type === 'touchstart') {\n if (e.touches.length > 1) {\n this._multitouch = true;\n this._touchZoomPosition = e.touches;\n }\n }\n }\n\n _onMousemove(e) {\n if (!this._mousedown) return;\n\n const touch = e.touches;\n const x = touch ? touch[0].clientX : e.clientX;\n const y = touch ? touch[0].clientY : e.clientY;\n\n if (touch) this._resetToolsToggler();\n\n if (!this._multitouch) {\n if (this._zoom !== 1) {\n this._positionX = x * (1 / this._zoom) - this._mousedownPositionX;\n this._positionY = y * (1 / this._zoom) - this._mousedownPositionY;\n Manipulator.style(this.currentImg, {\n left: `${this._positionX}px`,\n top: `${this._positionY}px`,\n });\n } else {\n if (this._images.length <= 1) return;\n this._positionX = x * (1 / this._zoom) - this._mousedownPositionX;\n Manipulator.style(this.currentImg, { left: `${this._positionX}px` });\n }\n }\n }\n\n _onMouseup(e) {\n this._mousedown = false;\n this._moveImg(e.target);\n }\n\n _onTouchend(e) {\n this._mousedown = false;\n\n if (this._multitouch) {\n if (e.targetTouches.length === 0) {\n this._multitouch = false;\n this._touchZoomPosition = [];\n }\n } else if (!this._multitouch) {\n this._checkDoubleTap(e);\n this._moveImg(e.target);\n }\n }\n\n _calculateTouchZoom(e) {\n const initialDistance = Math.hypot(\n this._touchZoomPosition[1].pageX - this._touchZoomPosition[0].pageX,\n this._touchZoomPosition[1].pageY - this._touchZoomPosition[0].pageY\n );\n const finalDistance = Math.hypot(\n e.touches[1].pageX - e.touches[0].pageX,\n e.touches[1].pageY - e.touches[0].pageY\n );\n const distanceChange = Math.abs(initialDistance - finalDistance);\n const screenWidth = e.view.screen.width;\n if (distanceChange > screenWidth * 0.03) {\n if (initialDistance <= finalDistance) {\n this.zoomIn();\n } else {\n this.zoomOut();\n }\n this._touchZoomPosition = e.touches;\n }\n }\n\n _onWindowTouchstart(e) {\n if (e.touches.length > 1) {\n this._multitouch = true;\n this._touchZoomPosition = e.touches;\n }\n }\n\n _onWindowTouchmove(e) {\n e.preventDefault();\n if (e.type === 'touchmove' && e.targetTouches.length > 1) {\n this._calculateTouchZoom(e);\n }\n }\n\n _onRightArrowKeydown(e) {\n switch (e.keyCode) {\n case 9:\n if (e.shiftKey) break;\n e.preventDefault();\n this._focusFullscreenBtn();\n break;\n default:\n break;\n }\n }\n\n _onFullscreenBtnKeydown(e) {\n switch (e.keyCode) {\n case 9:\n if (!e.shiftKey) break;\n e.preventDefault();\n this._focusRightArrow();\n break;\n default:\n break;\n }\n }\n\n _onKeyup(e) {\n this._resetToolsToggler();\n switch (e.keyCode) {\n case 39:\n if (isRTL) {\n this.slide('left');\n } else {\n this.slide();\n }\n\n break;\n case 37:\n if (isRTL) {\n this.slide();\n } else {\n this.slide('left');\n }\n\n break;\n case 27:\n this.close();\n break;\n case 36:\n this.slide('first');\n break;\n case 35:\n this.slide('last');\n break;\n case 38:\n this.zoomIn();\n break;\n case 40:\n this.zoomOut();\n break;\n default:\n break;\n }\n }\n\n _focusFullscreenBtn() {\n setTimeout(() => {\n this._fullscreenBtn.focus();\n }, 100);\n }\n\n _focusRightArrow() {\n this._rightArrow.focus();\n }\n\n _moveImg(target) {\n if (this._multitouch) return;\n if (this._zoom !== 1 || target !== this.currentImg || this._images.length <= 1) return;\n\n const movement = this._positionX - this._originalPositionX;\n if (movement > 0) {\n if (isRTL) {\n this.slide();\n } else {\n this.slide('left');\n }\n } else if (movement < 0) {\n if (isRTL) {\n this.slide('left');\n } else {\n this.slide();\n }\n }\n }\n\n _checkDoubleTap(e) {\n clearTimeout(this._doubleTapTimer);\n const currentTime = new Date().getTime();\n const tapLength = currentTime - this._tapTime;\n\n if (this._tapCounter > 0 && tapLength < 500) {\n this._onDoubleClick(e);\n this._doubleTapTimer = setTimeout(() => {\n this._tapTime = new Date().getTime();\n this._tapCounter = 0;\n }, 300);\n } else {\n this._tapCounter++;\n this._tapTime = new Date().getTime();\n }\n }\n\n _resetDoubleTap() {\n this._tapTime = 0;\n this._tapCounter = 0;\n clearTimeout(this._doubleTapTimer);\n }\n\n _onDoubleClick(e) {\n if (this._multitouch) return;\n\n if (!e.touches) this._setNewPositionOnZoomIn(e);\n if (this._zoom !== 1) {\n this._restoreDefaultZoom();\n } else {\n this.zoomIn();\n }\n }\n\n _onWheel(e) {\n const delta = Math.max(-1, Math.min(1, e.deltaY));\n this._zoomOnWheel(e.x, e.y, delta);\n }\n\n _zoomOnWheel(x, y, delta) {\n if (-delta > 0) {\n this._triggerEvents('zoomIn');\n } else {\n this._triggerEvents('zoomOut');\n }\n\n if (this._zoom === 1) {\n this._positionX = 0;\n this._positionY = 0;\n }\n\n Manipulator.style(this.currentImg, { transition: 'none' });\n\n const activeImageClientRect = this.currentImg.getBoundingClientRect();\n\n const pointerX = (x - activeImageClientRect.left) / this._zoom;\n const pointerY = (y - activeImageClientRect.top) / this._zoom;\n\n const targetX = (pointerX - this._positionX) / this._zoom;\n const targetY = (pointerY - this._positionY) / this._zoom;\n\n this._zoom += -delta * this.options.zoomLevel;\n\n const maxZoom = 3;\n const minZoom = 1;\n\n this._zoom = Math.max(minZoom, Math.min(maxZoom, this._zoom));\n\n if (this._zoom === 1) {\n this._positionX = 0;\n this._positionY = 0;\n } else {\n this._positionX = -targetX * this._zoom + pointerX;\n this._positionY = -targetY * this._zoom + pointerY;\n }\n\n Manipulator.style(this.currentImg, { transition: '' });\n Manipulator.style(this.currentImg, {\n transform: `translate(${this._positionX}px,${this._positionY}px) scale(${this._zoom})`,\n });\n\n this._updateZoomBtn();\n\n if (-delta > 0) {\n this._triggerEvents('zoomedIn');\n } else {\n this._triggerEvents('zoomedOut');\n }\n }\n\n _onBackdropClick(e) {\n this._resetToolsToggler();\n\n if (e.target.tagName !== 'DIV') return;\n this.close();\n }\n\n _setNewPositionOnZoomIn(e) {\n clearTimeout(this._zoomTimer);\n this._positionX = window.innerWidth / 2 - e.offsetX - 50;\n this._positionY = window.innerHeight / 2 - e.offsetY - 50;\n this.currentImg.style.transition = 'all 0.5s ease-out';\n this.currentImg.style.left = `${this._positionX}px`;\n this.currentImg.style.top = `${this._positionY}px`;\n\n this._zoomTimer = setTimeout(() => {\n this.currentImg.style.transition = 'none';\n }, 500);\n }\n\n _resetToolsToggler() {\n this._showTools();\n clearTimeout(this._toolsToggleTimer);\n this._setToolsToggleTimout();\n }\n\n _setToolsToggleTimout() {\n this._toolsToggleTimer = setTimeout(() => {\n this._hideTools();\n clearTimeout(this._toolsToggleTimer);\n }, 4000);\n }\n\n _hideTools() {\n Manipulator.style(this._galleryToolbar, { opacity: 0 });\n Manipulator.style(this._leftArrowWrapper, { opacity: 0 });\n Manipulator.style(this._rightArrowWrapper, { opacity: 0 });\n }\n\n _showTools() {\n Manipulator.style(this._galleryToolbar, { opacity: 1 });\n Manipulator.style(this._leftArrowWrapper, { opacity: 1 });\n Manipulator.style(this._rightArrowWrapper, { opacity: 1 });\n }\n\n _disableScroll() {\n Manipulator.addClass(document.body, 'disabled-scroll');\n\n if (document.documentElement.scrollHeight > document.documentElement.clientHeight) {\n Manipulator.addClass(document.body, 'replace-scrollbar');\n }\n }\n\n _enableScroll() {\n setTimeout(() => {\n Manipulator.removeClass(document.body, 'disabled-scroll');\n Manipulator.removeClass(document.body, 'replace-scrollbar');\n }, 300);\n }\n\n _animationStart() {\n this._animating = true;\n setTimeout(() => {\n this._animating = false;\n }, 400);\n }\n\n _restoreDefaultZoom() {\n if (this._zoom !== 1) {\n this._zoom = 1;\n Manipulator.style(this.currentImg.parentNode, { transform: `scale(${this._zoom})` });\n Manipulator.style(this.currentImg, {\n transform: `scale(${this._zoom})`,\n });\n\n this._updateZoomBtn();\n this._updateImgPosition();\n }\n }\n\n _restoreDefaultFullscreen() {\n if (this._fullscreen) this.toggleFullscreen();\n }\n\n _restoreDefaultPosition() {\n clearTimeout(this._zoomTimer);\n const currentImg = this.currentImg;\n\n Manipulator.style(this.currentImg.parentNode, { left: 0, top: 0 });\n Manipulator.style(this.currentImg, { transition: 'all 0.5s ease-out', left: 0, top: 0 });\n\n this._calculateImgSize(currentImg);\n\n setTimeout(() => {\n Manipulator.style(this.currentImg, { transition: 'none' });\n }, 500);\n }\n\n async _triggerEvents(startEvent, completeEvent) {\n EventHandler.trigger(this._element, `${startEvent}.mdb.lightbox`);\n\n if (completeEvent) {\n await setTimeout(() => {\n EventHandler.trigger(this._element, `${completeEvent}.mdb.lightbox`);\n }, 505);\n }\n }\n\n static toggle(event) {\n const lightbox = SelectorEngine.closest(event.target, `.${CLASSNAME_LIGHTBOX}`);\n const instance = Lightbox.getInstance(lightbox) || new Lightbox(lightbox);\n instance.open(event);\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data && /dispose/.test(config)) {\n return;\n }\n if (!data) {\n data = new Lightbox(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](options);\n }\n });\n }\n}\n\nexport default Lightbox;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Tooltip from '../free/tooltip';\nimport Manipulator from '../mdb/dom/manipulator';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'rating';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\n\nconst DefaultType = {\n tooltip: 'string',\n value: '(string|number)',\n readonly: 'boolean',\n after: 'string',\n before: 'string',\n dynamic: 'boolean',\n decimal: 'boolean',\n decimalPrecision: 'number|null',\n};\n\nconst Default = {\n tooltip: 'top',\n value: '',\n readonly: false,\n after: '',\n before: '',\n dynamic: false,\n decimal: false,\n decimalPrecision: null,\n};\n\nconst EVENT_SELECT = `scoreSelect${EVENT_KEY}`;\nconst EVENT_HOVER = `scoreHover${EVENT_KEY}`;\nconst EVENT_SCORE_MOVE = `scoreMove${EVENT_KEY}`;\nconst EVENT_KEYUP = `keyup${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\nconst EVENT_MOUSEDOWN = `mousedown${EVENT_KEY}`;\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Rating extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._icons = SelectorEngine.find('i', this._element);\n this._options = this._getConfig(options);\n this._index = -1;\n this._savedIndex = null;\n this._originalClassList = [];\n this._fn = {};\n this._tooltips = [];\n\n if (this._element) {\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n dispose() {\n if (!this._options.readonly) {\n EventHandler.off(this._element, EVENT_KEYUP);\n EventHandler.off(this._element, EVENT_FOCUSOUT);\n EventHandler.off(this._element, EVENT_KEYDOWN);\n this._element.removeEventListener('mouseleave', this._fn.mouseleave);\n\n this._icons.forEach((el, i) => {\n EventHandler.off(el, EVENT_MOUSEDOWN);\n EventHandler.off(el, 'mousemove');\n el.removeEventListener('mouseenter', this._fn.mouseenter[i]);\n });\n\n this._tooltips.forEach((el) => {\n el._element.removeAttribute('data-mdb-toggle');\n el.dispose();\n });\n\n this._element.removeAttribute('tabIndex');\n }\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _init() {\n if (!this._options.readonly) {\n this._bindMouseEnter();\n this._bindMouseMove();\n this._bindMouseLeave();\n this._bindMouseDown();\n this._bindKeyDown();\n this._bindKeyUp();\n this._bindFocusLost();\n }\n\n if (this._options.dynamic) {\n this._saveOriginalClassList();\n }\n\n if (this._options.decimal) {\n this._setContentVariable();\n }\n\n this._setCustomText();\n this._setCustomColor();\n this._setToolTips();\n\n if (this._options.value) {\n this._index = this._options.value - 1;\n this._updateRating(this._index);\n }\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n _bindMouseEnter() {\n this._fn.mouseenter = [];\n this._icons.forEach((el, i) => {\n // EventHandler.on changes mouseenter to mouseover - use addEventListener\n el.addEventListener(\n 'mouseenter',\n // this._fn.mouseenter[i] is needed to create reference and unpin events after call dispose\n // prettier-ignore\n this._fn.mouseenter[i] = (e) => {\n this._index = this._calculateIndex(e, el, i);\n this._updateRating(this._index);\n this._triggerEvents(el, EVENT_HOVER);\n // prettier-ignore\n }\n );\n });\n }\n\n _bindMouseMove() {\n if (!this._options.decimal) {\n return;\n }\n\n this._fn.mousemove = [];\n this._icons.forEach((el, i) => {\n EventHandler.on(el, 'mousemove', (e) => {\n this._index = this._calculateIndex(e, el, i);\n this._updateRating(this._index);\n this._triggerEvents(el, EVENT_SCORE_MOVE);\n });\n });\n }\n\n _calculateIndex(e, el, i) {\n if (this._options.decimal) {\n const rect = el.getBoundingClientRect();\n const mouseX = e.pageX - rect.left + window.scrollX;\n const elementWidth = el.offsetWidth;\n const fraction = mouseX / elementWidth - 1;\n return Number((i + fraction).toFixed(2));\n }\n return Math.round(i);\n }\n\n _bindMouseLeave() {\n // EventHandler.on changes mouseleave to mouseout - use addEventListener\n this._element.addEventListener(\n 'mouseleave',\n // this._fn.mouseleave is needed to create reference and unpin events after call dispose\n // prettier-ignore\n this._fn.mouseleave = () => {\n if (this._savedIndex !== null) {\n this._updateRating(this._savedIndex);\n this._index = this._savedIndex;\n } else if (this._options.value) {\n this._updateRating(this._options.value - 1);\n this._index = this._options.value - 1\n } else {\n this._index = -1;\n this._clearRating();\n }\n // prettier-ignore\n }\n );\n }\n\n _bindMouseDown() {\n this._icons.forEach((el) => {\n EventHandler.on(el, EVENT_MOUSEDOWN, () => {\n this._setElementOutline('none');\n this._savedIndex = this._index;\n this._triggerEvents(el, EVENT_SELECT);\n });\n });\n }\n\n _bindKeyDown() {\n this._element.tabIndex = 0;\n EventHandler.on(this._element, EVENT_KEYDOWN, (e) => this._updateAfterKeyDown(e));\n }\n\n _bindKeyUp() {\n EventHandler.on(this._element, EVENT_KEYUP, () => this._setElementOutline('auto'));\n }\n\n _bindFocusLost() {\n EventHandler.on(this._element, EVENT_FOCUSOUT, () => this._setElementOutline('none'));\n }\n\n _setElementOutline(value) {\n this._element.style.outline = value;\n }\n\n _setContentVariable() {\n this._icons.forEach((el) => {\n const beforeContent = window.getComputedStyle(el, '::before').content;\n el.style.setProperty('--content', `${beforeContent}`);\n });\n }\n\n _triggerEvents(el, event) {\n EventHandler.trigger(el, event, {\n value: this._index + 1,\n });\n }\n\n _updateAfterKeyDown(e) {\n const maxIndex = this._icons.length - 1;\n const indexBeforeChange = this._index;\n\n if (e.key === ARROW_RIGHT_KEY && this._index < maxIndex) {\n this._index += 1;\n }\n\n if (e.key === ARROW_LEFT_KEY && this._index > -1) {\n this._index -= 1;\n }\n\n if (indexBeforeChange !== this._index) {\n this._savedIndex = this._index;\n this._updateRating(this._savedIndex);\n this._triggerEvents(this._icons[this._savedIndex], EVENT_SELECT);\n }\n }\n\n _updateRating(index) {\n this._clearRating();\n\n if (this._options.dynamic) {\n this._restoreOriginalIcon(index);\n }\n\n this._icons.forEach((el, i) => {\n if (i <= index) {\n el.classList.add('fas', 'active');\n el.classList.remove('far');\n }\n });\n\n if (this._options.decimal && !Number.isInteger(index)) {\n const partial = Math.floor(index) + 1;\n const fillFraction = this._roundToPrecision(index - Math.floor(index));\n const fillPercentage = `${fillFraction * 100}%`;\n\n this._index = Number(this._roundToPrecision(index));\n\n this._icons[partial]?.classList.add('fas', 'partial');\n this._icons[partial]?.classList.remove('far');\n this._icons[partial]?.style.setProperty('--percentage', fillPercentage);\n }\n }\n\n _roundToPrecision(num) {\n const precision = this._options.decimalPrecision;\n if (!precision) {\n return num;\n }\n const decimalDigits = this._countDecimals(precision);\n const roundedNumber = Math.round(num / precision) * precision;\n return roundedNumber.toFixed(decimalDigits);\n }\n\n _countDecimals(number) {\n const str = number.toFixed(5);\n const decimalPart = str.split('.')[1];\n return decimalPart.replace(/0+$/, '').length;\n }\n\n _clearRating() {\n this._icons.forEach((el, i) => {\n if (this._options.dynamic) {\n el.classList = this._originalClassList[i];\n } else {\n el.classList.remove('fas', 'active', 'partial');\n el.classList.add('far');\n }\n });\n }\n\n _setToolTips() {\n this._icons.forEach((el, i) => {\n const hasOwnTooltips = Manipulator.getDataAttribute(el, 'toggle');\n\n if (el.title && !hasOwnTooltips) {\n Manipulator.setDataAttribute(el, 'toggle', 'tooltip');\n this._tooltips[i] = new Tooltip(el, { placement: this._options.tooltip });\n }\n });\n }\n\n _setCustomText() {\n this._icons.forEach((el) => {\n const after = Manipulator.getDataAttribute(el, 'after');\n const before = Manipulator.getDataAttribute(el, 'before');\n\n if (after) {\n el.insertAdjacentHTML('afterEnd', after);\n }\n\n if (before) {\n el.insertAdjacentHTML('beforeBegin', before);\n }\n });\n }\n\n _setCustomColor() {\n this._icons.forEach((el) => {\n const color = Manipulator.getDataAttribute(el, 'color');\n\n if (color) {\n el.style.color = color;\n }\n });\n }\n\n _saveOriginalClassList() {\n this._icons.forEach((el) => {\n const classList = el.classList.value;\n this._originalClassList.push(classList);\n });\n }\n\n _restoreOriginalIcon(index) {\n const classList = this._originalClassList[index];\n const color = Manipulator.getDataAttribute(this._icons[index], 'color');\n\n this._icons.forEach((el, i) => {\n if (i <= index) {\n el.classList = classList;\n el.style.color = color;\n }\n });\n }\n\n // Static\n\n static autoInit(el) {\n return new Rating(el);\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Rating(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Rating;\n","/* eslint-disable */\n\nexport function get(element) {\n return getComputedStyle(element);\n}\n\nexport function set(element, obj) {\n for (const key in obj) {\n let val = obj[key];\n if (typeof val === 'number') {\n val = `${val}px`;\n }\n element.style[key] = val;\n }\n return element;\n}\n","/* eslint-disable */\n\nexport function div(className) {\n const div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nconst elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nexport function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nexport function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nexport function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, (child) => matches(child, selector));\n}\n","/* eslint-disable */\n\nconst cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: (x) => `ps__thumb-${x}`,\n rail: (x) => `ps__rail-${x}`,\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: (x) => `ps--active-${x}`,\n scrolling: (x) => `ps--scrolling-${x}`,\n },\n};\n\nexport default cls;\n\n/*\n * Helper methods\n */\nconst scrollingClassTimeout = { x: null, y: null };\n\nexport function addScrollingClass(i, x) {\n const classList = i.element.classList;\n const className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nexport function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)),\n i.settings.scrollingThreshold\n );\n}\n\nexport function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n","/* eslint-disable */\nclass EventElement {\n constructor(element) {\n this.element = element;\n this.handlers = {};\n }\n\n bind(eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n }\n\n unbind(eventName, target) {\n this.handlers[eventName] = this.handlers[eventName].filter((handler) => {\n if (target && handler !== target) {\n return true;\n }\n this.element.removeEventListener(eventName, handler, false);\n return false;\n });\n }\n\n unbindAll() {\n for (const name in this.handlers) {\n this.unbind(name);\n }\n }\n\n get isEmpty() {\n return Object.keys(this.handlers).every((key) => this.handlers[key].length === 0);\n }\n}\n\nexport default class EventManager {\n constructor() {\n this.eventElements = [];\n }\n\n eventElement(element) {\n let ee = this.eventElements.filter((ee) => ee.element === element)[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n }\n\n bind(element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n }\n\n unbind(element, eventName, handler) {\n const ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n }\n\n unbindAll() {\n this.eventElements.forEach((e) => e.unbindAll());\n this.eventElements = [];\n }\n\n once(element, eventName, handler) {\n const ee = this.eventElement(element);\n const onceHandler = (evt) => {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n }\n}\n","import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n }\n\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n}\n\nexport default function (i, axis, diff, useScrollingClass = true, forceFireReachEvent = false) {\n let fields;\n if (axis === 'top') {\n fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down'];\n } else if (axis === 'left') {\n fields = ['contentWidth', 'containerWidth', 'scrollLeft', 'x', 'left', 'right'];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff(\n i,\n diff,\n [contentHeight, containerHeight, scrollTop, y, up, down],\n useScrollingClass = true,\n forceFireReachEvent = false\n) {\n const element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent(`ps-scroll-${y}`));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${up}`));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent(`ps-scroll-${down}`));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`));\n }\n}\n","/* eslint-disable */\n\nimport * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nexport function isEditable(el) {\n return (\n DOM.matches(el, 'input,[contenteditable]') ||\n DOM.matches(el, 'select,[contenteditable]') ||\n DOM.matches(el, 'textarea,[contenteditable]') ||\n DOM.matches(el, 'button,[contenteditable]')\n );\n}\n\nexport function outerWidth(element) {\n const styles = CSS.get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nexport const env = {\n isWebKit: typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer: typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome: typeof navigator !== 'undefined' && /Chrome/i.test(navigator && navigator.userAgent),\n};\n","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt } from './lib/util';\n\n/* eslint-disable no-lonely-if */\n\nexport default function (i) {\n const element = i.element;\n const roundedScrollTop = Math.floor(element.scrollTop);\n const rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.floor(rect.width);\n i.containerHeight = Math.floor(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('x')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n DOM.queryChildren(element, cls.element.rail('y')).forEach((el) => DOM.remove(el));\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(i, toInt((i.railXWidth * i.containerWidth) / i.contentWidth));\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n const xRailOffset = { width: i.railXWidth };\n const roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n CSS.set(i.scrollbarXRail, xRailOffset);\n\n const yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n CSS.set(i.scrollbarYRail, yRailOffset);\n\n CSS.set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n CSS.set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n","import cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\n\nlet activeSlider = null; // Variable to track the currently active slider\n\nexport default function setupScrollHandlers(i) {\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail',\n ]);\n\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail',\n ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n [\n containerDimension,\n contentDimension,\n pageAxis,\n railDimension,\n scrollbarAxis,\n scrollbarDimension,\n scrollAxis,\n axis,\n scrollbarRail,\n ]\n) {\n const element = i.element;\n let startingScrollPosition = null;\n let startingMousePagePosition = null;\n let scrollBy = null;\n\n function moveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n\n // Only move if the active slider is the one we started with\n if (activeSlider === scrollbarAxis) {\n element[scrollAxis] =\n startingScrollPosition + scrollBy * (e[pageAxis] - startingMousePagePosition);\n addScrollingClass(i, axis);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n function endHandler() {\n removeScrollingClass(i, axis);\n i[scrollbarRail].classList.remove(cls.state.clicking);\n document.removeEventListener('mousemove', moveHandler);\n document.removeEventListener('mouseup', endHandler);\n document.removeEventListener('touchmove', moveHandler);\n document.removeEventListener('touchend', endHandler);\n activeSlider = null; // Reset active slider when interaction ends\n }\n\n function bindMoves(e) {\n if (activeSlider === null) {\n // Only bind if no slider is currently active\n activeSlider = scrollbarAxis; // Set current slider as active\n\n startingScrollPosition = element[scrollAxis];\n if (e.touches) {\n e[pageAxis] = e.touches[0][`page${axis.toUpperCase()}`];\n }\n startingMousePagePosition = e[pageAxis];\n scrollBy =\n (i[contentDimension] - i[containerDimension]) / (i[railDimension] - i[scrollbarDimension]);\n\n if (!e.touches) {\n document.addEventListener('mousemove', moveHandler);\n document.addEventListener('mouseup', endHandler);\n } else {\n document.addEventListener('touchmove', moveHandler, { passive: false });\n document.addEventListener('touchend', endHandler);\n }\n\n i[scrollbarRail].classList.add(cls.state.clicking);\n }\n\n e.stopPropagation();\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n\n i[scrollbarAxis].addEventListener('mousedown', bindMoves);\n i[scrollbarAxis].addEventListener('touchstart', bindMoves);\n}\n","/* eslint-disable */\n\nimport * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport EventManager from './lib/event-manager';\nimport processScrollDiff from './process-scroll-diff';\nimport updateGeometry from './update-geometry';\nimport { toInt, outerWidth } from './lib/util';\n\nimport clickRail from './handlers/click-rail';\nimport dragThumb from './handlers/drag-thumb';\nimport keyboard from './handlers/keyboard';\nimport wheel from './handlers/mouse-wheel';\nimport touch from './handlers/touch';\n\nconst defaultSettings = () => ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n});\n\nconst handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard,\n wheel,\n touch,\n};\n\nexport default class PerfectScrollbar {\n constructor(element, userSettings = {}) {\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (const key in userSettings) {\n this.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n const focus = () => element.classList.add(cls.state.focus);\n const blur = () => element.classList.remove(cls.state.focus);\n\n this.isRtl = CSS.get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (() => {\n const originalScrollLeft = element.scrollLeft;\n let result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = DOM.div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = DOM.div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n const railXStyle = CSS.get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth = toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n CSS.set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = DOM.div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = DOM.div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n const railYStyle = CSS.get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight = toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n CSS.set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach((handlerName) => handlers[handlerName](this));\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', (e) => this.onScroll(e));\n updateGeometry(this);\n }\n\n update() {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n CSS.set(this.scrollbarXRail, { display: 'block' });\n CSS.set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(CSS.get(this.scrollbarXRail).marginLeft) +\n toInt(CSS.get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(CSS.get(this.scrollbarYRail).marginTop) +\n toInt(CSS.get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n CSS.set(this.scrollbarXRail, { display: 'none' });\n CSS.set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n CSS.set(this.scrollbarXRail, { display: '' });\n CSS.set(this.scrollbarYRail, { display: '' });\n }\n\n onScroll(e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(this, 'left', this.element.scrollLeft - this.lastScrollLeft);\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n }\n\n destroy() {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n DOM.remove(this.scrollbarX);\n DOM.remove(this.scrollbarY);\n DOM.remove(this.scrollbarXRail);\n DOM.remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n }\n\n removePsClasses() {\n this.element.className = this.element.className\n .split(' ')\n .filter((name) => !name.match(/^ps([-_].+|)$/))\n .join(' ');\n }\n}\n","/* eslint-disable */\n\nimport updateGeometry from '../update-geometry';\n\nexport default function (i) {\n // const element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarYRail, 'mousedown', (e) => {\n const positionTop = e.pageY - window.pageYOffset - i.scrollbarYRail.getBoundingClientRect().top;\n const direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', (e) => e.stopPropagation());\n i.event.bind(i.scrollbarXRail, 'mousedown', (e) => {\n const positionLeft =\n e.pageX - window.pageXOffset - i.scrollbarXRail.getBoundingClientRect().left;\n const direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n","/* eslint-disable */\n\nimport * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEditable } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n const elementHovered = () => DOM.matches(element, ':hover');\n const scrollbarFocused = () =>\n DOM.matches(i.scrollbarX, ':focus') || DOM.matches(i.scrollbarY, ':focus');\n\n function shouldPreventDefault(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n const scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', (e) => {\n if ((e.isDefaultPrevented && e.isDefaultPrevented()) || e.defaultPrevented) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n let activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n let deltaX = 0;\n let deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n","/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { env } from '../lib/util';\n\nexport default function (i) {\n const element = i.element;\n\n let shouldPrevent = false;\n\n function shouldPreventDefault(deltaX, deltaY) {\n const roundedScrollTop = Math.floor(element.scrollTop);\n const isTop = element.scrollTop === 0;\n const isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight;\n const isLeft = element.scrollLeft === 0;\n const isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n let hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n let deltaX = e.deltaX;\n let deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n const [deltaX, deltaY] = getDeltaFromEvent(e);\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n let shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n}\n","import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css';\nimport { env } from '../lib/util';\n\nexport default function (i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n const element = i.element;\n\n const state = {\n startOffset: {},\n startTime: 0,\n speed: {},\n easingLoop: null,\n };\n\n function shouldPrevent(deltaX, deltaY) {\n const scrollTop = Math.floor(element.scrollTop);\n const scrollLeft = element.scrollLeft;\n const magnitudeX = Math.abs(deltaX);\n const magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n }\n // Maybe IE pointer\n return e;\n }\n\n function shouldHandle(e) {\n if (e.target === i.scrollbarX || e.target === i.scrollbarY) {\n return false;\n }\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n const touch = getTouch(e);\n\n state.startOffset.pageX = touch.pageX;\n state.startOffset.pageY = touch.pageY;\n\n state.startTime = new Date().getTime();\n\n if (state.easingLoop !== null) {\n clearInterval(state.easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n let cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n const style = CSS.get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n const touch = getTouch(e);\n\n const currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n const differenceX = currentOffset.pageX - state.startOffset.pageX;\n const differenceY = currentOffset.pageY - state.startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n state.startOffset = currentOffset;\n\n const currentTime = new Date().getTime();\n\n const timeGap = currentTime - state.startTime;\n if (timeGap > 0) {\n state.speed.x = differenceX / timeGap;\n state.speed.y = differenceY / timeGap;\n state.startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n // Prevent the default behavior if the event is cancelable\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n }\n }\n\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(state.easingLoop);\n state.easingLoop = setInterval(() => {\n if (i.isInitialized) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (!state.speed.x && !state.speed.y) {\n clearInterval(state.easingLoop);\n return;\n }\n\n if (Math.abs(state.speed.x) < 0.01 && Math.abs(state.speed.y) < 0.01) {\n clearInterval(state.easingLoop);\n return;\n }\n\n applyTouchMove(state.speed.x * 30, state.speed.y * 30);\n\n state.speed.x *= 0.8;\n state.speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n","import SelectorEngine from '../dom/selector-engine';\nimport { isVisible } from './index';\n\nclass FocusTrap {\n constructor(element, options = {}, toggler) {\n this._element = element;\n this._toggler = toggler;\n this._event = options.event || 'blur';\n this._condition = options.condition || (() => true);\n this._selector =\n options.selector || 'button, a, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n this._onlyVisible = options.onlyVisible || false;\n this._focusableElements = [];\n this._firstElement = null;\n this._lastElement = null;\n\n this.handler = (e) => {\n if (this._condition(e) && e.target === this._lastElement) {\n e.preventDefault();\n this._firstElement.focus();\n }\n };\n }\n\n trap() {\n this._setElements();\n this._init();\n this._setFocusTrap();\n }\n\n disable() {\n this._focusableElements.forEach((element) => {\n element.removeEventListener(this._event, this.handler);\n });\n\n if (this._toggler) {\n this._toggler.focus();\n }\n }\n\n update() {\n this._setElements();\n this._setFocusTrap();\n }\n\n _init() {\n const handler = (e) => {\n if (!this._firstElement || e.key !== 'Tab' || this._focusableElements.includes(e.target)) {\n return;\n }\n\n e.preventDefault();\n this._firstElement.focus();\n\n window.removeEventListener('keydown', handler);\n };\n\n window.addEventListener('keydown', handler);\n }\n\n _filterVisible(elements) {\n return elements.filter((el) => {\n if (!isVisible(el)) return false;\n\n const ancestors = SelectorEngine.parents(el, '*');\n\n for (let i = 0; i < ancestors.length; i++) {\n const style = window.getComputedStyle(ancestors[i]);\n if (style && (style.display === 'none' || style.visibility === 'hidden')) return false;\n }\n return true;\n });\n }\n\n _setElements() {\n const allElements = SelectorEngine.find(this._selector, this._element);\n\n // filter out elements that are not focusable\n this._focusableElements = allElements.filter((el) => {\n const hasDisabledAttribute =\n el.getAttribute('data-mdb-disabled') === 'true' || el.hasAttribute('disabled');\n const isDisabled = el.disabled || hasDisabledAttribute;\n\n if (!isDisabled) {\n return el;\n }\n return null;\n });\n\n if (this._onlyVisible) {\n this._focusableElements = this._filterVisible(this._focusableElements);\n }\n\n this._firstElement = this._focusableElements[0];\n this._lastElement = this._focusableElements[this._focusableElements.length - 1];\n }\n\n _setFocusTrap() {\n this._focusableElements.forEach((element, i) => {\n if (i === this._focusableElements.length - 1) {\n element.addEventListener(this._event, this.handler);\n } else {\n element.removeEventListener(this._event, this.handler);\n }\n });\n }\n}\n\nexport default FocusTrap;\n","export const LEFT_ARROW = 37;\nexport const UP_ARROW = 38;\nexport const RIGHT_ARROW = 39;\nexport const DOWN_ARROW = 40;\nexport const HOME = 36;\nexport const END = 35;\nexport const PAGE_UP = 33;\nexport const PAGE_DOWN = 34;\nexport const ENTER = 13;\nexport const SPACE = 32;\nexport const ESCAPE = 27;\nexport const TAB = 9;\nexport const BACKSPACE = 8;\nexport const DELETE = 46;\nexport const A = 65;\nexport const B = 66;\nexport const C = 67;\nexport const D = 68;\nexport const E = 69;\nexport const F = 70;\nexport const G = 71;\nexport const H = 72;\nexport const I = 73;\nexport const J = 74;\nexport const K = 75;\nexport const L = 76;\nexport const M = 77;\nexport const N = 78;\nexport const O = 79;\nexport const P = 80;\nexport const Q = 81;\nexport const R = 82;\nexport const S = 83;\nexport const T = 84;\nexport const U = 85;\nexport const V = 86;\nexport const W = 87;\nexport const X = 88;\nexport const Y = 89;\nexport const Z = 90;\n","import EventHandler from '../../dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n threshold: 10,\n direction: 'all',\n};\n\nclass Swipe {\n constructor(element, options) {\n this._element = element;\n this._startPosition = null;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n }\n\n handleTouchStart(e) {\n this._startPosition = this._getCoordinates(e);\n }\n\n handleTouchMove(e) {\n if (!this._startPosition) return;\n\n const position = this._getCoordinates(e);\n const displacement = {\n x: position.x - this._startPosition.x,\n y: position.y - this._startPosition.y,\n };\n\n const swipe = this._getDirection(displacement);\n\n if (this._options.direction === 'all') {\n if (swipe.y.value < this._options.threshold && swipe.x.value < this._options.threshold) {\n return;\n }\n const direction = swipe.y.value > swipe.x.value ? swipe.y.direction : swipe.x.direction;\n EventHandler.trigger(this._element, `swipe${direction}`);\n EventHandler.trigger(this._element, 'swipe', { direction });\n this._startPosition = null;\n return;\n }\n\n const axis = this._options.direction === 'left' || this._options === 'right' ? 'x' : 'y';\n\n if (\n swipe[axis].direction === this._options.direction &&\n swipe[axis].value > this._options.threshold\n ) {\n EventHandler.trigger(this._element, `swipe${swipe[axis].direction}`);\n this._startPosition = null;\n }\n }\n\n handleTouchEnd() {\n this._startPosition = null;\n }\n\n _getCoordinates(e) {\n const [touch] = e.touches;\n return {\n x: touch.clientX,\n y: touch.clientY,\n };\n }\n\n _getDirection(displacement) {\n return {\n x: {\n direction: displacement.x < 0 ? 'left' : 'right',\n value: Math.abs(displacement.x),\n },\n y: {\n direction: displacement.y < 0 ? 'up' : 'down',\n value: Math.abs(displacement.y),\n },\n };\n }\n}\n\nexport default Swipe;\n","import Swipe from './swipe';\n\nclass Touch {\n constructor(element, event = 'swipe', options = {}) {\n this._element = element;\n this._event = event;\n\n // events\n\n this.swipe = new Swipe(element, options);\n\n // handlers\n\n this._touchStartHandler = this._handleTouchStart.bind(this);\n this._touchMoveHandler = this._handleTouchMove.bind(this);\n this._touchEndHandler = this._handleTouchEnd.bind(this);\n }\n\n dispose() {\n this._element.removeEventListener('touchstart', this._touchStartHandler);\n this._element.removeEventListener('touchmove', this._touchMoveHandler);\n window.removeEventListener('touchend', this._touchEndHandler);\n }\n\n init() {\n // istanbul ignore next\n this._element.addEventListener('touchstart', (e) => this._handleTouchStart(e));\n // istanbul ignore next\n this._element.addEventListener('touchmove', (e) => this._handleTouchMove(e));\n // istanbul ignore next\n window.addEventListener('touchend', (e) => this._handleTouchEnd(e));\n }\n\n _handleTouchStart(e) {\n this[this._event].handleTouchStart(e);\n }\n\n _handleTouchMove(e) {\n this[this._event].handleTouchMove(e);\n }\n\n _handleTouchEnd(e) {\n this[this._event].handleTouchEnd(e);\n }\n}\n\nexport default Touch;\n","import PerfectScrollbar from '../mdb/perfect-scrollbar';\nimport { array, element, isVisible, typeCheckConfig, isRTL } from '../mdb/util/index';\nimport FocusTrap from '../mdb/util/focusTrap';\nimport { ENTER, TAB, ESCAPE } from '../mdb/util/keycodes';\nimport Touch from '../mdb/util/touch';\nimport Collapse from '../bootstrap/mdb-prefix/collapse';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Ripple from '../free/ripple';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'sidenav';\nconst DATA_KEY = 'mdb.sidenav';\nconst ARROW_CLASS = 'rotate-icon';\nconst BACKDROP_CLASS = 'sidenav-backdrop';\nconst SELECTOR_TOGGLE = '[data-mdb-toggle=\"sidenav\"]';\nconst SELECTOR_TOGGLE_COLLAPSE = '[data-mdb-collapse-init]';\nconst SELECTOR_SHOW_SLIM = '[data-mdb-slim=\"true\"]';\nconst SELECTOR_HIDE_SLIM = '[data-mdb-slim=\"false\"]';\nconst SELECTOR_NAVIGATION = '.sidenav-menu';\nconst SELECTOR_COLLAPSE = '.sidenav-collapse';\nconst SELECTOR_LINK = '.sidenav-link';\n\nconst TRANSLATION_LEFT = isRTL ? 100 : -100;\nconst TRANSLATION_RIGHT = isRTL ? -100 : 100;\n\nlet instanceCount = 0;\n\nconst OPTIONS_TYPE = {\n accordion: '(boolean)',\n backdrop: '(boolean)',\n backdropClass: '(null|string)',\n closeOnEsc: '(boolean)',\n color: '(string)',\n content: '(null|string)',\n expandable: '(boolean)',\n expandOnHover: '(boolean)',\n focusTrap: '(boolean)',\n hidden: '(boolean)',\n mode: '(string)',\n scrollContainer: '(null|string)',\n slim: '(boolean)',\n slimCollapsed: '(boolean)',\n slimWidth: '(number)',\n position: '(string)',\n right: '(boolean)',\n transitionDuration: '(number)',\n width: '(number)',\n};\n\nconst DEFAULT_OPTIONS = {\n accordion: false,\n backdrop: true,\n backdropClass: null,\n closeOnEsc: true,\n color: 'primary',\n content: null,\n expandable: true,\n expandOnHover: false,\n focusTrap: true,\n hidden: true,\n mode: 'over',\n scrollContainer: null,\n slim: false,\n slimCollapsed: false,\n slimWidth: 77,\n position: 'fixed',\n right: false,\n transitionDuration: 300,\n width: 240,\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Sidenav extends BaseComponent {\n constructor(node, options = {}) {\n super(node);\n\n this._options = options;\n\n instanceCount++;\n this._ID = instanceCount;\n\n this._backdrop = null;\n this._content = null;\n this._initialContentStyle = null;\n this._slimCollapsed = false;\n\n this._activeNode = null;\n\n this._tempSlim = false;\n\n this._focusTrap = null;\n this._perfectScrollbar = null;\n this._touch = null;\n\n this.escHandler = (e) => {\n if (e.keyCode === ESCAPE && this.toggler && isVisible(this.toggler)) {\n this._update(false);\n\n EventHandler.off(window, 'keydown', this.escHandler);\n }\n };\n\n this.hashHandler = () => {\n this._setActiveElements();\n };\n\n if (node) {\n this._setup();\n }\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get container() {\n if (this.options.position === 'fixed') {\n return SelectorEngine.findOne('body');\n }\n\n const findContainer = (el) => {\n if (!el.parentNode || el.parentNode === document) {\n return el;\n }\n const isRelative =\n el.parentNode.style.position === 'relative' ||\n el.parentNode.classList.contains('position-relative');\n if (isRelative) {\n return el.parentNode;\n }\n return findContainer(el.parentNode);\n };\n\n return findContainer(this._element);\n }\n\n get isVisible() {\n let containerStart = 0;\n let containerEnd = window.innerWidth;\n\n if (this.options.position !== 'fixed') {\n const boundry = this.container.getBoundingClientRect();\n containerStart = boundry.x;\n containerEnd = boundry.x + boundry.width;\n }\n\n const { x } = this._element.getBoundingClientRect();\n\n if ((this.options.right && !isRTL) || (!this.options.right && isRTL)) {\n let scrollBarWidth = 0;\n // check if there is scrollbar and account for it width if there is one\n if (this.container.scrollHeight > this.container.clientHeight) {\n scrollBarWidth = this.container.offsetWidth - this.container.clientWidth;\n }\n\n if (this.container.tagName === 'BODY') {\n const documentWidth = document.documentElement.clientWidth;\n scrollBarWidth = Math.abs(window.innerWidth - documentWidth);\n }\n\n return Math.abs(x + scrollBarWidth - containerEnd) > 10;\n }\n return Math.abs(x - containerStart) < 10;\n }\n\n get links() {\n return SelectorEngine.find(SELECTOR_LINK, this._element);\n }\n\n get navigation() {\n return SelectorEngine.find(SELECTOR_NAVIGATION, this._element);\n }\n\n get options() {\n const config = {\n ...DEFAULT_OPTIONS,\n ...Manipulator.getDataAttributes(this._element),\n ...this._options,\n };\n\n typeCheckConfig(NAME, config, OPTIONS_TYPE);\n\n return config;\n }\n\n get sidenavStyle() {\n return {\n width: `${this.width}px`,\n height: this.options.position === 'fixed' ? '100vh' : '100%',\n position: this.options.position,\n transitionDuration: this.transitionDuration,\n transitionProperty: 'transform, width, padding, margin',\n transitionTimingFunction: 'linear',\n };\n }\n\n get toggler() {\n const toggleElement = SelectorEngine.find(SELECTOR_TOGGLE).find((toggler) => {\n const target = Manipulator.getDataAttribute(toggler, 'target');\n return SelectorEngine.findOne(target) === this._element;\n });\n return toggleElement;\n }\n\n get transitionDuration() {\n return `${this.options.transitionDuration / 1000}s`;\n }\n\n get translation() {\n return this.options.right ? TRANSLATION_RIGHT : TRANSLATION_LEFT;\n }\n\n get width() {\n return this._slimCollapsed ? this.options.slimWidth : this.options.width;\n }\n\n // Public\n\n changeMode(mode) {\n this._setMode(mode);\n }\n\n dispose() {\n if (this._backdrop) {\n this._removeBackdrop();\n }\n\n EventHandler.off(window, 'keydown', this.escHandler);\n\n EventHandler.off(window, 'hashchange', this.hashHandler);\n\n this._touch.dispose();\n\n Data.removeData(this._element, DATA_KEY);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n hide() {\n this._setVisibility(false);\n this._update(false);\n }\n\n show() {\n this._setVisibility(true);\n this._update(true);\n }\n\n toggle() {\n this._setVisibility(!this.isVisible);\n this._update(!this.isVisible);\n }\n\n toggleSlim() {\n this._setSlim(!this._slimCollapsed);\n }\n\n update(options) {\n this._options = options;\n\n this._setup();\n }\n\n // Private\n\n _appendArrow(node) {\n const arrow = element('i');\n\n ['fas', 'fa-angle-down', ARROW_CLASS].forEach((className) => {\n Manipulator.addClass(arrow, className);\n });\n\n if (SelectorEngine.find(`.${ARROW_CLASS}`, node).length === 0) {\n node.appendChild(arrow);\n }\n }\n\n _collapseItems() {\n this.navigation.forEach((menu) => {\n const collapseElements = SelectorEngine.find(SELECTOR_COLLAPSE, menu);\n collapseElements.forEach((el) => {\n Collapse.getInstance(el).hide();\n });\n });\n }\n\n _setupBackdrop() {\n const classes = [];\n if (this.options.backdropClass) {\n classes.push(this.options.backdropClass);\n }\n const style = {\n transition: `opacity ${this.transitionDuration} ease-out`,\n position: this.options.position,\n width: this.options.position === 'fixed' ? '100vw' : '100%',\n height: this.options.position === 'fixed' ? '100vh' : '100%',\n };\n\n if (!this._backdrop) {\n const backdrop = element('div');\n\n classes.push(BACKDROP_CLASS);\n style.opacity = 0;\n\n EventHandler.on(backdrop, 'click', () => {\n this._setVisibility(false);\n this._update(false);\n });\n\n this._backdrop = backdrop;\n }\n\n this._backdrop.classList.add(...classes);\n\n Manipulator.style(this._backdrop, style);\n }\n\n _getOffsetValue(show, { index, property, offsets }) {\n const initialValue = this._getPxValue(\n this._initialContentStyle[index][offsets[property].property]\n );\n const offset = show ? offsets[property].value : 0;\n return initialValue + offset;\n }\n\n _getProperty(...args) {\n return args\n .map((arg, i) => {\n if (i === 0) {\n return arg;\n }\n return arg[0].toUpperCase().concat(arg.slice(1));\n })\n .join('');\n }\n\n _getPxValue(property) {\n if (!property) {\n return 0;\n }\n return parseFloat(property);\n }\n\n _handleSwipe(e, inverseDirecion) {\n if (inverseDirecion && this._slimCollapsed && this.options.slim && this.options.expandable) {\n this.toggleSlim();\n } else if (!inverseDirecion) {\n if (this._slimCollapsed || !this.options.slim || !this.options.expandable) {\n if (this.toggler && isVisible(this.toggler)) {\n this.toggle();\n }\n } else {\n this.toggleSlim();\n }\n }\n }\n\n _isActive(link, reference) {\n if (reference) {\n return reference === link;\n }\n\n if (link.attributes.href) {\n const trimmedLink = window.location.href.split(/#|\\?/)[0];\n const strippedRequests = window.location.href.split('?')[0];\n return (\n new URL(link, window.location.href).href === trimmedLink ||\n new URL(link, window.location.href).href === strippedRequests\n );\n }\n\n return false;\n }\n\n _isAllToBeCollapsed() {\n const collapseElements = SelectorEngine.find(SELECTOR_TOGGLE_COLLAPSE, this._element);\n const collapseElementsExpanded = collapseElements.filter(\n (collapsible) => collapsible.getAttribute('aria-expanded') === 'true'\n );\n return collapseElementsExpanded.length === 0;\n }\n\n _isAllCollapsed() {\n return (\n SelectorEngine.find(SELECTOR_COLLAPSE, this._element).filter((el) => isVisible(el)).length ===\n 0\n );\n }\n\n _setup() {\n // Touch events\n this._setupTouch();\n\n // Focus trap\n\n if (this.options.focusTrap) {\n this._setupFocusTrap();\n }\n\n // Backdrop\n\n if (this.options.backdrop) {\n this._setupBackdrop();\n\n if (!this.options.hidden && this.options.mode === 'over') {\n this._appendBackdrop();\n }\n }\n\n // Collapse\n\n this._setupCollapse();\n\n // Slim\n\n if (this.options.slimCollapsed) {\n Manipulator.addClass(this._element, 'sidenav-slim');\n }\n\n if (this.options.slim) {\n this._setupSlim();\n }\n\n // Initial position\n\n this._setupInitialStyling();\n\n // Perfect Scrollbar\n\n this._setupScrolling();\n\n // Content\n\n if (this.options.content) {\n this._setupContent();\n }\n\n // Active link\n\n this._setupActiveState();\n\n // Ripple\n\n this._setupRippleEffect();\n\n // Shown on init\n\n if (!this.options.hidden) {\n if (this.options.right) {\n this.show();\n }\n this._updateOffsets(true, true);\n }\n }\n\n _setupActiveState() {\n this._setActiveElements();\n\n this.links.forEach((link) => {\n EventHandler.on(link, 'click', () => this._setActiveElements(link));\n EventHandler.on(link, 'keydown', (e) => {\n if (e.keyCode === ENTER) {\n this._setActiveElements(link);\n }\n });\n });\n\n EventHandler.on(window, 'hashchange', this.hashHandler);\n }\n\n _setupCollapse() {\n this.navigation.forEach((menu, menuIndex) => {\n const categories = SelectorEngine.find(SELECTOR_COLLAPSE, menu);\n categories.forEach((list, index) =>\n this._setupCollapseList({ list, index, menu, menuIndex })\n );\n });\n }\n\n _generateCollpaseID(index, menuIndex) {\n return `sidenav-collapse-${this._ID}-${menuIndex}-${index}`;\n }\n\n _setupCollapseList({ list, index, menu, menuIndex }) {\n const ID = this._generateCollpaseID(index, menuIndex);\n\n list.classList.add('collapse');\n list.setAttribute('id', ID);\n\n const [toggler] = SelectorEngine.prev(list, SELECTOR_LINK);\n\n Manipulator.setDataAttribute(toggler, 'collapse-init', '');\n toggler.setAttribute('href', `#${ID}`);\n toggler.setAttribute('role', 'button');\n\n const instance =\n Collapse.getInstance(list) ||\n new Collapse(list, {\n toggle: false,\n parent: this.options.accordion ? menu : list,\n });\n\n // Arrow\n\n this._appendArrow(toggler);\n\n if (Manipulator.hasClass(list, 'show')) {\n this._rotateArrow(toggler, 180);\n }\n\n // Event listeners\n\n EventHandler.on(toggler, 'click', (e) => {\n this._toggleCategory(e, instance, list);\n if (this._tempSlim && this._isAllToBeCollapsed()) {\n this._setSlim(true);\n\n this._tempSlim = false;\n }\n\n if (this.options.mode === 'over' && this._focusTrap) {\n this._focusTrap.update();\n }\n });\n\n EventHandler.on(list, 'show.bs.collapse', () => this._rotateArrow(toggler, 180));\n\n EventHandler.on(list, 'hide.bs.collapse', () => this._rotateArrow(toggler, 0));\n\n EventHandler.on(list, 'shown.bs.collapse', () => {\n if (this.options.mode === 'over' && this._focusTrap) {\n this._focusTrap.update();\n }\n });\n\n EventHandler.on(list, 'hidden.bs.collapse', () => {\n if (this._tempSlim && this._isAllCollapsed()) {\n this._setSlim(true);\n\n this._tempSlim = false;\n }\n if (this.options.mode === 'over' && this._focusTrap) {\n this._focusTrap.update();\n }\n });\n }\n\n _setupContent() {\n this._content = SelectorEngine.find(this.options.content);\n if (!this._initialContentStyle) {\n this._initialContentStyle = this._content.map((el) => {\n const { paddingLeft, paddingRight, marginLeft, marginRight, transition } =\n window.getComputedStyle(el);\n return { paddingLeft, paddingRight, marginLeft, marginRight, transition };\n });\n }\n }\n\n _setupFocusTrap() {\n this._focusTrap = new FocusTrap(\n this._element,\n {\n event: 'keydown',\n condition: (e) => e.keyCode === TAB,\n onlyVisible: true,\n },\n this.toggler\n );\n }\n\n _setupInitialStyling() {\n this._setColor();\n Manipulator.style(this._element, this.sidenavStyle);\n }\n\n _setupScrolling() {\n let container = this._element;\n\n if (this.options.scrollContainer) {\n container = SelectorEngine.findOne(this.options.scrollContainer, this._element);\n\n const siblings = array(container.parentNode.children).filter((el) => el !== container);\n\n const siblingsHeight = siblings.reduce((a, b) => {\n return a + b.clientHeight;\n }, 0);\n\n Manipulator.style(container, {\n maxHeight: `calc(100% - ${siblingsHeight}px)`,\n position: 'relative',\n });\n }\n\n this._perfectScrollbar = new PerfectScrollbar(container, {\n suppressScrollX: true,\n handlers: ['click-rail', 'drag-thumb', 'wheel', 'touch'],\n });\n }\n\n _setupSlim() {\n this._slimCollapsed = this.options.slimCollapsed;\n\n this._toggleSlimDisplay(this._slimCollapsed);\n\n if (this.options.expandOnHover) {\n this._element.addEventListener('mouseenter', () => {\n if (this._slimCollapsed) {\n this._setSlim(false);\n }\n });\n\n this._element.addEventListener('mouseleave', () => {\n if (!this._slimCollapsed) {\n this._setSlim(true);\n }\n });\n }\n }\n\n _setupRippleEffect() {\n this.links.forEach((link) => {\n let wave = Ripple.getInstance(link);\n\n if (wave && wave._options.color !== this.options.color) {\n wave.dispose();\n } else if (wave) {\n return;\n }\n\n wave = new Ripple(link, { rippleColor: this.options.color });\n });\n }\n\n _setupTouch() {\n this._touch = new Touch(this._element, 'swipe', { threshold: 20 });\n this._touch.init();\n\n EventHandler.on(this._element, 'swipeleft', (e) => this._handleSwipe(e, this.options.right));\n\n EventHandler.on(this._element, 'swiperight', (e) => this._handleSwipe(e, !this.options.right));\n }\n\n _setActive(link, reference) {\n // Link\n Manipulator.addClass(link, 'active');\n\n if (this._activeNode) {\n this._activeNode.classList.remove('active');\n }\n this._activeNode = link;\n\n // Collapse\n\n const [collapse] = SelectorEngine.parents(this._activeNode, SELECTOR_COLLAPSE);\n\n if (!collapse) {\n this._setActiveCategory();\n return;\n }\n\n // Category\n\n const [category] = SelectorEngine.prev(collapse, SELECTOR_LINK);\n this._setActiveCategory(category);\n\n // Expand active collapse\n\n if (!reference && !this._slimCollapsed) {\n Collapse.getInstance(collapse).show();\n }\n }\n\n _setActiveCategory(el) {\n this.navigation.forEach((menu) => {\n const categories = SelectorEngine.find(SELECTOR_COLLAPSE, menu);\n\n categories.forEach((collapse) => {\n const [collapseToggler] = SelectorEngine.prev(collapse, SELECTOR_LINK);\n\n if (collapseToggler !== el) {\n collapseToggler.classList.remove('active');\n } else {\n Manipulator.addClass(collapseToggler, 'active');\n }\n });\n });\n }\n\n _setActiveElements(reference) {\n this.navigation.forEach((menu) => {\n const links = SelectorEngine.find(SELECTOR_LINK, menu);\n links\n .filter((link) => {\n return SelectorEngine.next(link, SELECTOR_COLLAPSE).length === 0;\n })\n .forEach((link) => {\n if (this._isActive(link, reference) && link !== this._activeNode) {\n this._setActive(link, reference);\n }\n });\n });\n }\n\n _setColor() {\n const colors = [\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark',\n ];\n const { color: optionColor } = this.options;\n const color = colors.includes(optionColor) ? optionColor : 'primary';\n\n colors.forEach((color) => {\n this._element.classList.remove(`sidenav-${color}`);\n });\n\n Manipulator.addClass(this._element, `sidenav-${color}`);\n }\n\n _setContentOffsets(show, offsets, initial) {\n this._content.forEach((el, i) => {\n const padding = this._getOffsetValue(show, { index: i, property: 'padding', offsets });\n const margin = this._getOffsetValue(show, { index: i, property: 'margin', offsets });\n\n const style = {};\n\n if (!initial) {\n style.transition = `all ${this.transitionDuration} linear`;\n }\n\n style[offsets.padding.property] = `${padding}px`;\n\n style[offsets.margin.property] = `${margin}px`;\n\n Manipulator.style(el, style);\n\n if (!show) {\n return;\n }\n\n if (initial) {\n Manipulator.style(el, { transition: this._initialContentStyle[i].transition });\n return;\n }\n\n EventHandler.on(el, 'transitionend', () => {\n Manipulator.style(el, { transition: this._initialContentStyle[i].transition });\n });\n });\n }\n\n _setMode(mode) {\n if (this.options.mode === mode) {\n return;\n }\n\n this._options.mode = mode;\n\n this._update(this.isVisible);\n }\n\n _setSlim(value) {\n const events = value ? ['collapse', 'collapsed'] : ['expand', 'expanded'];\n this._triggerEvents(...events);\n\n if (value) {\n this._collapseItems();\n Manipulator.addClass(this._element, 'sidenav-slim');\n } else {\n Manipulator.removeClass(this._element, 'sidenav-slim');\n }\n\n this._slimCollapsed = value;\n\n this._toggleSlimDisplay(value);\n\n Manipulator.style(this._element, { width: `${this.width}px` });\n\n this._updateOffsets(this.isVisible);\n }\n\n _setTabindex(value) {\n this.links.forEach((link) => {\n link.tabIndex = value ? 1 : -1;\n });\n }\n\n _setVisibility(show) {\n const events = show ? ['show', 'shown'] : ['hide', 'hidden'];\n\n this._triggerEvents(...events);\n }\n\n _rotateArrow(toggler, angle) {\n const [arrow] = SelectorEngine.children(toggler, `.${ARROW_CLASS}`);\n if (!arrow) {\n return;\n }\n Manipulator.style(arrow, {\n transform: `rotate(${angle}deg)`,\n });\n }\n\n async _toggleBackdrop(value) {\n if (value && this.options.mode === 'over') {\n this._appendBackdrop();\n } else {\n Manipulator.style(this._backdrop, { opacity: 0 });\n\n await setTimeout(() => {\n this._removeBackdrop();\n }, this.options.transitionDuration);\n }\n }\n\n _removeBackdrop() {\n if (this._backdrop.parentNode === this.container) {\n this.container.removeChild(this._backdrop);\n }\n }\n\n _appendBackdrop() {\n this.container.appendChild(this._backdrop);\n\n setTimeout(() => Manipulator.style(this._backdrop, { opacity: 1 }), 0);\n }\n\n _toggleCategory(e, instance) {\n e.preventDefault();\n\n instance.toggle();\n\n if (this._slimCollapsed && this.options.expandable) {\n this._tempSlim = true;\n\n this._setSlim(false);\n }\n }\n\n _toggleSlimDisplay(slim) {\n const slimCollapsedElements = SelectorEngine.find(SELECTOR_SHOW_SLIM, this._element);\n const fullWidthElements = SelectorEngine.find(SELECTOR_HIDE_SLIM, this._element);\n\n const toggleElements = () => {\n slimCollapsedElements.forEach((el) => {\n Manipulator.style(el, { display: this._slimCollapsed ? 'unset' : 'none' });\n });\n\n fullWidthElements.forEach((el) => {\n Manipulator.style(el, { display: this._slimCollapsed ? 'none' : 'unset' });\n });\n };\n\n if (slim) {\n setTimeout(() => toggleElements(true), this.options.transitionDuration);\n } else {\n toggleElements();\n }\n }\n\n async _triggerEvents(startEvent, completeEvent) {\n EventHandler.trigger(this._element, `${startEvent}.mdb.sidenav`);\n\n if (completeEvent) {\n await setTimeout(() => {\n EventHandler.trigger(this._element, `${completeEvent}.mdb.sidenav`);\n }, this.options.transitionDuration + 5);\n }\n }\n\n _update(show) {\n if (this.toggler) {\n this._updateTogglerAria(show);\n }\n\n this._updateDisplay(show);\n\n if (this.options.backdrop) {\n this._toggleBackdrop(show);\n }\n\n this._updateOffsets(show);\n\n if (show && this.options.closeOnEsc && this.options.mode !== 'side') {\n EventHandler.on(window, 'keydown', this.escHandler);\n }\n\n if (this.options.focusTrap) {\n this._updateFocus(show);\n }\n }\n\n _updateDisplay(value) {\n const translation = value ? 0 : this.translation;\n Manipulator.style(this._element, { transform: `translateX(${translation}%)` });\n }\n\n _updateFocus(show) {\n this._setTabindex(show);\n\n if (this.options.mode === 'over' && this.options.focusTrap) {\n if (show) {\n this._focusTrap.trap();\n return;\n }\n\n this._focusTrap.disable();\n }\n\n this._focusTrap.disable();\n }\n\n _updateOffsets(show, initial = false) {\n const [paddingPosition, marginPosition] =\n (this.options.right && !isRTL) || (!this.options.right && isRTL)\n ? ['right', 'left']\n : ['left', 'right'];\n\n const padding = {\n property: this._getProperty('padding', paddingPosition),\n value: this.options.mode === 'over' ? 0 : this.width,\n };\n\n const margin = {\n property: this._getProperty('margin', marginPosition),\n value: this.options.mode === 'push' ? -1 * this.width : 0,\n };\n\n EventHandler.trigger(this._element, 'update.mdb.sidenav', { margin, padding });\n\n if (!this._content) {\n return;\n }\n\n this._setContentOffsets(show, { padding, margin }, initial);\n }\n\n _updateTogglerAria(value) {\n this.toggler.setAttribute('aria-expanded', value);\n }\n\n // Static\n\n static toggleSidenav() {\n return function (e) {\n const toggler = SelectorEngine.closest(e.target, SELECTOR_TOGGLE);\n\n const elementSelector = Manipulator.getDataAttributes(toggler).target;\n\n SelectorEngine.find(elementSelector).forEach((element) => {\n const instance = Sidenav.getInstance(element) || new Sidenav(element);\n instance.toggle();\n });\n };\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Sidenav(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Sidenav;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport { enableDismissTrigger } from './util/component-functions.js';\nimport { defineJQueryPlugin } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'alert';\nconst DATA_KEY = 'bs.alert';\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_SHOW = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// enableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Alert)\n\nexport default Alert;\n","import SelectorEngine from '../dom/selector-engine';\nimport { isVisible, typeCheckConfig } from './index';\n\nconst NAME = 'Stack';\n\nconst DEFAULT_OPTIONS = {\n position: 'top',\n container: null,\n refresh: 1000,\n filter: (el) => {\n return el;\n },\n};\n\nconst TYPE_OPTIONS = {\n position: 'string',\n container: '(undefined|null|string)',\n refresh: 'number',\n filter: 'function',\n};\n\nclass Stack {\n constructor(element, selector, options) {\n this._element = element;\n this._selector = selector;\n this._options = this._getConfig(options);\n\n this._offset = null;\n\n if (this._options.container) {\n this._parent = SelectorEngine.findOne(this._options.container);\n }\n }\n\n get stackableElements() {\n return SelectorEngine.find(this._selector)\n .filter((el, i) => this._options.filter(el, i))\n .map((el) => ({ el, rect: el.getBoundingClientRect() }))\n .filter(({ el, rect }) => {\n const basicCondition = el !== this._element && isVisible(el);\n if (this._offset === null) {\n return basicCondition;\n }\n\n return basicCondition && this._getBoundryOffset(rect) < this._offset;\n })\n .sort((a, b) => {\n return this._getBoundryOffset(b.rect) - this._getBoundryOffset(a.rect);\n });\n }\n\n get nextElements() {\n return SelectorEngine.find(this._selector)\n .filter((el) => el !== this._element)\n .filter((el, i) => this._options.filter(el, i))\n .filter((el) => {\n this._offset = null;\n return this._getBoundryOffset(el.getBoundingClientRect()) > this._offset;\n });\n }\n\n _getConfig(options) {\n const config = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n\n typeCheckConfig(NAME, config, TYPE_OPTIONS);\n\n return config;\n }\n\n _getBoundryOffset(rect) {\n const { position } = this._options;\n\n let parentTopOffset = 0;\n let parentBottomBoundry = window.innerHeight;\n\n if (this._parent) {\n const parentRect = this._parent.getBoundingClientRect();\n\n parentTopOffset = parentRect.top;\n parentBottomBoundry = parentRect.bottom;\n }\n\n if (position === 'top') {\n return rect.top - parentTopOffset;\n }\n return parentBottomBoundry - rect.bottom;\n }\n\n calculateOffset() {\n const [previousElement] = this.stackableElements;\n\n if (!previousElement) {\n this._offset = 0;\n } else {\n this._offset = this._getBoundryOffset(previousElement.rect) + previousElement.rect.height;\n }\n\n return this._offset;\n }\n}\n\nexport default Stack;\n","import { typeCheckConfig, isVisible } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BSAlert from '../bootstrap/mdb-prefix/alert';\nimport Stack from '../mdb/util/stack';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert';\nconst SELECTOR_ALERT = '.alert';\n\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_CLOSE_BS = 'close.bs.alert';\nconst EVENT_CLOSED_BS = 'closed.bs.alert';\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\n\nconst EXTENDED_EVENTS = [{ name: 'close' }, { name: 'closed' }];\n\nconst DefaultType = {\n position: '(string || null)',\n delay: 'number',\n autohide: 'boolean',\n width: '(string || null)',\n offset: 'number',\n stacking: 'boolean',\n hidden: 'boolean',\n appendToBody: 'boolean',\n color: '(string || null)',\n container: '(string|null)',\n};\n\nconst Default = {\n position: null,\n delay: 1000,\n autohide: false,\n width: null,\n offset: 10,\n stacking: false,\n hidden: false,\n appendToBody: false,\n color: null,\n container: null,\n};\n\nclass Alert extends BSAlert {\n constructor(element, data = {}) {\n super(element, data);\n this._options = this._getConfig(data);\n this._isOpen = true;\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_CLOSE_BS);\n EventHandler.off(this._element, EVENT_CLOSED_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Getters\n\n get verticalOffset() {\n if (!this._options.stacking) return 0;\n\n return this.stackUtil.calculateOffset();\n }\n\n get parent() {\n const [parent] = SelectorEngine.parents(this._element, this._options.container);\n return parent;\n }\n\n get position() {\n const [y, x] = this._options.position.split('-');\n return { y, x };\n }\n\n // Public\n\n update(updatedData = {}) {\n if (this._timeout !== null) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n this._options = this._getConfig(updatedData);\n this._setup();\n }\n\n hide() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (!this._isOpen || hideEvent.defaultPrevented) {\n return;\n }\n\n if (!this._element) {\n return;\n }\n\n if (this._element.classList.contains('show')) {\n Manipulator.toggleClass(this._element, 'show');\n const handler = (e) => {\n Manipulator.style(e.target, {\n display: 'none',\n });\n if (this._timeout !== null) {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n if (this._options.stacking) {\n this._updateAlertStack();\n }\n\n EventHandler.off(e.target, 'transitionend', handler);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n\n this._isOpen = false;\n };\n\n EventHandler.on(this._element, 'transitionend', handler);\n }\n }\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (this._isOpen || showEvent.defaultPrevented) {\n return;\n }\n\n if (this._options.autohide) {\n this._setupAutohide();\n }\n\n if (this._options.stacking) {\n this._updateAlertStack();\n }\n\n if (!this._element.classList.contains('show')) {\n Manipulator.style(this._element, {\n display: 'block',\n });\n if (isVisible(this._element)) {\n const handler = (e) => {\n Manipulator.style(e.target, {\n display: 'block',\n });\n EventHandler.off(e.target, 'transitionend', handler);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._isOpen = true;\n };\n Manipulator.toggleClass(this._element, 'show');\n if (this._options.position) {\n this._setupAlignment();\n }\n EventHandler.on(this._element, 'transitionend', handler);\n }\n }\n }\n\n // Private\n\n _init() {\n if (this._options.hidden) {\n Manipulator.style(this._element, {\n display: 'none',\n });\n\n // needed for show method to work properly if alert is hidden on init\n Manipulator.removeClass(this._element, 'show');\n\n this._isOpen = false;\n }\n\n this._bindMdbEvents();\n\n this._setup();\n }\n\n _setup() {\n if (this._options.color) {\n this._setColor();\n }\n\n if (this._options.stacking) {\n this._setupStacking();\n }\n\n if (this._options.autohide && !this._options.hidden) {\n this._setupAutohide();\n }\n if (this._options.width) {\n this._setupWidth();\n }\n if (this._options.appendToBody) {\n this._appendToBody();\n }\n if (!this._options.position) {\n return;\n }\n this._setupAlignment();\n this._setupPosition();\n }\n\n _setupStacking() {\n this.stackUtil = new Stack(this._element, SELECTOR_ALERT, {\n position: this.position.y,\n offset: this._options.offset,\n container: this._options.container,\n filter: (el) => {\n const instance = Alert.getInstance(el);\n\n if (!instance) return false;\n\n return (\n instance._options.container === this._options.container &&\n instance._options.position === this._options.position\n );\n },\n });\n\n EventHandler.on(this._element, EVENT_CLOSED_BS, () => {\n this._updateAlertStack();\n });\n }\n\n _setColor() {\n const colors = [\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark',\n ];\n const color = colors.includes(this._options.color) ? this._options.color : 'primary';\n colors.forEach((color) => {\n this._element.classList.remove(`alert-${color}`);\n });\n Manipulator.addClass(this._element, `alert-${color}`);\n }\n\n _setupWidth() {\n Manipulator.style(this._element, {\n width: this._options.width,\n });\n }\n\n _setupAutohide() {\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._options.delay);\n }\n\n _setupAlignment() {\n const oppositeY = this.position.y === 'top' ? 'bottom' : 'top';\n const oppositeX = this.position.x === 'left' ? 'right' : 'left';\n\n if (this.position.x === 'center') {\n Manipulator.style(this._element, {\n [this.position.y]: `${this.verticalOffset + this._options.offset}px`,\n [oppositeY]: 'unset',\n left: '50%',\n transform: 'translate(-50%)',\n });\n } else {\n Manipulator.style(this._element, {\n [this.position.y]: `${this.verticalOffset + this._options.offset}px`,\n [this.position.x]: `${this._options.offset}px`,\n [oppositeY]: 'unset',\n [oppositeX]: 'unset',\n transform: 'unset',\n });\n }\n }\n\n _setupPosition() {\n if (this._options.container) {\n Manipulator.addClass(this.parent, 'parent-alert-relative');\n Manipulator.addClass(this._element, 'alert-absolute');\n } else {\n Manipulator.addClass(this._element, 'alert-fixed');\n }\n }\n\n _appendToBody() {\n this._element.parentNode.removeChild(this._element);\n document.body.appendChild(this._element);\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n\n _updatePosition() {\n Manipulator.style(this._element, {\n [this.position.y]: `${this.verticalOffset + this._options.offset}px`,\n });\n }\n\n _updateAlertStack() {\n this.stackUtil.nextElements.forEach((el) => {\n const instance = Alert.getInstance(el);\n\n if (!instance) {\n return;\n }\n\n instance._updatePosition();\n });\n }\n}\n\nexport default Alert;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport { enableDismissTrigger } from './util/component-functions.js';\nimport { defineJQueryPlugin, reflow } from './util/index.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\n\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number',\n};\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n this._setListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._maybeScheduleHide();\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n hide() {\n if (!this.isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n dispose() {\n this._clearTimeout();\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n super.dispose();\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n\n default: {\n break;\n }\n }\n\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n\n const nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n\n this._maybeScheduleHide();\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// enableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Toast)\n\nexport default Toast;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BSToast from '../bootstrap/mdb-prefix/toast';\nimport Stack from '../mdb/util/stack';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\nconst NAME = 'toast';\nconst SELECTOR_TOAST = '.toast';\nconst SELECTOR_HEADER = '.toast-header';\n\nconst EVENT_SHOW_BS = 'show.bs.toast';\nconst EVENT_SHOWN_BS = 'shown.bs.toast';\nconst EVENT_HIDE_BS = 'hide.bs.toast';\nconst EVENT_HIDDEN_BS = 'hidden.bs.toast';\n\nconst EVENT_SHOW = 'show.mdb.toast';\nconst EVENT_HIDDEN = 'hidden.mdb.toast';\n\nconst EXTENDED_EVENTS = [{ name: 'shown' }, { name: 'hide' }];\n\nconst DefaultType = {\n position: '(string|null)',\n animation: 'boolean',\n autohide: 'boolean',\n width: '(string || null)',\n color: '(string|null)',\n delay: '(boolean|number)',\n offset: 'number',\n appendToBody: 'boolean',\n stacking: 'boolean',\n container: '(string|null)',\n};\n\nconst Default = {\n position: null,\n animation: true,\n autohide: true,\n width: null,\n color: null,\n delay: 500,\n offset: 10,\n appendToBody: false,\n stacking: true,\n container: '',\n};\n\nclass Toast extends BSToast {\n constructor(element, data = {}) {\n super(element, data);\n this._config = this._getConfig(data);\n this._setup();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n get parent() {\n const [parent] = SelectorEngine.parents(this._element, this._config.container);\n return parent;\n }\n\n get position() {\n if (!this._config.position) return null;\n const [y, x] = this._config.position.split('-');\n return { y, x };\n }\n\n get verticalOffset() {\n if (!this._config.stacking || !this.position) return 0;\n\n return this.stackUtil.calculateOffset();\n }\n\n // Public\n\n update(updatedData = {}) {\n this._config = this._getConfig(updatedData);\n this._setupColor();\n\n if (!this._config.position) {\n return;\n }\n\n if (this._config.stacking) {\n this._setupStacking();\n\n EventHandler.on(this._element, 'hidden.bs.toast', () => {\n setTimeout(() => this._updateToastStack(), 150);\n });\n }\n\n this._setupPosition();\n this._setupAlignment();\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_SHOW_BS);\n EventHandler.off(this._element, EVENT_SHOWN_BS);\n EventHandler.off(this._element, EVENT_HIDE_BS);\n EventHandler.off(this._element, EVENT_HIDDEN_BS);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n\n _setup() {\n this._setupColor();\n if (this._config.width) {\n this._setupWidth();\n }\n\n this._bindMdbEvents();\n this._setupDisplay();\n\n if (!this._config.position) {\n return;\n }\n\n if (this._config.stacking) {\n this._setupStacking();\n\n EventHandler.on(this._element, 'hidden.bs.toast', () => {\n setTimeout(() => this._updateToastStack(), 150);\n });\n }\n\n this._setupPosition();\n if (!this._config.container && this._config.appendToBody) {\n this._appendToBody();\n }\n }\n\n _setupStacking() {\n this.stackUtil = new Stack(this._element, SELECTOR_TOAST, {\n position: this.position.y,\n offset: this._config.offset,\n container: this._config.container,\n filter: (el) => {\n const instance = Toast.getInstance(el);\n\n if (!instance) return false;\n\n return (\n instance._config.container === this._config.container &&\n instance._config.position === this._config.position\n );\n },\n });\n\n EventHandler.on(this._element, 'closed.bs.alert', () => {\n this._updateAlertStack();\n });\n }\n\n _setupColor() {\n if (!this._config.color) {\n return;\n }\n\n const header = SelectorEngine.findOne(SELECTOR_HEADER, this._element);\n\n const toasts = [\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark',\n ];\n\n const color = toasts.includes(this._config.color) ? this._config.color : 'primary';\n\n toasts.forEach((color) => {\n this._element.classList.remove(`toast-${color}`);\n if (header) header.classList.remove(`toast-${color}`);\n });\n\n Manipulator.addClass(this._element, `toast-${color}`);\n if (header) Manipulator.addClass(header, `toast-${color}`);\n }\n\n _setupWidth() {\n Manipulator.style(this._element, {\n width: this._config.width,\n });\n }\n\n _setupPosition() {\n if (this._config.container) {\n Manipulator.addClass(this.parent, 'parent-toast-relative');\n Manipulator.addClass(this._element, 'toast-absolute');\n } else {\n Manipulator.addClass(this._element, 'toast-fixed');\n }\n }\n\n _setupAlignment() {\n const oppositeY = this.position?.y === 'top' ? 'bottom' : 'top';\n const oppositeX = this.position?.x === 'left' ? 'right' : 'left';\n if (this.position?.x === 'center') {\n Manipulator.style(this._element, {\n [this.position.y]: `${this.verticalOffset + this._config.offset}px`,\n [oppositeY]: 'unset',\n left: '50%',\n transform: 'translate(-50%)',\n });\n } else {\n Manipulator.style(this._element, {\n [this.position?.y || 'defaultY']: `${this.verticalOffset + this._config?.offset}px`,\n [this.position?.x || 'defaultX']: `${this._config?.offset}px`,\n [oppositeY]: 'unset',\n [oppositeX]: 'unset',\n transform: 'unset',\n });\n }\n }\n\n _setupDisplay() {\n if (!this._element.classList.contains('show')) {\n Manipulator.style(this._element, {\n display: 'none',\n });\n }\n\n EventHandler.on(this._element, EVENT_HIDDEN_BS, () => {\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n\n Manipulator.style(this._element, {\n display: 'none',\n });\n });\n\n EventHandler.on(this._element, EVENT_SHOW_BS, () => {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._setupAlignment();\n Manipulator.style(this._element, {\n display: 'block',\n });\n });\n }\n\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _appendToBody() {\n this._element.parentNode.removeChild(this._element);\n document.body.appendChild(this._element);\n }\n\n _updatePosition() {\n Manipulator.style(this._element, {\n [this.position.y]: `${this.verticalOffset + this._config.offset}px`,\n });\n }\n\n _updateToastStack() {\n this.stackUtil.nextElements.forEach((el) => {\n const instance = Toast.getInstance(el);\n\n if (!instance) {\n return;\n }\n\n instance._updatePosition();\n });\n }\n\n // Static\n\n static jQueryInterface(config, options = {}) {\n return this.each(function () {\n let data;\n\n if (typeof config === 'object') {\n data = new Toast(this, config);\n } else {\n data = Toast.getOrCreateInstance(this, config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Toast;\n","/* eslint-disable import/prefer-default-export */\n/* eslint-disable indent */\n\nexport const getTimepickerTemplate = (\n {\n format24,\n okLabel,\n cancelLabel,\n headId,\n footerId,\n bodyId,\n pickerId,\n clearLabel,\n inline,\n showClearBtn,\n amLabel,\n pmLabel,\n isRTL,\n },\n id\n) => {\n const normalTemplate = `<div id='${pickerId}' class='timepicker-wrapper h-100 d-flex align-items-center justify-content-center flex-column position-fixed'>\n <div class=\"d-flex align-items-center justify-content-center flex-column timepicker-container timepicker-container-${id}\">\n <div class=\"d-flex flex-column timepicker-elements justify-content-around\">\n ${createHead(headId, format24, amLabel, pmLabel, okLabel, inline, isRTL)}\n ${createTimepickerClockWrapper(bodyId, format24)}\n </div>\n ${createFooter(footerId, showClearBtn, clearLabel, cancelLabel, okLabel)}\n\n </div>\n </div>`;\n\n const inlineTemplate = `\n <div id='${pickerId}' class='timepicker-wrapper h-100 d-flex align-items-center justify-content-center flex-column timepicker-wrapper-inline'>\n <div class=\"d-flex align-items-center justify-content-center flex-column timepicker-container timepicker-container-${id}\">\n\n <div class=\"d-flex flex-column timepicker-elements justify-content-around timepicker-elements-inline\">\n\n ${createHead(headId, format24, amLabel, pmLabel, okLabel, inline, isRTL)}\n\n </div>\n\n </div>\n </div>\n `;\n\n return inline ? inlineTemplate : normalTemplate;\n};\n\nfunction createFooter(footerId, showClearBtn, clearLabel, cancelLabel, okLabel) {\n return `\n <div id='${footerId}' class='timepicker-footer'>\n <div class=\"w-100 d-flex justify-content-between\">\n ${\n showClearBtn\n ? `<button type='button' class='timepicker-button timepicker-clear' tabindex=\"0\">${clearLabel}</button>`\n : ''\n }\n <button type='button' class='timepicker-button timepicker-cancel' tabindex=\"0\">${cancelLabel}</button>\n <button type='button' class='timepicker-button timepicker-submit' tabindex=\"0\">${okLabel}</button>\n </div>\n </div>`;\n}\n\nfunction createTimepickerClockWrapper(bodyId, format24) {\n return `\n <div id='${bodyId}' class='timepicker-clock-wrapper d-flex justify-content-center flex-column align-items-center'>\n <div class='timepicker-clock'>\n <span class='timepicker-middle-dot position-absolute'></span>\n <div class='timepicker-hand-pointer position-absolute'>\n <div class='timepicker-circle position-absolute'></div>\n </div>\n ${format24 ? '<div class=\"timepicker-clock-inner\"></div>' : ''}\n </div>\n </div>`;\n}\n\nfunction createModeWrapper(inline, format24, amLabel, pmLabel, okLabel) {\n const submitBtn = `<button type='button' class='timepicker-button timepicker-submit timepicker-submit-inline py-1 px-2 mb-0' tabindex=\"0\">${okLabel}</button>`;\n\n if (format24) {\n return inline ? `${submitBtn}` : '';\n } else {\n return `\n <div class=\"d-flex ${\n !inline ? 'flex-column ' : ''\n }justify-content-center timepicker-mode-wrapper\">\n <button type='button' class=\"timepicker-hour-mode timepicker-am${\n inline ? ' me-2 ms-4' : ''\n }\" tabindex=\"0\">${amLabel}</button>\n <button type='button' class=\"timepicker-hour-mode timepicker-pm\" tabindex=\"0\">${pmLabel}</button>\n ${inline ? `${submitBtn}` : ''}\n </div>`;\n }\n}\n\nfunction createHead(headId, format24, amLabel, pmLabel, okLabel, inline, isRTL) {\n return `\n <div id='${headId}' class='timepicker-head d-flex flex-row align-items-center justify-content-center ${\n inline ? 'timepicker-head-inline' : ''\n }'\n style='padding-${isRTL ? 'left' : 'right'}:${format24 && !inline ? 50 : 0}px'>\n <div class='timepicker-head-content d-flex w-100 justify-content-evenly'>\n ${!inline ? `${createCurrentWrapperNormal()}` : `${createCurrentWrapperInline()}`}\n ${createModeWrapper(inline, format24, amLabel, pmLabel, okLabel)}\n </div>\n </div>\n `;\n}\n\nfunction createCurrentWrapperNormal() {\n return `\n <div class=\"timepicker-current-wrapper\">\n <span class=\"position-relative h-100\">\n <button type='button' class='timepicker-current timepicker-hour active' tabindex=\"0\">21</button>\n </span>\n <button type='button' class='timepicker-dot' disabled>:</button>\n <span class=\"position-relative h-100\">\n <button type='button' class='timepicker-current timepicker-minute' tabindex=\"0\">21</button>\n </span>\n </div>\n `;\n}\n\nfunction createCurrentWrapperInline() {\n return `\n <div class=\"timepicker-current-wrapper\">\n <span class=\"position-relative h-100 timepicker-inline-hour-icons\">\n <i class=\"fas fa-chevron-up position-absolute text-white timepicker-icon-up timepicker-icon-inline-hour\"></i>\n <button type='button' class='timepicker-current timepicker-hour active timepicker-current-inline' tabindex=\"0\">21</button>\n <i class=\"fas fa-chevron-down position-absolute text-white timepicker-icon-down timepicker-icon-inline-hour\"></i>\n </span>\n <button type='button' class='timepicker-dot timepicker-current-inline' disabled>:</button>\n <span class=\"position-relative h-100 timepicker-inline-minutes-icons\">\n <i class=\"fas fa-chevron-up position-absolute text-white timepicker-icon-up timepicker-icon-inline-minute\"></i>\n <button type='button' class='timepicker-current timepicker-minute timepicker-current-inline' tabindex=\"0\">21</button>\n <i class=\"fas fa-chevron-down position-absolute text-white timepicker-icon-down timepicker-icon-inline-minute\"></i>\n </span>\n </div>\n `;\n}\n\nexport const getToggleButtonTemplate = (options, id) => {\n const { iconClass } = options;\n\n return `\n <button id=\"${id}\" tabindex=\"0\" type=\"button\" class=\"timepicker-toggle-button\" data-mdb-toggle=\"timepicker\" >\n <i class=\"${iconClass}\"></i>\n </button>\n`;\n};\n","/* eslint-disable consistent-return */\nimport EventHandler from '../../mdb/dom/event-handler';\nimport Manipulator from '../../mdb/dom/manipulator';\n\n// eslint-disable-next-line import/prefer-default-export\nconst formatToAmPm = (date) => {\n if (date === '') return;\n let hours;\n let minutes;\n let amOrPm;\n let originalHours;\n\n if (isValidDate(date)) {\n hours = date.getHours();\n originalHours = hours;\n minutes = date.getMinutes();\n hours %= 12;\n\n if (hours === 0) {\n amOrPm = 'AM';\n } else if (hours > 12) {\n amOrPm = 'PM';\n }\n hours = hours || 12;\n\n if (amOrPm === undefined) {\n amOrPm = hours >= 12 ? 'PM' : 'AM';\n }\n minutes = minutes < 10 ? `0${minutes}` : minutes;\n } else {\n [hours, minutes, amOrPm] = takeValue(date, false);\n originalHours = hours;\n\n hours %= 12;\n if (hours === 0 && amOrPm === undefined) {\n amOrPm = 'AM';\n }\n hours = hours || 12;\n\n if (amOrPm === undefined) {\n amOrPm = originalHours >= 12 ? 'PM' : 'AM';\n }\n }\n\n return {\n hours,\n minutes,\n amOrPm,\n };\n};\n\nconst isValidDate = (date) => {\n // eslint-disable-next-line no-restricted-globals\n return date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date);\n};\n\nconst formatNormalHours = (date) => {\n if (date === '') return;\n let hours;\n let minutes;\n\n if (!isValidDate(date)) {\n [hours, minutes] = takeValue(date, false);\n } else {\n hours = date.getHours();\n minutes = date.getMinutes();\n }\n\n minutes = Number(minutes) < 10 ? `0${Number(minutes)}` : minutes;\n\n return {\n hours,\n minutes,\n };\n};\n\nconst toggleClassHandler = (event, classes) => {\n return EventHandler.on(document, event, classes, ({ target }) => {\n if (!Manipulator.hasClass(target, 'active')) {\n const allElements = document.querySelectorAll(classes);\n\n allElements.forEach((element) => {\n if (Manipulator.hasClass(element, 'active')) {\n Manipulator.removeClass(element, 'active');\n }\n });\n\n Manipulator.addClass(target, 'active');\n }\n });\n};\n\nconst findMousePosition = ({ clientX, clientY, touches }, object, isMobile = false) => {\n const { left, top } = object.getBoundingClientRect();\n let obj = {};\n if (!isMobile || !touches) {\n obj = {\n x: clientX - left,\n y: clientY - top,\n };\n } else if (isMobile && Object.keys(touches).length > 0) {\n obj = {\n x: touches[0].clientX - left,\n y: touches[0].clientY - top,\n };\n }\n\n return obj;\n};\n\nconst checkBrowser = () => {\n let result = false;\n if (\n (navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /MacIntel/.test(navigator.platform)) ||\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n ) {\n result = true;\n }\n return result;\n};\n\nconst takeValue = (element, isInput = true) => {\n let valueInput;\n if (isInput) {\n valueInput = element.value.replace(/:/gi, ' ');\n } else {\n valueInput = element.replace(/:/gi, ' ');\n }\n\n return valueInput.split(' ');\n};\n\nconst compareTimes = (time1, time2) => {\n const [time1Hour, time1Minutes, time1maxTimeFormat] = takeValue(time1, false);\n const [time2Hour, time2Minutes, time2maxTimeFormat] = takeValue(time2, false);\n const bothFormatsEqual = time1maxTimeFormat == time2maxTimeFormat;\n\n if (time1maxTimeFormat == 'PM' && time2maxTimeFormat == 'AM') {\n return 1;\n } else if (time1maxTimeFormat == 'AM' && time2maxTimeFormat == 'PM') {\n return 2;\n }\n\n if (bothFormatsEqual && time1Hour > time2Hour) {\n return 1;\n } else if (time1Hour < time2Hour) {\n return 2;\n }\n if (time1Minutes > time2Minutes) {\n return 1;\n } else if (time1Minutes < time2Minutes) {\n return 2;\n }\n};\nconst getCurrentTime = () => {\n const date = new Date();\n const currentHours = date.getHours();\n let currentMinutes = String(date.getMinutes());\n if (currentMinutes.length === 1) {\n currentMinutes = `0${currentMinutes}`;\n }\n\n const currentTime = `${currentHours}:${currentMinutes}`;\n return currentTime;\n};\n\nconst setMinTime = (minTime, disabledPast, format12) => {\n if (!disabledPast) {\n return minTime;\n }\n let currentTime = getCurrentTime();\n\n if (format12) {\n currentTime = `${formatToAmPm(currentTime).hours}:${formatToAmPm(currentTime).minutes} ${\n formatToAmPm(currentTime).amOrPm\n }`;\n }\n if ((minTime != '' && compareTimes(currentTime, minTime) == 1) || minTime === '') {\n minTime = currentTime;\n }\n return minTime;\n};\n\nconst setMaxTime = (maxTime, disabledFuture, format12) => {\n if (!disabledFuture) {\n return maxTime;\n }\n let currentTime = getCurrentTime();\n\n if (format12) {\n currentTime = `${formatToAmPm(currentTime).hours}:${formatToAmPm(currentTime).minutes} ${\n formatToAmPm(currentTime).amOrPm\n }`;\n }\n if ((maxTime != '' && compareTimes(currentTime, maxTime) == 2) || maxTime === '') {\n maxTime = currentTime;\n }\n return maxTime;\n};\n\nconst checkValueBeforeAccept = (\n { format12, maxTime, minTime, disablePast, disableFuture },\n input,\n hourHeader,\n minutesHeader\n) => {\n const minute = takeValue(input)[1];\n\n minTime = setMinTime(minTime, disablePast, format12);\n maxTime = setMaxTime(maxTime, disableFuture, format12);\n\n const [maxTimeHour, maxTimeMin, maxTimeFormat] = takeValue(maxTime, false);\n const [minTimeHour, minTimeMin, minTimeFormat] = takeValue(minTime, false);\n\n if (maxTimeFormat === undefined && minTimeFormat === undefined) {\n if (maxTimeFormat === undefined) {\n if (maxTimeHour !== '' && minTimeHour === '') {\n if (Number(hourHeader) > Number(maxTimeHour)) {\n return;\n }\n\n if (maxTimeMin !== '' && minTimeMin === undefined) {\n if (Number(hourHeader) > Number(maxTimeHour)) {\n return;\n }\n }\n } else if (maxTimeHour === '' && minTimeHour !== '') {\n if (maxTimeMin === undefined && minTimeMin !== '') {\n if (\n Number(hourHeader) < Number(minTimeHour) ||\n (Number(hourHeader) < Number(minTimeHour) && minutesHeader < Number(minTimeMin))\n ) {\n return;\n }\n }\n }\n } else if (minTimeFormat === undefined) {\n if (maxTimeHour !== '' && minTimeHour === '') {\n if (Number(hourHeader) > Number(maxTimeHour)) {\n return;\n }\n\n if (maxTimeMin !== '' && minTimeMin === undefined) {\n if (Number(hourHeader) > Number(maxTimeHour) || minutesHeader > Number(maxTimeMin)) {\n return;\n }\n }\n } else if (maxTimeHour === '' && minTimeHour !== '') {\n if (maxTimeMin === undefined && minTimeMin !== '') {\n if (Number(hourHeader) < Number(minTimeHour) || minutesHeader < Number(minTimeMin)) {\n return;\n }\n }\n }\n }\n }\n\n return [hourHeader, minute];\n};\n\nconst _verifyMaxTimeHourAndAddDisabledClass = (tips, maxTimeHour) => {\n tips.forEach((tip) => {\n if (tip.textContent === '00' || Number(tip.textContent) > maxTimeHour) {\n {\n Manipulator.addClass(tip, 'disabled');\n }\n }\n });\n};\n\nconst _verifyMinTimeHourAndAddDisabledClass = (tips, minTimeHour) => {\n tips.forEach((tip) => {\n if (tip.textContent !== '00' && Number(tip.textContent) < minTimeHour) {\n {\n Manipulator.addClass(tip, 'disabled');\n }\n }\n });\n};\n\nconst _verifyMaxTimeMinutesTipsAndAddDisabledClass = (tips, maxMinutes, maxHour, currHour) => {\n tips.forEach((tip) => {\n if (Number(tip.textContent) > maxMinutes && Number(currHour) == maxHour) {\n Manipulator.addClass(tip, 'disabled');\n }\n });\n};\n\nconst _verifyMinTimeMinutesTipsAndAddDisabledClass = (tips, minMinutes, minHour, currHour) => {\n tips.forEach((tip) => {\n if (Number(tip.textContent) < minMinutes && Number(currHour) == minHour) {\n Manipulator.addClass(tip, 'disabled');\n }\n });\n};\n\nconst _convertHourToNumber = (string) => {\n let hour;\n if (string.startsWith('0')) {\n hour = Number(string.slice(1));\n } else {\n hour = Number(string);\n }\n return hour;\n};\n\nexport {\n checkBrowser,\n findMousePosition,\n formatNormalHours,\n formatToAmPm,\n toggleClassHandler,\n checkValueBeforeAccept,\n takeValue,\n compareTimes,\n setMinTime,\n setMaxTime,\n _verifyMinTimeHourAndAddDisabledClass,\n _verifyMaxTimeMinutesTipsAndAddDisabledClass,\n _verifyMinTimeMinutesTipsAndAddDisabledClass,\n _verifyMaxTimeHourAndAddDisabledClass,\n _convertHourToNumber,\n};\n","/* eslint-disable consistent-return */\n/* eslint-disable no-else-return */\nimport { createPopper } from '@popperjs/core';\nimport ScrollBarHelper from '../../bootstrap/mdb-prefix/util/scrollbar';\nimport { typeCheckConfig, element, getUID, isRTL } from '../../mdb/util/index';\nimport { getTimepickerTemplate, getToggleButtonTemplate } from './templates';\nimport Data from '../../mdb/dom/data';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport EventHandler, { EventHandlerMulti } from '../../mdb/dom/event-handler';\nimport {\n formatToAmPm,\n toggleClassHandler,\n formatNormalHours,\n checkBrowser,\n findMousePosition,\n checkValueBeforeAccept,\n takeValue,\n setMinTime,\n setMaxTime,\n _verifyMinTimeHourAndAddDisabledClass,\n _verifyMaxTimeMinutesTipsAndAddDisabledClass,\n _verifyMinTimeMinutesTipsAndAddDisabledClass,\n _verifyMaxTimeHourAndAddDisabledClass,\n _convertHourToNumber,\n} from './utils';\nimport FocusTrap from '../../mdb/util/focusTrap';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport {\n UP_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n ESCAPE,\n ENTER,\n} from '../../mdb/util/keycodes';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'timepicker';\n\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`;\nconst EVENT_OPEN = `open${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_MOUSEDOWN_DATA_API = `mousedown${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_MOUSEUP_DATA_API = `mouseup${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_MOUSEMOVE_DATA_API = `mousemove${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_MOUSELEAVE_DATA_API = `mouseleave${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_MOUSEOVER_DATA_API = `mouseover${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_TOUCHMOVE_DATA_API = `touchmove${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_TOUCHEND_DATA_API = `touchend${EVENT_KEY}${DATA_API_KEY}`;\nconst EVENT_TOUCHSTART_DATA_API = `touchstart${EVENT_KEY}${DATA_API_KEY}`;\n\nconst EVENT_VALUE_CHANGED = `valueChanged${EVENT_KEY}`;\nconst EVENT_CLEAR = `clear${EVENT_KEY}`;\n\nconst ACTIVE_CLASS = 'active';\nconst AM_CLASS = `${NAME}-am`;\nconst BUTTON_CANCEL_CLASS = `${NAME}-cancel`;\nconst BUTTON_CLEAR_CLASS = `${NAME}-clear`;\nconst BUTTON_SUBMIT_CLASS = `${NAME}-submit`;\nconst CIRCLE_CLASS = `${NAME}-circle`;\nconst CLOCK_ANIMATION_CLASS = `${NAME}-clock-animation`;\nconst CLOCK_CLASS = `${NAME}-clock`;\nconst CLOCK_INNER_CLASS = `${NAME}-clock-inner`;\nconst CLOCK_WRAPPER_CLASS = `${NAME}-clock-wrapper`;\nconst CURRENT_CLASS = `.${NAME}-current`;\nconst CURRENT_INLINE_CLASS = `${NAME}-current-inline`;\nconst WRAPPER_OPEN_ANIMATION_CLASS = 'fade-in';\nconst WRAPPER_CLOSE_ANIMATION_CLASS = 'fade-out';\n\nconst HAND_CLASS = `${NAME}-hand-pointer`;\nconst HOUR_CLASS = `${NAME}-hour`;\nconst HOUR_MODE_CLASS = `${NAME}-hour-mode`;\nconst ICON_DOWN_CLASS = `${NAME}-icon-down`;\nconst ICON_INLINE_HOUR_CLASS = `${NAME}-icon-inline-hour`;\nconst ICON_INLINE_MINUTE_CLASS = `${NAME}-icon-inline-minute`;\nconst ICON_UP_CLASS = `${NAME}-icon-up`;\nconst ICONS_HOUR_INLINE = `${NAME}-inline-hour-icons`;\nconst MIDDLE_DOT_CLASS = `${NAME}-middle-dot`;\nconst MINUTE_CLASS = `${NAME}-minute`;\nconst MODAL_CLASS = `${NAME}-modal`;\nconst PM_CLASS = `${NAME}-pm`;\nconst TIPS_ELEMENT_CLASS = `${NAME}-tips-element`;\nconst TIPS_HOURS_CLASS = `${NAME}-time-tips-hours`;\nconst TIPS_INNER_ELEMENT_CLASS = `${NAME}-tips-inner-element`;\nconst TIPS_INNER_HOURS_CLASS = `${NAME}-time-tips-inner`;\nconst TIPS_MINUTES_CLASS = `${NAME}-time-tips-minutes`;\nconst TRANSFORM_CLASS = `${NAME}-transform`;\nconst WRAPPER_CLASS = `${NAME}-wrapper`;\nconst INPUT_CLASS = `${NAME}-input`;\n\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-toggle]';\nconst SELECTOR_CONTAINER = '.timepicker-container';\n\nconst Default = {\n bodyId: '',\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n closeModalOnBackdropClick: true,\n closeModalOnMinutesClick: false,\n container: 'body',\n defaultTime: '',\n disablePast: false,\n disableFuture: false,\n focusInputAfterApprove: false,\n footerId: '',\n format12: true,\n format24: false,\n headId: '',\n increment: false,\n inline: false,\n maxTime: '',\n minTime: '',\n modalId: '',\n okLabel: 'Ok',\n overflowHidden: true,\n pickerId: '',\n readOnly: false,\n showClearBtn: true,\n switchHoursToMinutesOnClick: true,\n iconClass: 'far fa-clock fa-sm timepicker-icon',\n withIcon: true,\n pmLabel: 'PM',\n amLabel: 'AM',\n animations: true,\n};\n\nconst DefaultType = {\n bodyId: 'string',\n cancelLabel: 'string',\n clearLabel: 'string',\n closeModalOnBackdropClick: 'boolean',\n closeModalOnMinutesClick: 'boolean',\n container: 'string',\n disablePast: 'boolean',\n disableFuture: 'boolean',\n footerId: 'string',\n format12: 'boolean',\n format24: 'boolean',\n headId: 'string',\n increment: 'boolean',\n inline: 'boolean',\n maxTime: '(string|date|null)',\n minTime: '(string|date|null)',\n modalId: 'string',\n okLabel: 'string',\n overflowHidden: 'boolean',\n pickerId: 'string',\n readOnly: 'boolean',\n showClearBtn: 'boolean',\n switchHoursToMinutesOnClick: 'boolean',\n defaultTime: '(string|date|number)',\n iconClass: 'string',\n withIcon: 'boolean',\n pmLabel: 'string',\n amLabel: 'string',\n animations: 'boolean',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Timepicker extends BaseComponent {\n constructor(element, options = {}) {\n super(element);\n\n this._document = document;\n this._options = this._getConfig(options);\n this._currentTime = null;\n this._toggleButtonId = this._element.id\n ? `timepicker-toggle-${this._element.id}`\n : getUID('timepicker-toggle-');\n\n this.hoursArray = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\n this.innerHours = ['00', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'];\n this.minutesArray = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'];\n\n this._input = SelectorEngine.findOne('input', this._element);\n\n this._hour = null;\n this._minutes = null;\n this._AM = null;\n this._PM = null;\n this._wrapper = null;\n this._modal = null;\n this._hand = null;\n this._circle = null;\n this._focusTrap = null;\n this._isOpen = false;\n this._popper = null;\n this._interval = null;\n this._timeoutInterval = null;\n\n this._inputValue =\n this._options.defaultTime !== '' ? this._options.defaultTime : this._input.value;\n\n if (this._options.format24) {\n this._options.format12 = false;\n this._currentTime = formatNormalHours(this._inputValue);\n }\n\n if (this._options.format12) {\n this._options.format24 = false;\n this._currentTime = formatToAmPm(this._inputValue);\n }\n\n if (this._options.readOnly) {\n this._input.setAttribute('readonly', true);\n }\n\n this._scrollBar = new ScrollBarHelper();\n\n this._animations =\n !window.matchMedia('(prefers-reduced-motion: reduce)').matches && this._options.animations;\n\n this.init();\n this._isHours = true;\n this._isMinutes = false;\n this._isInvalidTimeFormat = false;\n this._isMouseMove = false;\n this._isInner = false;\n this._isAmEnabled = false;\n this._isPmEnabled = false;\n if (this._options.format12 && !this._options.defaultTime) {\n this._isPmEnabled = true;\n }\n\n this._objWithDataOnChange = { degrees: null };\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get container() {\n return SelectorEngine.findOne(`${SELECTOR_CONTAINER}-${this._toggleButtonId}`);\n }\n\n get toggleButton() {\n return SelectorEngine.findOne('[data-mdb-toggle]', this._element);\n }\n\n get customIcon() {\n return SelectorEngine.findOne('.timepicker-toggle-button', this._element);\n }\n\n // Public\n\n init() {\n if (!this.toggleButton && !this.customIcon && this._options.withIcon) {\n this._appendToggleButton(this._options);\n }\n\n const { format12, format24 } = this._options;\n let zero;\n let hoursFormat;\n let _amOrPm;\n Manipulator.addClass(this._input, INPUT_CLASS);\n\n if (this._currentTime !== undefined) {\n const { hours, minutes, amOrPm } = this._currentTime;\n\n zero = Number(hours) < 10 ? 0 : '';\n hoursFormat = `${zero}${Number(hours)}:${minutes}`;\n _amOrPm = amOrPm;\n\n if (format12) {\n this._input.value = `${hoursFormat} ${_amOrPm}`;\n } else if (format24) {\n this._input.value = `${hoursFormat}`;\n }\n } else {\n zero = '';\n hoursFormat = '';\n _amOrPm = '';\n\n this._input.value = '';\n }\n\n if (this._input.value.length > 0 && this._input.value !== '') {\n Manipulator.addClass(this._input, 'active');\n }\n\n if (this._options !== null || this._element !== null) {\n this._listenToUserInput();\n this._handleOpen();\n this._listenToToggleKeydown();\n }\n }\n\n dispose() {\n if (this._isOpen) {\n this.close();\n }\n\n this._removeInputAndToggleListeners();\n\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n setTimeout(() => {\n super.dispose();\n }, 350 + 5);\n }\n\n update(options = {}) {\n this._options = this._getConfig({ ...this._options, ...options });\n }\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (!this._isOpen || closeEvent.defaultPrevented) {\n return;\n }\n\n this._removePicker();\n\n this._isOpen = false;\n\n if (this.toggleButton) {\n this.toggleButton.focus();\n } else if (this._input && focusInputAfterApprove) {\n this._input.focus();\n }\n }\n\n open() {\n if (this._input.readOnly || this._input.disabled) {\n return;\n }\n\n const openEvent = EventHandler.trigger(this._element, EVENT_OPEN);\n\n if (this._isOpen || openEvent.defaultPrevented) {\n return;\n }\n\n const container = this._getContainer();\n\n Manipulator.addStyle(this.toggleButton, {\n pointerEvents: 'none',\n });\n\n let checkInputValue;\n\n if (takeValue(this._input)[0] === '' || this._isInvalidTimeFormat) {\n checkInputValue = ['12', '00', 'PM'];\n } else {\n checkInputValue = takeValue(this._input);\n }\n\n const { modalId, inline, format12 } = this._options;\n const [hour, minute, format] = checkInputValue;\n const div = element('div');\n\n if (Number(hour) > 12 || hour === '00') {\n this._isInner = true;\n }\n\n div.innerHTML = getTimepickerTemplate(this._options, this._toggleButtonId);\n Manipulator.addClass(div, MODAL_CLASS);\n Manipulator.addClass(div, `${MODAL_CLASS}-${this._toggleButtonId}`);\n\n div.setAttribute('role', 'dialog');\n div.setAttribute('tabIndex', '-1');\n div.setAttribute('id', modalId);\n\n if (!inline) {\n container.appendChild(div);\n this._scrollBar.hide();\n } else {\n this._popper = createPopper(this._input, div, {\n placement: 'bottom-start',\n });\n\n container.appendChild(div);\n }\n\n this._getDomElements();\n if (this._animations) {\n this._toggleBackdropAnimation();\n } else {\n Manipulator.addClass(this._wrapper, 'opacity-100');\n }\n\n this._appendTimes();\n this._setActiveClassToTipsOnOpen(hour, minute, format);\n this._setTipsAndTimesDependOnInputValue(hour, minute);\n\n if (this._input.value === '') {\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n\n if (format12) {\n Manipulator.addClass(this._PM, ACTIVE_CLASS);\n }\n\n this._hour.textContent = '12';\n this._minutes.textContent = '00';\n this._addActiveClassToTip(allTipsHours, Number(this._hour.textContent));\n }\n\n this._handleSwitchTimeMode();\n this._handleOkButton();\n this._handleClose();\n\n if (inline) {\n this._handleHoverInlineBtn();\n this._handleDocumentClickInline();\n this._handleInlineClicks();\n } else {\n this._handleSwitchHourMinute();\n this._handleClockClick();\n this._handleKeyboard();\n\n Manipulator.addStyle(this._hour, {\n pointerEvents: 'none',\n });\n Manipulator.addStyle(this._minutes, {\n pointerEvents: '',\n });\n }\n\n this._setFocusTrap(this.container);\n\n this._isOpen = true;\n }\n\n // private\n _removeInputAndToggleListeners() {\n EventHandler.off(this._input, 'input');\n EventHandler.off(this._element, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE);\n EventHandler.off(this._element, 'keydown', SELECTOR_DATA_TOGGLE);\n }\n\n _appendToggleButton() {\n const toggleButton = getToggleButtonTemplate(this._options, this._toggleButtonId);\n\n this._input.insertAdjacentHTML('afterend', toggleButton);\n }\n\n _getDomElements() {\n this._modal = SelectorEngine.findOne(`.${MODAL_CLASS}-${this._toggleButtonId}`);\n this._hour = SelectorEngine.findOne(`.${HOUR_CLASS}`, this._modal);\n this._minutes = SelectorEngine.findOne(`.${MINUTE_CLASS}`, this._modal);\n this._AM = SelectorEngine.findOne(`.${AM_CLASS}`, this._modal);\n this._PM = SelectorEngine.findOne(`.${PM_CLASS}`, this._modal);\n this._wrapper = SelectorEngine.findOne(`.${WRAPPER_CLASS}`, this._modal);\n this._hand = SelectorEngine.findOne(`.${HAND_CLASS}`, this._modal);\n this._circle = SelectorEngine.findOne(`.${CIRCLE_CLASS}`, this._modal);\n this._clock = SelectorEngine.findOne(`.${CLOCK_CLASS}`, this._modal);\n this._clockInner = SelectorEngine.findOne(`.${CLOCK_INNER_CLASS}`, this._modal);\n }\n\n _handlerMaxMinHoursOptions(degrees, maxHour, minHour, maxFormat, minFormat, e) {\n if (!maxHour && !minHour) {\n return true;\n }\n const { format24, format12, disablePast, disableFuture } = this._options;\n const { _isAmEnabled, _isPmEnabled } = this;\n const key = e.keyCode;\n const _isMouseOnInnerClock =\n e.target.classList.contains('timepicker-clock-inner') ||\n e.target.classList.contains('timepicker-time-tips-inner') ||\n e.target.classList.contains('timepicker-tips-inner-element');\n\n minHour = setMinTime(minHour, disablePast, format12);\n maxHour = setMaxTime(maxHour, disableFuture, format12);\n\n let maxHourDegrees = maxHour !== '' ? maxHour * 30 : '';\n let minHourDegrees = minHour !== '' ? minHour * 30 : '';\n\n if (degrees <= 0) {\n degrees = 360 + degrees;\n }\n const _handleKeyboardEvents = () => {\n const tips = document.querySelectorAll('.timepicker-tips-element');\n const innerTips = document.querySelectorAll('.timepicker-tips-inner-element');\n let currentHour = _convertHourToNumber(this._hour.innerText);\n let nextHourTip;\n let numberToAdd;\n let nextHour;\n\n if (key === UP_ARROW) {\n numberToAdd = 1;\n } else if (key === DOWN_ARROW) {\n numberToAdd = -1;\n }\n\n if (currentHour === 12 && key === UP_ARROW) {\n nextHour = 1;\n } else if (currentHour === 0 && key === UP_ARROW) {\n nextHour = 13;\n } else if (currentHour === 0 && key === DOWN_ARROW) {\n nextHour = 23;\n } else if (currentHour === 13 && key === DOWN_ARROW) {\n nextHour = 0;\n } else if (currentHour === 1 && key === DOWN_ARROW) {\n nextHour = 12;\n } else {\n nextHour = currentHour + numberToAdd;\n }\n\n tips.forEach((tip) => {\n if (tip.textContent == nextHour) {\n nextHourTip = tip;\n }\n });\n innerTips.forEach((innerTip) => {\n if (innerTip.textContent == nextHour) {\n nextHourTip = innerTip;\n }\n });\n return !nextHourTip.parentElement.classList.contains('disabled');\n };\n\n const _handle24FormatMouseEvents = () => {\n let minInnerHourDegrees = minHour !== '' && minHour > 12 ? (minHour - 12) * 30 : '';\n let maxInnerHourDegrees = maxHour !== '' && maxHour > 12 ? (maxHour - 12) * 30 : '';\n\n if (\n (minInnerHourDegrees && degrees < minInnerHourDegrees) ||\n (maxInnerHourDegrees && degrees > maxInnerHourDegrees) ||\n (maxHour && maxHour < 12)\n ) {\n return;\n }\n return true;\n };\n\n if (format24 && e.type !== 'keydown' && _isMouseOnInnerClock) {\n return _handle24FormatMouseEvents(e);\n }\n if (e.type === 'keydown') {\n return _handleKeyboardEvents(e);\n }\n\n const minFormatAndCurrentFormatEqual =\n !minFormat ||\n (minFormat === 'PM' && _isPmEnabled) ||\n (minHour !== '' && minFormat === 'AM' && _isAmEnabled);\n\n const maxFormatAndCurrentFormatEqual =\n !maxFormat ||\n (maxFormat === 'PM' && _isPmEnabled) ||\n (maxHour !== '' && maxFormat === 'AM' && _isAmEnabled);\n\n const isMinHourValid = () => {\n if (!minHour) {\n return true;\n } else if (\n (minFormat === 'PM' && _isAmEnabled) ||\n (minFormatAndCurrentFormatEqual && degrees < minHourDegrees)\n ) {\n return;\n }\n return true;\n };\n\n const isMaxHourValid = () => {\n if (!maxHour) {\n return true;\n } else if (\n (maxFormat === 'AM' && _isPmEnabled) ||\n (maxFormatAndCurrentFormatEqual && degrees > maxHourDegrees)\n ) {\n return;\n }\n return true;\n };\n if (isMinHourValid() && isMaxHourValid()) {\n return true;\n }\n }\n\n _handleKeyboard() {\n EventHandler.on(this._document, EVENT_KEYDOWN_DATA_API, '', (e) => {\n let hour;\n let minute;\n let innerHour;\n let { increment, maxTime, minTime, format12, disablePast, disableFuture } = this._options;\n\n let [minHour, minFormat] = takeValue(minTime, false);\n let [maxHour, maxFormat] = takeValue(maxTime, false);\n\n minHour = setMinTime(minHour, disablePast, format12);\n maxHour = setMaxTime(maxHour, disableFuture, format12);\n\n const hoursView = SelectorEngine.findOne(`.${TIPS_MINUTES_CLASS}`) === null;\n const innerHoursExist = SelectorEngine.findOne(`.${TIPS_INNER_HOURS_CLASS}`) !== null;\n\n const degrees = Number(this._hand.style.transform.replace(/[^\\d-]/g, ''));\n\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`, this._modal);\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n const allInnerTips = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`, this._modal);\n\n let hourTime = this._makeHourDegrees(e.target, degrees, hour).hour;\n const { degrees: hourObjDegrees, addDegrees } = this._makeHourDegrees(\n e.target,\n degrees,\n hour\n );\n\n let { minute: minHourMinutes, degrees: minObjDegrees } = this._makeMinutesDegrees(\n degrees,\n minute\n );\n const addMinDegrees = this._makeMinutesDegrees(degrees, minute).addDegrees;\n\n let { hour: innerHourDegrees } = this._makeInnerHoursDegrees(degrees, innerHour);\n\n if (e.keyCode === ESCAPE) {\n const cancelBtn = SelectorEngine.findOne(`.${BUTTON_CANCEL_CLASS}`, this._modal);\n EventHandler.trigger(cancelBtn, 'click');\n } else if (hoursView) {\n if (innerHoursExist) {\n if (e.keyCode === RIGHT_ARROW) {\n this._isInner = false;\n Manipulator.addStyle(this._hand, {\n height: 'calc(40% + 1px)',\n });\n this._hour.textContent = this._setHourOrMinute(hourTime > 12 ? 1 : hourTime);\n this._toggleClassActive(this.hoursArray, this._hour, allTipsHours);\n this._toggleClassActive(this.innerHours, this._hour, allInnerTips);\n }\n\n if (e.keyCode === LEFT_ARROW) {\n this._isInner = true;\n Manipulator.addStyle(this._hand, {\n height: '21.5%',\n });\n\n this._hour.textContent = this._setHourOrMinute(\n innerHourDegrees >= 24 || innerHourDegrees === '00' ? 0 : innerHourDegrees\n );\n this._toggleClassActive(this.innerHours, this._hour, allInnerTips);\n this._toggleClassActive(this.hoursArray, this._hour - 1, allTipsHours);\n }\n }\n\n if (e.keyCode === UP_ARROW) {\n const isNextHourValid = this._handlerMaxMinHoursOptions(\n hourObjDegrees + 30,\n maxHour,\n minHour,\n maxFormat,\n minFormat,\n e\n );\n if (!isNextHourValid) {\n return;\n }\n\n const addRotate = () => {\n return Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${hourObjDegrees + addDegrees}deg)`,\n });\n };\n\n addRotate();\n\n if (this._isInner) {\n innerHourDegrees += 1;\n\n if (innerHourDegrees === 24) {\n innerHourDegrees = 0;\n } else if (innerHourDegrees === 25 || innerHourDegrees === '001') {\n innerHourDegrees = 13;\n }\n\n this._hour.textContent = this._setHourOrMinute(innerHourDegrees);\n this._toggleClassActive(this.innerHours, this._hour, allInnerTips);\n } else {\n hourTime += 1;\n this._hour.textContent = this._setHourOrMinute(hourTime > 12 ? 1 : hourTime);\n this._toggleClassActive(this.hoursArray, this._hour, allTipsHours);\n }\n }\n if (e.keyCode === DOWN_ARROW) {\n const isNextHourValid = this._handlerMaxMinHoursOptions(\n hourObjDegrees - 30,\n maxHour,\n minHour,\n maxFormat,\n minFormat,\n e\n );\n\n if (!isNextHourValid) {\n return;\n }\n\n const addRotate = () => {\n return Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${hourObjDegrees - addDegrees}deg)`,\n });\n };\n\n addRotate();\n if (this._isInner) {\n innerHourDegrees -= 1;\n\n if (innerHourDegrees === 12) {\n innerHourDegrees = 0;\n } else if (innerHourDegrees === -1) {\n innerHourDegrees = 23;\n }\n\n this._hour.textContent = this._setHourOrMinute(innerHourDegrees);\n this._toggleClassActive(this.innerHours, this._hour, allInnerTips);\n } else {\n hourTime -= 1;\n\n this._hour.textContent = this._setHourOrMinute(hourTime === 0 ? 12 : hourTime);\n this._toggleClassActive(this.hoursArray, this._hour, allTipsHours);\n }\n }\n } else {\n if (e.keyCode === UP_ARROW) {\n minObjDegrees += addMinDegrees;\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${minObjDegrees}deg)`,\n });\n minHourMinutes += 1;\n if (increment) {\n minHourMinutes += 4;\n\n if (minHourMinutes === '0014') {\n minHourMinutes = 5;\n }\n }\n\n this._minutes.textContent = this._setHourOrMinute(\n minHourMinutes > 59 ? 0 : minHourMinutes\n );\n this._toggleClassActive(this.minutesArray, this._minutes, allTipsMinutes);\n this._toggleBackgroundColorCircle(`${TIPS_MINUTES_CLASS}`);\n }\n if (e.keyCode === DOWN_ARROW) {\n minObjDegrees -= addMinDegrees;\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${minObjDegrees}deg)`,\n });\n if (increment) {\n minHourMinutes -= 5;\n } else {\n minHourMinutes -= 1;\n }\n\n if (minHourMinutes === -1) {\n minHourMinutes = 59;\n } else if (minHourMinutes === -5) {\n minHourMinutes = 55;\n }\n\n this._minutes.textContent = this._setHourOrMinute(minHourMinutes);\n this._toggleClassActive(this.minutesArray, this._minutes, allTipsMinutes);\n this._toggleBackgroundColorCircle(`${TIPS_MINUTES_CLASS}`);\n }\n }\n });\n }\n\n _setActiveClassToTipsOnOpen(hour, ...rest) {\n if (this._isInvalidTimeFormat) {\n return;\n }\n\n if (!this._options.format24) {\n [...rest].filter((e) => {\n if (e.toLowerCase() === 'pm') {\n Manipulator.addClass(this._PM, ACTIVE_CLASS);\n } else if (e.toLowerCase() === 'am') {\n Manipulator.addClass(this._AM, ACTIVE_CLASS);\n } else {\n Manipulator.removeClass(this._AM, ACTIVE_CLASS);\n Manipulator.removeClass(this._PM, ACTIVE_CLASS);\n }\n\n return e;\n });\n\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n this._addActiveClassToTip(allTipsHours, hour);\n } else {\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n const allInnerTips = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`, this._modal);\n\n this._addActiveClassToTip(allTipsHours, hour);\n this._addActiveClassToTip(allInnerTips, hour);\n }\n }\n\n _setTipsAndTimesDependOnInputValue(hour, minute) {\n const { inline, format12 } = this._options;\n\n if (!this._isInvalidTimeFormat) {\n const rotateDegrees = hour > 12 ? hour * 30 - 360 : hour * 30;\n this._hour.textContent = hour;\n this._minutes.textContent = minute;\n\n if (!inline) {\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${rotateDegrees}deg)`,\n });\n Manipulator.addClass(this._circle, 'active');\n\n if (Number(hour) > 12 || hour === '00') {\n Manipulator.addStyle(this._hand, {\n height: '21.5%',\n });\n }\n }\n } else {\n this._hour.textContent = '12';\n this._minutes.textContent = '00';\n\n if (!inline) {\n Manipulator.addStyle(this._hand, {\n transform: 'rotateZ(0deg)',\n });\n }\n if (format12) {\n Manipulator.addClass(this._PM, ACTIVE_CLASS);\n }\n }\n }\n\n _listenToToggleKeydown() {\n EventHandler.on(this._element, 'keydown', SELECTOR_DATA_TOGGLE, (e) => {\n if (e.keyCode === ENTER) {\n this.open();\n }\n });\n }\n\n _handleOpen() {\n EventHandler.on(this._element, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, () => {\n if (this._options === null) {\n return;\n }\n\n // Fix for input with open, if is not for settimeout input has incorrent jumping label\n const fixForInput = Manipulator.getDataAttribute(this._input, 'toggle') !== null ? 200 : 0;\n\n setTimeout(() => {\n this.open();\n }, fixForInput);\n });\n }\n\n _setFocusTrap(element) {\n this._focusTrap = new FocusTrap(element, {\n event: 'keydown',\n condition: (event) => event.key === 'Tab',\n });\n this._focusTrap.trap();\n }\n\n _handleInlineClicks() {\n let selectedHour;\n let minuteNumber;\n const countMinutes = (count) => {\n let minutes = count;\n\n if (minutes > 59) {\n minutes = 0;\n } else if (minutes < 0) {\n minutes = 59;\n }\n\n return minutes;\n };\n\n const countHours = (count) => {\n let hour = count;\n\n if (this._options.format24) {\n if (hour > 24) {\n hour = 1;\n } else if (hour < 0) {\n hour = 23;\n }\n\n if (hour > 23) {\n hour = 0;\n }\n } else {\n if (hour > 12) {\n hour = 1;\n } else if (hour < 1) {\n hour = 12;\n }\n\n if (hour > 12) {\n hour = 1;\n }\n }\n\n return hour;\n };\n\n const incrementHours = (hour) => {\n const counteredNumber = countHours(hour);\n this._hour.textContent = this._setHourOrMinute(counteredNumber);\n };\n const incrementMinutes = (minutes) => {\n const counteredNumber = countMinutes(minutes);\n this._minutes.textContent = this._setHourOrMinute(counteredNumber);\n };\n\n const addHours = () => {\n selectedHour = countHours(selectedHour) + 1;\n incrementHours(selectedHour);\n };\n const addMinutes = () => {\n minuteNumber = countMinutes(minuteNumber) + 1;\n incrementMinutes(minuteNumber);\n };\n\n const subHours = () => {\n selectedHour = countHours(selectedHour) - 1;\n incrementHours(selectedHour);\n };\n\n const subMinutes = () => {\n minuteNumber = countMinutes(minuteNumber) - 1;\n incrementMinutes(minuteNumber);\n };\n\n const _clearAsyncs = () => {\n clearInterval(this._interval);\n clearTimeout(this._timeoutInterval);\n };\n\n const _clearAndSetThisInterval = (addHoursOrAddMinutes) => {\n _clearAsyncs();\n this._timeoutInterval = setTimeout(() => {\n this._interval = setInterval(addHoursOrAddMinutes, 100);\n }, 500);\n };\n EventHandlerMulti.on(\n this._modal,\n 'click mousedown mouseup touchstart touchend contextmenu',\n `.${ICON_UP_CLASS}, .${ICON_DOWN_CLASS}`,\n (e) => {\n selectedHour = Number(this._hour.textContent);\n minuteNumber = Number(this._minutes.textContent);\n const { target, type } = e;\n const isEventTypeMousedownOrTouchstart = type === 'mousedown' || type === 'touchstart';\n\n if (Manipulator.hasClass(target, ICON_UP_CLASS)) {\n if (Manipulator.hasClass(target.parentNode, ICONS_HOUR_INLINE)) {\n if (isEventTypeMousedownOrTouchstart) {\n _clearAndSetThisInterval(addHours);\n } else if (type === 'mouseup' || type === 'touchend' || type === 'contextmenu') {\n _clearAsyncs();\n } else {\n addHours();\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (isEventTypeMousedownOrTouchstart) {\n _clearAndSetThisInterval(addMinutes);\n } else if (type === 'mouseup' || type === 'touchend' || type === 'contextmenu') {\n _clearAsyncs();\n } else {\n addMinutes();\n }\n }\n } else if (Manipulator.hasClass(target, ICON_DOWN_CLASS)) {\n if (Manipulator.hasClass(target.parentNode, ICONS_HOUR_INLINE)) {\n if (isEventTypeMousedownOrTouchstart) {\n _clearAndSetThisInterval(subHours);\n } else if (type === 'mouseup' || type === 'touchend') {\n _clearAsyncs();\n } else {\n subHours();\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (isEventTypeMousedownOrTouchstart) {\n _clearAndSetThisInterval(subMinutes);\n } else if (type === 'mouseup' || type === 'touchend') {\n _clearAsyncs();\n } else {\n subMinutes();\n }\n }\n }\n }\n );\n\n EventHandlerMulti.on(\n this._document,\n `${EVENT_MOUSEUP_DATA_API} ${EVENT_TOUCHEND_DATA_API}`,\n () => {\n _clearAsyncs();\n }\n );\n\n EventHandler.on(window, EVENT_KEYDOWN_DATA_API, (e) => {\n const key = e.code;\n const isHourBtnFocused = document.activeElement.classList.contains('timepicker-hour');\n const isMinuteBtnFocused = document.activeElement.classList.contains('timepicker-minute');\n const isBodyFocused = document.activeElement === document.body;\n selectedHour = Number(this._hour.textContent);\n minuteNumber = Number(this._minutes.textContent);\n\n switch (key) {\n case 'ArrowUp':\n e.preventDefault();\n if (isBodyFocused || isHourBtnFocused) {\n this._hour.focus();\n addHours();\n } else if (isMinuteBtnFocused) {\n addMinutes();\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (isBodyFocused || isHourBtnFocused) {\n this._hour.focus();\n subHours();\n } else if (isMinuteBtnFocused) {\n subMinutes();\n }\n break;\n }\n });\n }\n\n _handleClose() {\n EventHandler.on(\n this._modal,\n 'click',\n `.${WRAPPER_CLASS}, .${BUTTON_CANCEL_CLASS}, .${BUTTON_CLEAR_CLASS}`,\n ({ target }) => {\n const { closeModalOnBackdropClick } = this._options;\n\n if (Manipulator.hasClass(target, BUTTON_CLEAR_CLASS)) {\n this._toggleAmPm('PM');\n this._input.value = '';\n\n EventHandler.trigger(this._input, EVENT_CLEAR);\n\n Manipulator.removeClass(this._input, 'active');\n\n let checkInputValue;\n\n if (takeValue(this._input)[0] === '') {\n checkInputValue = ['12', '00', 'PM'];\n } else {\n checkInputValue = takeValue(this._input);\n }\n\n const [hour, minute, format] = checkInputValue;\n this._setTipsAndTimesDependOnInputValue('12', '00');\n this._setActiveClassToTipsOnOpen(hour, minute, format);\n this._hour.click();\n } else if (Manipulator.hasClass(target, BUTTON_CANCEL_CLASS)) {\n this.close();\n } else if (Manipulator.hasClass(target, WRAPPER_CLASS) && closeModalOnBackdropClick) {\n this.close();\n }\n }\n );\n }\n\n _removePicker() {\n Manipulator.addStyle(this.toggleButton, {\n pointerEvents: 'auto',\n });\n\n if (this._animations) {\n this._toggleBackdropAnimation(true);\n }\n\n this._removeModal();\n }\n\n _removeFocusTrap() {\n if (this._focusTrap) {\n this._focusTrap.disable();\n this._focusTrap = null;\n }\n }\n\n showValueInput() {\n return this._input.value;\n }\n\n _handleOkButton() {\n EventHandlerMulti.on(this._modal, 'click', `.${BUTTON_SUBMIT_CLASS}`, () => {\n let { maxTime, minTime } = this._options;\n const { format12, format24, disablePast, disableFuture } = this._options;\n const hourModeActive = this._document.querySelector(`.${HOUR_MODE_CLASS}.${ACTIVE_CLASS}`);\n const currentValue = `${this._hour.textContent}:${this._minutes.textContent}`;\n const selectedHour = Number(this._hour.textContent);\n const selectedMinutes = Number(this._minutes.textContent);\n\n minTime = setMinTime(minTime, disablePast, format12);\n maxTime = setMaxTime(maxTime, disableFuture, format12);\n\n const [maxTimeHour, maxTimeMinutes, maxTimeFormat] = takeValue(maxTime, false);\n const [minTimeHour, minTimeMinutes, minTimeFormat] = takeValue(minTime, false);\n const isHourLessThanMinHour = selectedHour < Number(minTimeHour);\n const isHourGreaterThanMaxHour = selectedHour > Number(maxTimeHour);\n let maxFormatAndCurrentFormatEqual = true;\n if (hourModeActive) {\n maxFormatAndCurrentFormatEqual = maxTimeFormat === hourModeActive.textContent;\n }\n\n let minFormatAndCurrentFormatEqual = true;\n if (hourModeActive) {\n minFormatAndCurrentFormatEqual = minTimeFormat === hourModeActive.textContent;\n }\n\n const hourEqualToMaxAndMinutesGreaterThanMax =\n selectedMinutes > maxTimeMinutes && selectedHour === Number(maxTimeHour);\n const hourEqualToMinAndMinutesLessThanMin =\n selectedMinutes < minTimeMinutes && selectedHour === Number(minTimeHour);\n\n Manipulator.addClass(this._input, 'active');\n Manipulator.addStyle(this.toggleButton, {\n pointerEvents: 'auto',\n });\n\n if (maxTime !== '') {\n if (\n maxFormatAndCurrentFormatEqual &&\n (isHourGreaterThanMaxHour || hourEqualToMaxAndMinutesGreaterThanMax)\n ) {\n return;\n } else if (maxTimeFormat === 'AM' && hourModeActive.textContent === 'PM') {\n return;\n }\n }\n if (minTime !== '') {\n if (\n minFormatAndCurrentFormatEqual &&\n (isHourLessThanMinHour || hourEqualToMinAndMinutesLessThanMin)\n ) {\n return;\n }\n if (minTimeFormat === 'PM' && hourModeActive.textContent === 'AM') {\n return;\n }\n }\n\n if (\n checkValueBeforeAccept(\n this._options,\n this._input,\n this._hour.textContent,\n this._minutes.textContent\n ) === undefined\n ) {\n return;\n }\n\n if (this._isInvalidTimeFormat) {\n Manipulator.removeClass(this._input, 'is-invalid');\n }\n\n if (format24) {\n this._input.value = currentValue;\n } else if (hourModeActive === null) {\n this._input.value = `${currentValue} PM`;\n } else {\n this._input.value = `${currentValue} ${hourModeActive.textContent}`;\n }\n\n this.close();\n\n EventHandler.trigger(this._input, EVENT_VALUE_CHANGED);\n });\n }\n\n _handleHoverInlineBtn() {\n EventHandlerMulti.on(\n this._modal,\n 'mouseover mouseleave',\n `.${CURRENT_INLINE_CLASS}`,\n ({ type, target }) => {\n const allIconsInlineHour = SelectorEngine.find(`.${ICON_INLINE_HOUR_CLASS}`, this._modal);\n const allIconsInlineMinute = SelectorEngine.find(\n `.${ICON_INLINE_MINUTE_CLASS}`,\n this._modal\n );\n\n if (type === 'mouseover') {\n if (Manipulator.hasClass(target, HOUR_CLASS)) {\n allIconsInlineHour.forEach((icon) => Manipulator.addClass(icon, ACTIVE_CLASS));\n } else {\n allIconsInlineMinute.forEach((icon) => Manipulator.addClass(icon, ACTIVE_CLASS));\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (Manipulator.hasClass(target, HOUR_CLASS)) {\n allIconsInlineHour.forEach((icon) => Manipulator.removeClass(icon, ACTIVE_CLASS));\n } else {\n allIconsInlineMinute.forEach((icon) => Manipulator.removeClass(icon, ACTIVE_CLASS));\n }\n }\n }\n );\n }\n\n _handleDocumentClickInline() {\n EventHandler.on(document, EVENT_CLICK_DATA_API, ({ target }) => {\n if (this._modal && !this._modal.contains(target)) {\n clearInterval(this._interval);\n this.close();\n }\n });\n }\n\n _handleSwitchHourMinute() {\n toggleClassHandler('click', CURRENT_CLASS);\n\n EventHandler.on(this._modal, 'click', CURRENT_CLASS, () => {\n const { format24 } = this._options;\n const current = SelectorEngine.find(CURRENT_CLASS, this._modal);\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`, this._modal);\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n const allInnerTips = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`, this._modal);\n const hourValue = Number(this._hour.textContent);\n const minuteValue = Number(this._minutes.textContent);\n\n if (format24 && (hourValue > 12 || hourValue === 0)) {\n this._isInner = true;\n }\n\n const switchTips = (array, classes) => {\n allTipsHours.forEach((tip) => tip.remove());\n allTipsMinutes.forEach((tip) => tip.remove());\n Manipulator.addClass(this._hand, TRANSFORM_CLASS);\n\n setTimeout(() => {\n Manipulator.removeClass(this._hand, TRANSFORM_CLASS);\n }, 401);\n\n this._getAppendClock(array, `.${CLOCK_CLASS}`, classes);\n\n const toggleActiveClass = () => {\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`, this._modal);\n\n this._addActiveClassToTip(allTipsHours, hourValue);\n this._addActiveClassToTip(allTipsMinutes, minuteValue);\n };\n\n if (!format24) {\n setTimeout(() => {\n toggleActiveClass();\n }, 401);\n } else {\n const allTipsInnerHours = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`, this._modal);\n\n setTimeout(() => {\n this._addActiveClassToTip(allTipsInnerHours, hourValue);\n toggleActiveClass();\n }, 401);\n }\n };\n\n current.forEach((e) => {\n if (Manipulator.hasClass(e, ACTIVE_CLASS)) {\n if (Manipulator.hasClass(e, MINUTE_CLASS)) {\n Manipulator.addClass(this._hand, TRANSFORM_CLASS);\n\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${this._minutes.textContent * 6}deg)`,\n height: 'calc(40% + 1px)',\n });\n\n if (format24 && allInnerTips.length > 0) {\n allInnerTips.forEach((innerTip) => innerTip.remove());\n }\n switchTips(this.minutesArray, `${TIPS_MINUTES_CLASS}`, allTipsMinutes);\n this._hour.style.pointerEvents = '';\n this._minutes.style.pointerEvents = 'none';\n } else if (Manipulator.hasClass(e, HOUR_CLASS)) {\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${this._hour.textContent * 30}deg)`,\n });\n\n if (Number(this._hour.textContent) > 12 || this._hour.textContent === '00') {\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${this._hour.textContent * 30 - 360}deg)`,\n height: '21.5%',\n });\n\n if (Number(this._hour.textContent) > 12) {\n Manipulator.addStyle(this._hand, {\n height: '21.5%',\n });\n }\n } else {\n Manipulator.addStyle(this._hand, {\n height: 'calc(40% + 1px)',\n });\n }\n\n if (format24) {\n this._getAppendClock(\n this.innerHours,\n `.${CLOCK_INNER_CLASS}`,\n TIPS_INNER_HOURS_CLASS\n );\n }\n if (allInnerTips.length > 0) {\n allInnerTips.forEach((innerTip) => innerTip.remove());\n }\n\n switchTips(this.hoursArray, `${TIPS_HOURS_CLASS}`, allTipsHours);\n\n Manipulator.addStyle(this._hour, {\n pointerEvents: 'none',\n });\n Manipulator.addStyle(this._minutes, {\n pointerEvents: '',\n });\n }\n }\n });\n });\n }\n\n _handleDisablingTipsMaxTime(selectedFormat, maxTimeFormat, maxTimeMinutes, maxTimeHour) {\n if (!this._options.maxTime && !this._options.disableFuture) {\n return;\n }\n\n const outerHoursTips = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`);\n const innerHoursTips = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`);\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`);\n\n if (!maxTimeFormat || maxTimeFormat === selectedFormat) {\n _verifyMaxTimeHourAndAddDisabledClass(innerHoursTips, maxTimeHour);\n _verifyMaxTimeHourAndAddDisabledClass(outerHoursTips, maxTimeHour);\n _verifyMaxTimeMinutesTipsAndAddDisabledClass(\n allTipsMinutes,\n maxTimeMinutes,\n maxTimeHour,\n this._hour.textContent\n );\n return;\n }\n if (maxTimeFormat === 'AM' && selectedFormat === 'PM') {\n outerHoursTips.forEach((tip) => {\n Manipulator.addClass(tip, 'disabled');\n });\n allTipsMinutes.forEach((tip) => {\n Manipulator.addClass(tip, 'disabled');\n });\n }\n }\n\n _handleDisablingTipsMinTime(selectedFormat, minTimeFormat, minTimeMinutes, minTimeHour) {\n if (!this._options.minTime && !this._options.disablePast) {\n return;\n }\n\n const outerHoursTips = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`);\n const innerHoursTips = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`);\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`);\n\n if (!minTimeFormat || minTimeFormat === selectedFormat) {\n _verifyMinTimeHourAndAddDisabledClass(outerHoursTips, minTimeHour);\n _verifyMinTimeHourAndAddDisabledClass(innerHoursTips, minTimeHour);\n _verifyMinTimeMinutesTipsAndAddDisabledClass(\n allTipsMinutes,\n minTimeMinutes,\n minTimeHour,\n this._hour.textContent\n );\n } else if (minTimeFormat === 'PM' && selectedFormat === 'AM') {\n outerHoursTips.forEach((tip) => Manipulator.addClass(tip, 'disabled'));\n allTipsMinutes.forEach((tip) => Manipulator.addClass(tip, 'disabled'));\n }\n }\n _toggleAmPm = (enabled) => {\n if (enabled == 'PM') {\n this._isPmEnabled = true;\n this._isAmEnabled = false;\n } else if (enabled == 'AM') {\n this._isPmEnabled = false;\n this._isAmEnabled = true;\n }\n };\n\n _handleSwitchTimeMode() {\n EventHandler.on(document, 'click', `.${HOUR_MODE_CLASS}`, ({ target }) => {\n let { maxTime, minTime } = this._options;\n const { disablePast, disableFuture, format12 } = this._options;\n\n minTime = setMinTime(minTime, disablePast, format12);\n maxTime = setMaxTime(maxTime, disableFuture, format12);\n\n let [maxTimeHour, maxTimeMinutes, maxTimeFormat] = takeValue(maxTime, false);\n let [minTimeHour, minTimeMinutes, minTimeFormat] = takeValue(minTime, false);\n\n const allTipsHour = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`);\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`);\n\n const clearDisabledClassForAllTips = () => {\n allTipsHour.forEach((tip) => {\n Manipulator.removeClass(tip, 'disabled');\n });\n\n allTipsMinutes.forEach((tip) => {\n Manipulator.removeClass(tip, 'disabled');\n });\n };\n\n clearDisabledClassForAllTips();\n this._handleDisablingTipsMinTime(\n target.textContent,\n minTimeFormat,\n minTimeMinutes,\n minTimeHour\n );\n this._handleDisablingTipsMaxTime(\n target.textContent,\n maxTimeFormat,\n maxTimeMinutes,\n maxTimeHour\n );\n this._toggleAmPm(target.textContent);\n\n if (!Manipulator.hasClass(target, ACTIVE_CLASS)) {\n const allHoursMode = SelectorEngine.find(`.${HOUR_MODE_CLASS}`);\n\n allHoursMode.forEach((element) => {\n if (Manipulator.hasClass(element, ACTIVE_CLASS)) {\n Manipulator.removeClass(element, ACTIVE_CLASS);\n }\n });\n\n Manipulator.addClass(target, ACTIVE_CLASS);\n }\n });\n }\n\n _handleClockClick() {\n let { maxTime, minTime } = this._options;\n const { disablePast, disableFuture, format12 } = this._options;\n minTime = setMinTime(minTime, disablePast, format12);\n maxTime = setMaxTime(maxTime, disableFuture, format12);\n\n const maxTimeFormat = takeValue(maxTime, false)[2];\n const minTimeFormat = takeValue(minTime, false)[2];\n\n const maxTimeHour = takeValue(maxTime, false)[0];\n const minTimeHour = takeValue(minTime, false)[0];\n\n const clockWrapper = SelectorEngine.findOne(`.${CLOCK_WRAPPER_CLASS}`);\n EventHandlerMulti.on(\n document,\n `${EVENT_MOUSEDOWN_DATA_API} ${EVENT_MOUSEUP_DATA_API} ${EVENT_MOUSEMOVE_DATA_API} ${EVENT_MOUSELEAVE_DATA_API} ${EVENT_MOUSEOVER_DATA_API} ${EVENT_TOUCHSTART_DATA_API} ${EVENT_TOUCHMOVE_DATA_API} ${EVENT_TOUCHEND_DATA_API}`,\n '',\n (e) => {\n if (!checkBrowser()) {\n e.preventDefault();\n }\n\n const { type, target } = e;\n const { closeModalOnMinutesClick, switchHoursToMinutesOnClick } = this._options;\n const minutes = SelectorEngine.findOne(`.${TIPS_MINUTES_CLASS}`, this._modal) !== null;\n const hours = SelectorEngine.findOne(`.${TIPS_HOURS_CLASS}`, this._modal) !== null;\n const innerHours =\n SelectorEngine.findOne(`.${TIPS_INNER_HOURS_CLASS}`, this._modal) !== null;\n\n const allTipsMinutes = SelectorEngine.find(`.${TIPS_MINUTES_CLASS}`, this._modal);\n\n const mouseClick = findMousePosition(e, clockWrapper);\n const radius = clockWrapper.offsetWidth / 2;\n\n let rds = Math.atan2(mouseClick.y - radius, mouseClick.x - radius);\n if (checkBrowser()) {\n const touchClick = findMousePosition(e, clockWrapper, true);\n rds = Math.atan2(touchClick.y - radius, touchClick.x - radius);\n }\n\n let xPos = null;\n let yPos = null;\n let elFromPoint = null;\n\n if (\n type === 'mousedown' ||\n type === 'mousemove' ||\n type === 'touchmove' ||\n type === 'touchstart'\n ) {\n if (type === 'mousedown' || type === 'touchstart' || type === 'touchmove') {\n if (\n this._hasTargetInnerClass(target) ||\n Manipulator.hasClass(target, CLOCK_WRAPPER_CLASS) ||\n Manipulator.hasClass(target, CLOCK_CLASS) ||\n Manipulator.hasClass(target, TIPS_MINUTES_CLASS) ||\n Manipulator.hasClass(target, TIPS_HOURS_CLASS) ||\n Manipulator.hasClass(target, CIRCLE_CLASS) ||\n Manipulator.hasClass(target, HAND_CLASS) ||\n Manipulator.hasClass(target, MIDDLE_DOT_CLASS) ||\n Manipulator.hasClass(target, TIPS_ELEMENT_CLASS)\n ) {\n this._isMouseMove = true;\n\n if (checkBrowser() && e.touches) {\n xPos = e.touches[0].clientX;\n yPos = e.touches[0].clientY;\n elFromPoint = document.elementFromPoint(xPos, yPos);\n }\n }\n }\n } else if (type === 'mouseup' || type === 'touchend') {\n this._isMouseMove = false;\n if (\n this._hasTargetInnerClass(target) ||\n Manipulator.hasClass(target, CLOCK_CLASS) ||\n Manipulator.hasClass(target, TIPS_HOURS_CLASS) ||\n Manipulator.hasClass(target, CIRCLE_CLASS) ||\n Manipulator.hasClass(target, HAND_CLASS) ||\n Manipulator.hasClass(target, MIDDLE_DOT_CLASS) ||\n Manipulator.hasClass(target, TIPS_ELEMENT_CLASS)\n ) {\n if ((hours || innerHours) && switchHoursToMinutesOnClick) {\n const isHourLessThanMinOrGreaterThanMax =\n Number(this._hour.textContent) > maxTimeHour ||\n Number(this._hour.textContent) < minTimeHour;\n if (\n this._options.format24 &&\n maxTimeHour != '' &&\n minTimeHour != '' &&\n isHourLessThanMinOrGreaterThanMax\n ) {\n return;\n } else if (\n this._options.format24 &&\n maxTimeHour != '' &&\n this._hour.textContent > maxTimeHour\n ) {\n return;\n } else if (\n this._options.format24 &&\n minTimeHour != '' &&\n this._hour.textContent < minTimeHour\n ) {\n return;\n }\n }\n if (!Manipulator.hasClass(this._minutes, ACTIVE_CLASS)) {\n EventHandler.trigger(this._minutes, 'click');\n }\n }\n\n if (minutes && closeModalOnMinutesClick) {\n const submitBtn = SelectorEngine.findOne(`.${BUTTON_SUBMIT_CLASS}`, this._modal);\n EventHandler.trigger(submitBtn, 'click');\n }\n }\n\n if (minutes) {\n let minute;\n const degrees = Math.trunc((rds * 180) / Math.PI) + 90;\n const { degrees: minDegrees, minute: minTimeObj } = this._makeMinutesDegrees(\n degrees,\n minute\n );\n\n if (this._handlerMaxMinMinutesOptions(minDegrees, minTimeObj) === undefined) {\n return;\n }\n\n const { degrees: _degrees, minute: minuteTimes } = this._handlerMaxMinMinutesOptions(\n minDegrees,\n minTimeObj\n );\n\n if (this._isMouseMove) {\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${_degrees}deg)`,\n });\n\n if (minuteTimes === undefined) {\n return;\n }\n\n const changeMinutes = () => {\n return minuteTimes >= 10 || minuteTimes === '00' ? minuteTimes : `0${minuteTimes}`;\n };\n\n this._minutes.textContent = changeMinutes();\n\n this._toggleClassActive(this.minutesArray, this._minutes, allTipsMinutes);\n this._toggleBackgroundColorCircle(`${TIPS_MINUTES_CLASS}`);\n\n this._objWithDataOnChange.degreesMinutes = _degrees;\n this._objWithDataOnChange.minutes = minuteTimes;\n }\n }\n\n if (hours || innerHours) {\n let hour;\n\n let degrees = Math.trunc((rds * 180) / Math.PI) + 90;\n degrees = Math.round(degrees / 30) * 30;\n\n Manipulator.addClass(this._circle, 'active');\n\n if (this._makeHourDegrees(target, degrees, hour) === undefined) {\n return;\n }\n const makeDegrees = () => {\n if (checkBrowser() && degrees && elFromPoint) {\n const { degrees: touchDegrees, hour: touchHours } = this._makeHourDegrees(\n elFromPoint,\n degrees,\n hour\n );\n return this._handleMoveHand(elFromPoint, touchHours, touchDegrees);\n } else {\n const { degrees: movedDegrees, hour: movedHours } = this._makeHourDegrees(\n target,\n degrees,\n hour\n );\n return this._handleMoveHand(target, movedHours, movedDegrees);\n }\n };\n\n this._objWithDataOnChange.degreesHours = degrees;\n\n if (\n this._handlerMaxMinHoursOptions(\n degrees,\n maxTimeHour,\n minTimeHour,\n maxTimeFormat,\n minTimeFormat,\n e\n )\n ) {\n makeDegrees();\n }\n }\n\n e.stopPropagation();\n }\n );\n }\n\n _hasTargetInnerClass(target) {\n return (\n Manipulator.hasClass(target, CLOCK_INNER_CLASS) ||\n Manipulator.hasClass(target, TIPS_INNER_HOURS_CLASS) ||\n Manipulator.hasClass(target, TIPS_INNER_ELEMENT_CLASS)\n );\n }\n\n _handleMoveHand(target, hour, degrees) {\n const allTipsHours = SelectorEngine.find(`.${TIPS_HOURS_CLASS}`, this._modal);\n const allTipsInner = SelectorEngine.find(`.${TIPS_INNER_HOURS_CLASS}`, this._modal);\n\n if (this._isMouseMove) {\n if (this._hasTargetInnerClass(target)) {\n Manipulator.addStyle(this._hand, {\n height: '21.5%',\n });\n } else {\n Manipulator.addStyle(this._hand, {\n height: 'calc(40% + 1px)',\n });\n }\n\n Manipulator.addStyle(this._hand, {\n transform: `rotateZ(${degrees}deg)`,\n });\n\n this._hour.textContent = hour >= 10 || hour === '00' ? hour : `0${hour}`;\n\n this._toggleClassActive(this.hoursArray, this._hour, allTipsHours);\n this._toggleClassActive(this.innerHours, this._hour, allTipsInner);\n\n this._objWithDataOnChange.hour = hour >= 10 || hour === '00' ? hour : `0${hour}`;\n }\n }\n\n _handlerMaxMinMinutesOptions(degrees, minute) {\n let { maxTime, minTime } = this._options;\n const { format12, increment, disablePast, disableFuture } = this._options;\n\n minTime = setMinTime(minTime, disablePast, format12);\n maxTime = setMaxTime(maxTime, disableFuture, format12);\n\n const maxMin = takeValue(maxTime, false)[1];\n const minMin = takeValue(minTime, false)[1];\n const maxHourTime = takeValue(maxTime, false)[0];\n const minHourTime = takeValue(minTime, false)[0];\n\n const maxTimeFormat = takeValue(maxTime, false)[2];\n const minTimeFormat = takeValue(minTime, false)[2];\n\n const maxMinDegrees = maxMin !== '' ? maxMin * 6 : '';\n const minMinDegrees = minMin !== '' ? minMin * 6 : '';\n\n const selectedHour = Number(this._hour.textContent);\n\n if (!maxTimeFormat && !minTimeFormat) {\n if (maxTime !== '' && minTime !== '') {\n if (\n (maxHourTime == selectedHour && degrees > maxMinDegrees) ||\n (minHourTime == selectedHour && degrees < minMinDegrees)\n ) {\n return degrees;\n }\n } else if (minTime !== '' && selectedHour <= Number(minHourTime)) {\n if (degrees <= minMinDegrees - 6) {\n return degrees;\n }\n } else if (maxTime !== '' && selectedHour >= Number(maxHourTime)) {\n if (degrees >= maxMinDegrees + 6) {\n return degrees;\n }\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (minTime !== '') {\n if (minTimeFormat === 'PM' && this._isAmEnabled) {\n return;\n }\n\n if (minTimeFormat === 'PM' && this._isPmEnabled) {\n if (selectedHour < Number(minHourTime)) {\n return;\n }\n\n if (selectedHour <= Number(minHourTime)) {\n if (degrees <= minMinDegrees - 6) {\n return degrees;\n }\n }\n } else if (minTimeFormat === 'AM' && this._isAmEnabled) {\n if (selectedHour < Number(minHourTime)) {\n return;\n }\n\n if (selectedHour <= Number(minHourTime)) {\n if (degrees <= minMinDegrees - 6) {\n return degrees;\n }\n }\n }\n }\n if (maxTime !== '') {\n if (maxTimeFormat === 'AM' && this._isPmEnabled) {\n return;\n }\n\n if (maxTimeFormat === 'PM' && this._isPmEnabled) {\n if (selectedHour >= Number(maxHourTime)) {\n if (degrees >= maxMinDegrees + 6) {\n return degrees;\n }\n }\n } else if (maxTimeFormat === 'AM' && this._isAmEnabled) {\n if (selectedHour >= Number(maxHourTime)) {\n if (degrees >= maxMinDegrees + 6) {\n return degrees;\n }\n }\n }\n }\n }\n\n if (increment) {\n degrees = Math.round(degrees / 30) * 30;\n }\n\n if (degrees <= 0) {\n degrees = 360 + degrees;\n } else if (degrees >= 360) {\n degrees = 0;\n }\n\n return {\n degrees,\n minute,\n };\n }\n\n _removeModal() {\n const timeout = this._animations ? 300 : 0;\n\n setTimeout(() => {\n this._removeModalElements();\n if (!this._options.inline) {\n this._scrollBar.reset();\n }\n }, timeout);\n\n this._removeFocusTrap();\n\n EventHandlerMulti.off(\n this._document,\n `${EVENT_CLICK_DATA_API} ${EVENT_KEYDOWN_DATA_API} ${EVENT_MOUSEDOWN_DATA_API} ${EVENT_MOUSEUP_DATA_API} ${EVENT_MOUSEMOVE_DATA_API} ${EVENT_MOUSELEAVE_DATA_API} ${EVENT_MOUSEOVER_DATA_API} ${EVENT_TOUCHSTART_DATA_API} ${EVENT_TOUCHMOVE_DATA_API} ${EVENT_TOUCHEND_DATA_API}`\n );\n EventHandler.off(window, EVENT_KEYDOWN_DATA_API);\n }\n\n _removeModalElements() {\n if (this._modal) {\n this._modal.remove();\n }\n }\n\n _toggleBackdropAnimation(isToRemove = false) {\n if (isToRemove) {\n Manipulator.addClass(this._wrapper, 'animation');\n Manipulator.addClass(this._wrapper, WRAPPER_CLOSE_ANIMATION_CLASS);\n this._wrapper.style.animationDuration = '300ms';\n } else {\n Manipulator.addClass(this._wrapper, 'animation');\n Manipulator.addClass(this._wrapper, WRAPPER_OPEN_ANIMATION_CLASS);\n this._wrapper.style.animationDuration = '300ms';\n\n if (!this._options.inline) Manipulator.addClass(this._clock, CLOCK_ANIMATION_CLASS);\n }\n }\n\n _toggleBackgroundColorCircle = (classes) => {\n const tips = this._modal.querySelector(`.${classes}.${ACTIVE_CLASS}`) !== null;\n\n if (tips) {\n Manipulator.addClass(this._circle, 'active');\n return;\n }\n Manipulator.removeClass(this._circle, 'active');\n };\n\n _toggleClassActive = (array, { textContent }, tips) => {\n const findInArray = [...array].find((e) => Number(e) === Number(textContent));\n\n return tips.forEach((e) => {\n if (!Manipulator.hasClass(e, 'disabled')) {\n if (e.textContent === findInArray) {\n Manipulator.addClass(e, ACTIVE_CLASS);\n } else {\n Manipulator.removeClass(e, ACTIVE_CLASS);\n }\n }\n });\n };\n\n _addActiveClassToTip(tips, value) {\n tips.forEach((tip) => {\n if (Number(tip.textContent) === Number(value)) {\n Manipulator.addClass(tip, ACTIVE_CLASS);\n }\n });\n }\n\n _makeMinutesDegrees = (degrees, minute) => {\n const { increment } = this._options;\n\n if (degrees < 0) {\n minute = Math.round(360 + degrees / 6) % 60;\n degrees = 360 + Math.round(degrees / 6) * 6;\n } else {\n minute = Math.round(degrees / 6) % 60;\n degrees = Math.round(degrees / 6) * 6;\n }\n\n if (increment) {\n degrees = Math.round(degrees / 30) * 30;\n minute = (Math.round(degrees / 6) * 6) / 6;\n\n if (minute === 60) {\n minute = '00';\n }\n }\n\n if (degrees >= 360) {\n degrees = 0;\n }\n\n return {\n degrees,\n minute,\n addDegrees: increment ? 30 : 6,\n };\n };\n\n _makeHourDegrees = (target, degrees, hour) => {\n if (!target) {\n return;\n }\n\n if (this._hasTargetInnerClass(target)) {\n if (degrees < 0) {\n hour = Math.round(360 + degrees / 30) % 24;\n degrees = 360 + degrees;\n } else {\n hour = Math.round(degrees / 30) + 12;\n if (hour === 12) {\n hour = '00';\n }\n }\n } else if (degrees < 0) {\n hour = Math.round(360 + degrees / 30) % 12;\n degrees = 360 + degrees;\n } else {\n hour = Math.round(degrees / 30) % 12;\n if (hour === 0 || hour > 12) {\n hour = 12;\n }\n }\n\n if (degrees >= 360) {\n degrees = 0;\n }\n\n return {\n degrees,\n hour,\n addDegrees: 30,\n };\n };\n\n _makeInnerHoursDegrees = (degrees, hour) => {\n if (degrees < 0) {\n hour = Math.round(360 + degrees / 30) % 24;\n degrees = 360 + degrees;\n } else {\n hour = Math.round(degrees / 30) + 12;\n if (hour === 12) {\n hour = '00';\n }\n }\n\n return {\n degrees,\n hour,\n addDegrees: 30,\n };\n };\n\n _setHourOrMinute(number) {\n return number < 10 ? `0${number}` : number;\n }\n\n _appendTimes() {\n const { format24 } = this._options;\n\n if (format24) {\n this._getAppendClock(this.hoursArray, `.${CLOCK_CLASS}`, `${TIPS_HOURS_CLASS}`);\n this._getAppendClock(this.innerHours, `.${CLOCK_INNER_CLASS}`, TIPS_INNER_HOURS_CLASS);\n } else {\n this._getAppendClock(this.hoursArray, `.${CLOCK_CLASS}`, `${TIPS_HOURS_CLASS}`);\n }\n }\n\n _getAppendClock = (array = [], clockClass = `.${CLOCK_CLASS}`, tipsClass) => {\n let { minTime, maxTime } = this._options;\n const { inline, format12, disablePast, disableFuture } = this._options;\n minTime = setMinTime(minTime, disablePast, format12);\n maxTime = setMaxTime(maxTime, disableFuture, format12);\n\n const [maxTimeHour, maxTimeMinutes, maxTimeFormat] = takeValue(maxTime, false);\n const [minTimeHour, minTimeMinutes, minTimeFormat] = takeValue(minTime, false);\n\n // fix for append clock for max/min if input has invalid value\n if (!inline) {\n if (format12) {\n if (this._isInvalidTimeFormat && !Manipulator.hasClass(this._AM, 'active')) {\n Manipulator.addClass(this._PM, 'active');\n }\n }\n }\n\n const clock = SelectorEngine.findOne(clockClass);\n\n const elements = 360 / array.length;\n\n function rad(el) {\n return el * (Math.PI / 180);\n }\n\n if (clock === null) {\n return;\n }\n\n const clockWidth = (clock.offsetWidth - 32) / 2;\n const clockHeight = (clock.offsetHeight - 32) / 2;\n const radius = clockWidth - 4;\n\n setTimeout(() => {\n let currentFormat;\n if (format12) {\n currentFormat = SelectorEngine.findOne(`.${HOUR_MODE_CLASS}.${ACTIVE_CLASS}`).textContent;\n }\n this._handleDisablingTipsMinTime(currentFormat, minTimeFormat, minTimeMinutes, minTimeHour);\n this._handleDisablingTipsMaxTime(currentFormat, maxTimeFormat, maxTimeMinutes, maxTimeHour);\n }, 0);\n\n [...array].forEach((e, i) => {\n const angle = rad(i * elements);\n\n const span = element('span');\n const spanToTips = element('span');\n\n spanToTips.innerHTML = e;\n Manipulator.addClass(span, tipsClass);\n\n const itemWidth = span.offsetWidth;\n const itemHeight = span.offsetHeight;\n\n Manipulator.addStyle(span, {\n left: `${clockWidth + Math.sin(angle) * radius - itemWidth}px`,\n bottom: `${clockHeight + Math.cos(angle) * radius - itemHeight}px`,\n });\n\n if (array.includes('05')) {\n Manipulator.addClass(span, `${TIPS_MINUTES_CLASS}`);\n }\n\n if (array.includes('13')) {\n spanToTips.classList.add(TIPS_INNER_ELEMENT_CLASS);\n } else {\n spanToTips.classList.add(TIPS_ELEMENT_CLASS);\n }\n\n span.appendChild(spanToTips);\n return clock.appendChild(span);\n });\n };\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n isRTL,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _getContainer() {\n return SelectorEngine.findOne(this._options.container);\n }\n\n _listenToUserInput() {\n EventHandler.on(this._input, 'input', (event) => {\n this._handleUserInput(event.target.value);\n });\n }\n\n _handleUserInput(input) {\n const { format24, format12 } = this._options;\n\n if (this._input.value === '') {\n return;\n }\n\n const regexAMFormat = /^(0?[1-9]|1[0-2]):[0-5][0-9] [APap][mM]$/;\n const regexNormalFormat = /^(?:[01]\\d|2[0-3]):[0-5]\\d$/;\n const testedAMRegex = regexAMFormat.test(input);\n const testedNormalRegex = regexNormalFormat.test(input);\n\n if (testedNormalRegex === true && format24) {\n this._isInvalidTimeFormat = false;\n this._inputValue = this._input.value;\n this._currentTime = formatNormalHours(this._inputValue);\n } else if (testedAMRegex === true && format12) {\n this._isInvalidTimeFormat = false;\n this._inputValue = this._input.value;\n this._currentTime = formatToAmPm(this._inputValue);\n } else {\n this._isInvalidTimeFormat = true;\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Timepicker(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n}\n\nexport default Timepicker;\n","import EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'navbar';\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Navbar extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n init() {\n this._onScroll();\n this._addEvent();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n dispose() {\n this._removeEvent();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _addEvent() {\n EventHandler.on(window, 'scroll', () => this._onScroll());\n }\n\n _removeEvent() {\n EventHandler.off(window, 'scroll');\n }\n\n _onScroll() {\n if (window.scrollY > 0) {\n Manipulator.addClass(this._element, 'navbar-scrolled');\n } else {\n Manipulator.removeClass(this._element, 'navbar-scrolled');\n }\n }\n\n // Static\n static jQueryInterface(config) {\n this.each(function () {\n const data = Navbar.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\nexport default Navbar;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport Manipulator from '../mdb/dom/manipulator';\nimport EventHandler from '../mdb/dom/event-handler';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'infiniteScroll';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst EVENT_COMPLETED = `completed${EVENT_KEY}`;\n\nconst Default = {\n infiniteDirection: 'y',\n};\n\nconst DefaultType = {\n infiniteDirection: 'string',\n};\n\nclass InfiniteScroll extends BaseComponent {\n constructor(element, data) {\n super(element);\n this._element = element;\n\n this._options = this._getConfig(data);\n\n this._elementScrollHandler = this._scrollHandler.bind(this);\n\n this._init();\n\n if (this._element !== window) {\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get rect() {\n return this._element.getBoundingClientRect();\n }\n\n get condition() {\n if (this._element === window) {\n return (\n Math.abs(window.scrollY + window.innerHeight - document.documentElement.scrollHeight) < 1\n );\n }\n if (this._options.infiniteDirection === 'x') {\n return this.rect.width + this._element.scrollLeft + 10 >= this._element.scrollWidth;\n }\n return Math.ceil(this.rect.height + this._element.scrollTop) >= this._element.scrollHeight;\n }\n\n // Public\n\n dispose() {\n EventHandler.off(this._element, 'scroll', this._elementScrollHandler);\n if (this._element !== window) {\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n }\n\n super.dispose();\n }\n\n // Private\n\n _init() {\n EventHandler.on(this._element, 'scroll', this._elementScrollHandler);\n }\n\n _scrollHandler() {\n if (this.condition) {\n EventHandler.trigger(this._element, EVENT_COMPLETED);\n }\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data) {\n data = new InfiniteScroll(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\nexport default InfiniteScroll;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Animate from './animate';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'lazyLoad';\nconst DATA_KEY = 'mdb.lazyLoad';\n\nconst CLASSNAME_LAZYLOAD = 'lazy';\nconst SELECTOR_LAZYLOAD = '.lazy';\nconst SELECTOR_ELEMENTS = ['img', 'video'];\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_LOADED = `contentLoaded${EVENT_KEY}`;\nconst EVENT_ERROR = `loadingError${EVENT_KEY}`;\n\nconst DefaultType = {\n lazySrc: '(string|null)',\n lazyDelay: 'number',\n lazyAnimation: 'string',\n lazyOffset: 'number',\n lazyPlaceholder: '(string|undefined)',\n lazyError: '(string|undefined)',\n};\n\nconst Default = {\n lazySrc: null,\n lazyDelay: 500,\n lazyAnimation: 'fade-in',\n lazyOffset: 0,\n};\n\nclass LazyLoad extends BaseComponent {\n constructor(element, data) {\n super(element);\n\n this._options = this._getConfig(data);\n\n this._scrollHandler = this._handleScroll.bind(this);\n\n this._errorHandler = this._setElementError.bind(this);\n\n this._childrenInstances = null;\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get offsetValues() {\n return this._element.getBoundingClientRect();\n }\n\n get inViewport() {\n if (this.parent) {\n const parentRect = this.parent.getBoundingClientRect();\n return (\n parentRect.y > 0 &&\n parentRect.y < window.innerHeight &&\n this.offsetValues.y >= parentRect.y &&\n this.offsetValues.y <= parentRect.y + parentRect.height &&\n this.offsetValues.y <= window.innerHeight\n );\n }\n\n return (\n this.offsetValues.top + this._options.lazyOffset <= window.innerHeight &&\n this.offsetValues.bottom >= 0\n );\n }\n\n get parent() {\n const [container] = SelectorEngine.parents(this._element, SELECTOR_LAZYLOAD);\n return container;\n }\n\n get node() {\n return this._element.nodeName;\n }\n\n get isContainer() {\n return !SelectorEngine.matches(this._element, SELECTOR_ELEMENTS);\n }\n\n // Public\n\n dispose() {\n EventHandler.off(this._element, 'load');\n EventHandler.off(this._element, 'error', this._errorHandler);\n EventHandler.off(window, 'scroll', this._scrollHandler);\n\n if (this._animation) {\n this._animation.dispose();\n this._animation = null;\n }\n if (this._childrenInstances) {\n this._childrenInstances.forEach((child) => child.dispose());\n }\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n\n _init() {\n Manipulator.addClass(this._element, CLASSNAME_LAZYLOAD);\n\n if (this.isContainer) {\n this._setupContainer();\n return;\n }\n\n this._setupElement();\n }\n\n _setupElement() {\n EventHandler.one(this._element, 'error', this._errorHandler);\n\n if (this._options.lazyPlaceholder) {\n this._setPlaceholder();\n }\n\n this._animation = new Animate(this._element, {\n animation: this._options.lazyAnimation,\n animationStart: 'onLoad',\n });\n\n EventHandler.one(this._element, 'load', this._scrollHandler);\n if (this.parent) {\n EventHandler.on(this.parent, 'scroll', this._scrollHandler);\n }\n\n EventHandler.on(window, 'scroll', this._scrollHandler);\n }\n\n _handleScroll() {\n if (this.inViewport) {\n this._timeout = setTimeout(() => {\n this._setSrc();\n\n this._element.classList.remove(CLASSNAME_LAZYLOAD);\n\n this._removeAttrs();\n\n this._animation.init();\n }, this._options.lazyDelay);\n\n if (this.parent) {\n EventHandler.off(this.parent, 'scroll', this._scrollHandler);\n }\n\n EventHandler.off(window, 'scroll', this._scrollHandler);\n }\n }\n\n _setElementError() {\n if (!this._options.lazyError || this._element.src === this._options.lazyError) {\n this._element.alt = '404 not found';\n } else {\n this._element.setAttribute('src', this._options.lazyError);\n }\n EventHandler.trigger(this._element, EVENT_ERROR);\n }\n\n _setSrc() {\n this._element.setAttribute('src', this._options.lazySrc);\n\n EventHandler.trigger(this._element, EVENT_LOADED);\n }\n\n _setPlaceholder() {\n if (this.node === 'IMG') {\n this._element.setAttribute('src', this._options.lazyPlaceholder);\n } else if (this.node === 'VIDEO') {\n this._element.setAttribute('poster', this._options.lazyPlaceholder);\n }\n }\n\n _removeAttrs() {\n ['src', 'delay', 'animation', 'placeholder', 'offset', 'error'].forEach((attr) => {\n Manipulator.removeDataAttribute(this._element, `lazy-${attr}`);\n });\n }\n\n _setupContainer() {\n this._childrenInstances = SelectorEngine.children(this._element, SELECTOR_ELEMENTS).map(\n (child) => new LazyLoad(child, this._options)\n );\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...options,\n ...Manipulator.getDataAttributes(this._element),\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new LazyLoad(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n}\n\nexport default LazyLoad;\n","export function getDate(date) {\n return date.getDate();\n}\n\nexport function getDayNumber(date) {\n return date.getDay();\n}\n\nexport function getMonth(date) {\n return date.getMonth();\n}\n\nexport function getYear(date) {\n return date.getFullYear();\n}\n\nexport function isFullYearFormat(format) {\n return format.toLowerCase().includes('yyyy');\n}\n\nexport function getFirstDayOfWeek(year, month, options) {\n const firstDayIndex = options.startDay;\n const sundayIndex = firstDayIndex > 0 ? 7 - firstDayIndex : 0;\n const date = new Date(year, month);\n const index = date.getDay() + sundayIndex;\n const newIndex = index >= 7 ? index - 7 : index;\n return newIndex;\n}\n\nexport function getDaysInMonth(date) {\n return getMonthEnd(date).getDate();\n}\n\nexport function getMonthEnd(date) {\n return createDate(date.getFullYear(), date.getMonth() + 1, 0);\n}\n\nexport function getToday() {\n return new Date();\n}\n\nexport function addYears(date, years) {\n return addMonths(date, years * 12);\n}\n\nexport function addMonths(date, months) {\n const month = createDate(date.getFullYear(), date.getMonth() + months, date.getDate());\n const dayOfPreviousMonth = getDate(date);\n const dayOfNewMonth = getDate(month);\n\n // Solution for edge cases, like moving from a month with a greater number\n // of days than the destination month. For example, when we move from 31 Mar 2020 to\n // February, createDate(2020, 2, 31) will return 2 Mar 2020, not the desired 29 Feb 2020.\n // We need to use setDate(0) to move back to the last day of the previous month (29 Feb 2020)\n if (dayOfPreviousMonth !== dayOfNewMonth) {\n month.setDate(0);\n }\n\n return month;\n}\n\nexport function addDays(date, days) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nexport function createDate(year, month, day) {\n const result = new Date(year, month, day);\n\n // In js native date years from 0 to 99 are treated as abbreviation\n // for dates like 19xx\n if (year >= 0 && year < 100) {\n result.setFullYear(result.getFullYear() - 1900);\n }\n return result;\n}\n\nexport function convertStringToDate(dateString) {\n const dateArr = dateString.split('-');\n const year = dateArr[0];\n const month = dateArr[1];\n const day = dateArr[2];\n\n return createDate(year, month, day);\n}\n\nexport function isValidDate(date) {\n return !Number.isNaN(date.getTime());\n}\n\nexport function isInRange(date, range) {\n if (range.length === 2) {\n return compareDates(date, range[0]) > 0 && compareDates(date, range[1]) < 0;\n }\n return false;\n}\n\nexport function isEdgeOfRange(date, range) {\n if (range.length === 2) {\n if (isSameDate(range[0], range[1])) return false;\n if (isSameDate(date, range[0])) return 'first';\n if (isSameDate(date, range[1])) return 'last';\n }\n return false;\n}\n\nexport function compareDates(date1, date2) {\n return (\n getYear(date1) - getYear(date2) ||\n getMonth(date1) - getMonth(date2) ||\n getDate(date1) - getDate(date2)\n );\n}\n\nexport function isSameDate(date1, date2) {\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n\n return date1.getTime() === date2.getTime();\n}\n\nexport function getYearsOffset(activeDate, yearsInView) {\n const activeYear = getYear(activeDate);\n const yearsDifference = activeYear - getStartYear();\n return modulo(yearsDifference, yearsInView);\n}\n\nfunction modulo(a, b) {\n return ((a % b) + b) % b;\n}\n\nexport function getStartYear(yearsInView, minDate, maxDate) {\n let startYear = 0;\n\n if (maxDate) {\n const maxYear = getYear(maxDate);\n startYear = maxYear - yearsInView + 1;\n } else if (minDate) {\n startYear = getYear(minDate);\n }\n\n return startYear;\n}\n\nexport function isDateDisabled(date, minDate, maxDate, filter, disabledPast, disabledFuture) {\n const currentDate = new Date();\n currentDate.setHours(0, 0, 0, 0);\n\n const isBeforeMin = minDate && compareDates(date, minDate) <= -1;\n const isAfterMax = maxDate && compareDates(date, maxDate) >= 1;\n\n const isDisabledPast = disabledPast && compareDates(date, currentDate) <= -1;\n const isDisabledFuture = disabledFuture && compareDates(date, currentDate) >= 1;\n\n const isDisabled = filter && filter(date) === false;\n\n return isBeforeMin || isAfterMax || isDisabled || isDisabledPast || isDisabledFuture;\n}\n\nexport function isMonthDisabled(month, year, minDate, maxDate, disabledPast, disabledFuture) {\n const currentDate = new Date();\n const maxYear = maxDate && getYear(maxDate);\n const maxMonth = maxDate && getMonth(maxDate);\n const minYear = minDate && getYear(minDate);\n const minMonth = minDate && getMonth(minDate);\n const currentYear = getYear(currentDate);\n const currentMonth = getMonth(currentDate);\n\n const isMonthAndYearAfterMax =\n maxMonth && maxYear && (year > maxYear || (year === maxYear && month > maxMonth));\n\n const isMonthAndYearBeforeMin =\n minMonth && minYear && (year < minYear || (year === minYear && month < minMonth));\n\n const isMonthAndYearDisabledPast =\n disabledPast && (year < currentYear || (year === currentYear && month < currentMonth));\n const isMonthAndYearDisabledFuture =\n disabledFuture && (year > currentYear || (year === currentYear && month > currentMonth));\n\n return (\n isMonthAndYearAfterMax ||\n isMonthAndYearBeforeMin ||\n isMonthAndYearDisabledPast ||\n isMonthAndYearDisabledFuture\n );\n}\n\nexport function isYearDisabled(year, minDate, maxDate, disabledPast, disabledFuture) {\n const min = minDate && getYear(minDate);\n const max = maxDate && getYear(maxDate);\n const currentYear = getYear(new Date());\n\n const isAfterMax = max && year > max;\n const isBeforeMin = min && year < min;\n const isDisabledPast = disabledPast && year < currentYear;\n const isDisabledFuture = disabledFuture && year > currentYear;\n\n return isAfterMax || isBeforeMin || isDisabledPast || isDisabledFuture;\n}\n\nexport function isNextDateDisabled(\n disabledFuture,\n activeDate,\n view,\n yearsInView,\n minDate,\n maxDate,\n lastYearInView,\n firstYearInView\n) {\n const currentDate = new Date();\n currentDate.setHours(0, 0, 0, 0);\n if (disabledFuture && maxDate && compareDates(maxDate, currentDate) < 0) {\n maxDate = currentDate;\n } else if (disabledFuture) {\n maxDate = currentDate;\n }\n return (\n maxDate &&\n areDatesInSameView(\n activeDate,\n maxDate,\n view,\n yearsInView,\n minDate,\n maxDate,\n lastYearInView,\n firstYearInView\n )\n );\n}\n\nexport function isPreviousDateDisabled(\n disabledPast,\n activeDate,\n view,\n yearsInView,\n minDate,\n maxDate,\n lastYearInView,\n firstYearInView\n) {\n const currentDate = new Date();\n currentDate.setHours(0, 0, 0, 0);\n if (disabledPast && minDate && compareDates(minDate, currentDate) < 0) {\n minDate = currentDate;\n } else if (disabledPast) {\n minDate = currentDate;\n }\n return (\n minDate &&\n areDatesInSameView(\n activeDate,\n minDate,\n view,\n yearsInView,\n minDate,\n maxDate,\n lastYearInView,\n firstYearInView\n )\n );\n}\n\nexport function areDatesInSameView(\n date1,\n date2,\n view,\n yearsInView,\n minDate,\n maxDate,\n lastYearInView,\n firstYearInView\n) {\n if (view === 'days') {\n return getYear(date1) === getYear(date2) && getMonth(date1) === getMonth(date2);\n }\n\n if (view === 'months') {\n return getYear(date1) === getYear(date2);\n }\n\n if (view === 'years') {\n return getYear(date2) >= firstYearInView && getYear(date2) <= lastYearInView;\n }\n\n return false;\n}\n","/* eslint-disable indent */\n\nimport Manipulator from '../../mdb/dom/manipulator';\nimport { element } from '../../mdb/util';\nimport {\n getYear,\n getMonth,\n getDate,\n getDayNumber,\n getFirstDayOfWeek,\n addMonths,\n getDaysInMonth,\n createDate,\n isSameDate,\n isInRange,\n getToday,\n getYearsOffset,\n isDateDisabled,\n isMonthDisabled,\n isYearDisabled,\n isEdgeOfRange,\n} from './date-utils';\n\nexport function getDatepickerTemplate(\n date,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n id,\n selectedRange\n) {\n const month = getMonth(date);\n const year = getYear(date);\n const day = getDate(date);\n const dayNumber = getDayNumber(date);\n const template = element('div');\n\n if (options.inline) {\n const inlineContent = `\n ${createMainContent(\n date,\n month,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n selectedRange\n )}\n`;\n Manipulator.addClass(template, 'datepicker-dropdown-container');\n Manipulator.addClass(template, `datepicker-dropdown-container-${id}`);\n\n template.innerHTML = inlineContent;\n } else {\n const modalContent = `\n ${createHeader(day, dayNumber, month, options, date, selectedRange)}\n ${createMainContent(\n date,\n month,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n selectedRange\n )}\n `;\n Manipulator.addClass(template, 'datepicker-modal-container');\n Manipulator.addClass(template, `datepicker-modal-container-${id}`);\n\n template.innerHTML = modalContent;\n }\n\n if (options.dateRange) {\n Manipulator.addClass(template, 'datepicker-date-range');\n }\n\n return template;\n}\n\nexport function getBackdropTemplate() {\n const backdrop = element('div');\n Manipulator.addClass(backdrop, 'datepicker-backdrop');\n\n return backdrop;\n}\n\nexport function createContainer() {\n const container = element('div');\n Manipulator.addClass(container, '.datepicker-modal-container');\n\n return container;\n}\n\nexport function createCustomHeader(day, dayNumber, month, selected, options) {\n const { weekdaysShort, weekdaysFull, monthsShort, headerTemplateModifier, headerTemplate } =\n options;\n\n const selectedDate = headerTemplateModifier ? headerTemplateModifier(selected) : selected;\n return headerTemplate\n .replaceAll('[day]', day)\n .replaceAll('[weekday]', weekdaysShort[dayNumber])\n .replaceAll('[weekdayFull]', weekdaysFull[dayNumber])\n .replaceAll('[month]', monthsShort[month])\n .replaceAll('[selected]', selectedDate);\n}\n\nfunction createHeader(day, dayNumber, month, options, selected, selectedRange) {\n return `\n <div class=\"datepicker-header\">\n ${\n options.headerTemplate\n ? createCustomHeader(day, dayNumber, month, selected, options)\n : `\n <div class=\"datepicker-title\">\n <span class=\"datepicker-title-text\">${options.title}</span>\n </div>\n <div class=\"datepicker-date\">\n <span class=\"datepicker-date-text\">${createTitle(selected, selectedRange, options)}</span>\n </div>\n `\n }\n </div>\n `;\n}\n\nexport function createTitle(selected, selectedRange, options) {\n const { dateRange, weekdaysShort, monthsShort } = options;\n\n const formatDate = (date) => {\n const month = getMonth(date);\n const day = getDate(date);\n const dayNumber = getDayNumber(date);\n return `${weekdaysShort[dayNumber]}, ${monthsShort[month]} ${day}`;\n };\n\n if (dateRange) {\n let endDate;\n let startDate;\n if (!selectedRange || selectedRange.length === 0) {\n startDate = selected;\n endDate = selected;\n } else {\n [startDate, endDate] = selectedRange;\n }\n return `${formatDate(startDate)} - ${endDate ? formatDate(endDate) : ''}`;\n }\n\n return formatDate(selected);\n}\n\nfunction createMainContent(\n date,\n month,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n selectedRange\n) {\n let mainContentTemplate;\n if (options.inline) {\n mainContentTemplate = `\n <div class=\"datepicker-main\">\n ${createControls(month, year, options)}\n <div class=\"datepicker-view\" tabindex=\"0\">\n ${createViewTemplate(\n date,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n selectedRange\n )}\n </div>\n </div>\n `;\n } else {\n mainContentTemplate = `\n <div class=\"datepicker-main\">\n ${createControls(month, year, options)}\n <div class=\"datepicker-view\" tabindex=\"0\">\n ${createViewTemplate(\n date,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n selectedRange\n )}\n </div>\n ${createFooter(options)}\n </div>\n `;\n }\n\n return mainContentTemplate;\n}\n\nfunction createViewTemplate(\n date,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow,\n selectedRange\n) {\n let viewTemplate;\n if (options.view === 'days') {\n viewTemplate = createDayViewTemplate(date, selectedDate, options, selectedRange);\n } else if (options.view === 'months') {\n viewTemplate = createMonthViewTemplate(year, selectedYear, selectedMonth, options, monthsInRow);\n } else {\n viewTemplate = createYearViewTemplate(date, selectedYear, options, yearsInView, yearsInRow);\n }\n\n return viewTemplate;\n}\n\nfunction createControls(month, year, options) {\n return `\n <div class=\"datepicker-date-controls\">\n <button class=\"datepicker-view-change-button\" aria-label=\"${options.switchToMultiYearViewLabel}\">\n ${options.monthsFull[month]} ${year}\n </button>\n <div class=\"datepicker-arrow-controls\">\n <button class=\"datepicker-previous-button\" aria-label=\"${options.prevMonthLabel}\"></button>\n <button class=\"datepicker-next-button\" aria-label=\"${options.nextMonthLabel}\"></button>\n </div>\n </div>\n `;\n}\n\nfunction createFooter(options) {\n const okBtn = `<button class=\"datepicker-footer-btn datepicker-ok-btn\" aria-label=\"${options.okBtnLabel}\">${options.okBtnText}</button>`;\n const cancelButton = `<button class=\"datepicker-footer-btn datepicker-cancel-btn\" aria-label=\"${options.cancelBtnLabel}\">${options.cancelBtnText}</button>`;\n const clearButton = `<button class=\"datepicker-footer-btn datepicker-clear-btn\" aria-label=\"${options.clearBtnLabel}\">${options.clearBtnText}</button>`;\n\n return `\n <div class=\"datepicker-footer\">\n ${options.removeClearBtn ? '' : clearButton}\n ${options.removeCancelBtn ? '' : cancelButton}\n ${options.removeOkBtn ? '' : okBtn}\n </div>\n `;\n}\n\nexport function createDayViewTemplate(date, headerDate, options, selectedRange) {\n const dates = getDatesArray(date, headerDate, options, selectedRange, 1);\n const nextMonthDates = options.dateRange\n ? getDatesArray(addMonths(date, 1), headerDate, options, selectedRange, 2)\n : null;\n const dayNames = options.weekdaysNarrow;\n\n const tableHeadContent = `\n <tr>\n ${dayNames\n .map((name, i) => {\n return `<th class=\"datepicker-day-heading\" scope=\"col\" aria-label=\"${options.weekdaysFull[i]}\">${name}</th>`;\n })\n .join('')}\n </tr>\n `;\n\n const tableBodyContent = (dates) =>\n dates\n .map(\n (week) => `\n <tr>\n ${week\n .map((day) => {\n const dayLabel = `${options.weekdaysFull[getDayNumber(day.date)]}, ${\n options.monthsFull[getMonth(day.date)]\n } ${getDate(day.date)}, ${getYear(day.date)}`;\n const currentDate = `${getYear(day.date)}-${getMonth(day.date)}-${getDate(\n day.date\n )}`;\n const isFirst = day.isEdgeOfRange === 'first';\n const isLast = day.isEdgeOfRange === 'last';\n\n const classNames = [\n 'datepicker-cell',\n 'datepicker-small-cell',\n 'datepicker-day-cell',\n day.currentMonth ? '' : 'disabled',\n day.disabled ? 'disabled' : '',\n day.isToday ? 'current' : '',\n day.isSelected ? 'selected' : '',\n day.isInRange ? 'in-range' : '',\n isFirst ? 'first-in-range' : '',\n isLast ? 'last-in-range' : '',\n ]\n .filter(Boolean) // Remove empty or false values\n .join(' ');\n\n return `\n <td\n class=\"${classNames}\"\n data-mdb-date=\"${day.currentMonth ? currentDate : ''}\"\n aria-label=\"${dayLabel}\"\n aria-selected=\"${day.isSelected}\"\n ${day.disabled ? 'aria-disabled=\"true\"' : ''}>\n <div\n class=\"datepicker-cell-content datepicker-small-cell-content\"\n style=\"${day.currentMonth ? 'display: block' : 'display: none'}\">\n ${day.dayNumber}\n </div>\n </td>\n `;\n })\n .join('')}\n </tr>\n `\n )\n .join('');\n\n const dayViewTemplate = (dates, month) => `\n <table class=\"datepicker-table\">\n <thead class=\"text-center\">\n ${\n options.dateRange\n ? `\n <tr class=\"datepicker-month-header\">\n <th colspan=\"7\">${options.monthsFull[month]}</th>\n </tr>\n `\n : ''\n }\n ${tableHeadContent}\n </thead>\n <tbody class=\"datepicker-table-body\">\n ${tableBodyContent(dates)}\n </tbody>\n </table>\n `;\n\n const rangeTemplate = () => `\n ${dayViewTemplate(dates, getMonth(date))}\n <div class=\"vr\"></div>\n ${dayViewTemplate(nextMonthDates, getMonth(addMonths(date, 1)))}\n `;\n\n return options.dateRange ? rangeTemplate() : dayViewTemplate(dates, getMonth(date));\n}\n\nfunction getDatesArray(activeDate, headerDate, options, selectedRange = [], visibleMonth) {\n const dates = [];\n\n const month = getMonth(activeDate);\n const previousMonth = getMonth(addMonths(activeDate, -1));\n const nextMonth = getMonth(addMonths(activeDate, 1));\n const year = getYear(activeDate);\n\n const firstDay = getFirstDayOfWeek(year, month, options);\n const daysInMonth = getDaysInMonth(activeDate);\n const daysInPreviousMonth = getDaysInMonth(addMonths(activeDate, -1));\n const daysInWeek = 7;\n\n let dayNumber = 1;\n let isCurrentMonth = false;\n\n const firstVisibleMonth = visibleMonth === 1 ? month : previousMonth;\n const secondVisibleMonth = visibleMonth === 1 ? nextMonth : month;\n const isVisible = options.dateRange\n ? month === firstVisibleMonth || month === secondVisibleMonth\n : month === firstVisibleMonth;\n\n const isSelected = (date, selectedRange) => {\n if (!selectedRange || selectedRange?.length === 0) return false;\n if (options.dateRange) {\n return selectedRange.length === 1\n ? isSameDate(date, selectedRange[0])\n : isSameDate(date, selectedRange[0]) || isSameDate(date, selectedRange[1]);\n }\n\n return isSameDate(date, selectedRange);\n };\n\n for (let i = 1; i < daysInWeek; i++) {\n const week = [];\n if (i === 1) {\n // First week\n const previousMonthDay = daysInPreviousMonth - firstDay + 1;\n // Previous month\n for (let j = previousMonthDay; j <= daysInPreviousMonth; j++) {\n const date = createDate(year, previousMonth, j);\n\n week.push({\n date,\n currentMonth: isCurrentMonth,\n isSelected: isSelected(date, headerDate) && isCurrentMonth,\n isInRange: isInRange(date, selectedRange) && isCurrentMonth,\n isEdgeOfRange: isCurrentMonth ? isEdgeOfRange(date, selectedRange) : false,\n isToday: isSameDate(date, getToday()),\n dayNumber: getDate(date),\n disabled: isDateDisabled(\n date,\n options.min,\n options.max,\n options.filter,\n options.disablePast,\n options.disableFuture\n ),\n });\n }\n\n isCurrentMonth = true;\n // Current month\n const daysLeft = daysInWeek - week.length;\n for (let j = 0; j < daysLeft; j++) {\n const date = createDate(year, month, dayNumber);\n\n week.push({\n date,\n currentMonth: isCurrentMonth,\n isSelected: isSelected(date, headerDate) && isVisible,\n isInRange: isInRange(date, selectedRange) && isCurrentMonth,\n isEdgeOfRange: isCurrentMonth ? isEdgeOfRange(date, selectedRange) : false,\n isToday: isSameDate(date, getToday()),\n dayNumber: getDate(date),\n disabled: isDateDisabled(\n date,\n options.min,\n options.max,\n options.filter,\n options.disablePast,\n options.disableFuture\n ),\n });\n dayNumber++;\n }\n } else {\n // Rest of the weeks\n for (let j = 1; j < 8; j++) {\n if (dayNumber > daysInMonth) {\n // Next month\n dayNumber = 1;\n isCurrentMonth = false;\n }\n const date = createDate(year, isCurrentMonth ? month : nextMonth, dayNumber);\n\n week.push({\n date,\n currentMonth: isCurrentMonth,\n isSelected: isSelected(date, headerDate) && isCurrentMonth,\n isInRange: isInRange(date, selectedRange) && isCurrentMonth,\n isEdgeOfRange: isCurrentMonth ? isEdgeOfRange(date, selectedRange) : false,\n isToday: isSameDate(date, getToday()),\n dayNumber: getDate(date),\n disabled: isDateDisabled(\n date,\n options.min,\n options.max,\n options.filter,\n options.disablePast,\n options.disableFuture\n ),\n });\n dayNumber++;\n }\n }\n dates.push(week);\n }\n\n return dates;\n}\n\nexport function createMonthViewTemplate(year, selectedYear, selectedMonth, options, monthsInRow) {\n const months = getMonthsArray(options, monthsInRow);\n const currentMonth = getMonth(getToday());\n const currentYear = getYear(getToday());\n\n const tableBodyContent = `\n ${months\n .map((row) => {\n return `\n <tr>\n ${row\n .map((month) => {\n const monthIndex = options.monthsShort.indexOf(month);\n const isDisabled = isMonthDisabled(\n monthIndex,\n year,\n options.min,\n options.max,\n options.disablePast,\n options.disableFuture\n );\n return `\n <td class=\"datepicker-cell datepicker-large-cell datepicker-month-cell \n ${isDisabled ? 'disabled' : ''} ${\n monthIndex === selectedMonth && year === selectedYear ? 'selected' : ''\n } ${\n monthIndex === currentMonth && year === currentYear ? 'current' : ''\n }\" data-mdb-month=\"${monthIndex}\" data-mdb-year=\"${year}\" aria-label=\"${month}, ${year}\" ${\n isDisabled ? 'aria-disabled=true' : ''\n }>\n <div class=\"datepicker-cell-content datepicker-large-cell-content\">${month}</div>\n </td>\n `;\n })\n .join('')}\n </tr>\n `;\n })\n .join('')}\n `;\n\n return `\n <table class=\"datepicker-table\">\n <tbody class=\"datepicker-table-body\">\n ${tableBodyContent}\n </tbody>\n </table>\n `;\n}\n\nfunction getMonthsArray({ monthsShort }, monthsInRow) {\n return monthsShort.reduce((months, month, index) => {\n const rowIndex = Math.floor(index / monthsInRow);\n if (!months[rowIndex]) months[rowIndex] = [];\n months[rowIndex].push(month);\n return months;\n }, []);\n}\n\nexport function createYearViewTemplate(date, selectedYear, options, yearsInView, yearsInRow) {\n const years = getYearsArray(date, yearsInView, yearsInRow);\n const currentYear = getYear(getToday());\n\n const tableBodyContent = `\n ${years\n .map((row) => {\n return `\n <tr>\n ${row\n .map((year) => {\n const isDisabled = isYearDisabled(\n year,\n options.min,\n options.max,\n options.disablePast,\n options.disableFuture\n );\n return `\n <td class=\"datepicker-cell datepicker-large-cell datepicker-year-cell\n ${isDisabled ? 'disabled' : ''} ${year === selectedYear ? 'selected' : ''} ${\n year === currentYear ? 'current' : ''\n }\" aria-label=\"${year}\" data-mdb-year=\"${year}\" ${\n isDisabled ? 'aria-disabled=\"true\"' : ''\n }>\n <div class=\"datepicker-cell-content datepicker-large-cell-content\">${year}</div>\n </td>\n `;\n })\n .join('')}\n </tr>\n `;\n })\n .join('')}\n `;\n\n return `\n <table class=\"datepicker-table\">\n <tbody class=\"datepicker-table-body\">\n ${tableBodyContent}\n </tbody>\n </table>\n `;\n}\n\nfunction getYearsArray(date, yearsInView, yearsInRow) {\n const years = [];\n const activeYear = getYear(date);\n const yearsOffset = getYearsOffset(date, yearsInView);\n\n const firstYearInView = activeYear - yearsOffset;\n\n let row = [];\n\n for (let i = 0; i < yearsInView; i++) {\n row.push(firstYearInView + i);\n\n if (row.length === yearsInRow) {\n const yearsRow = row;\n years.push(yearsRow);\n row = [];\n }\n }\n\n return years;\n}\n\nexport function getToggleButtonTemplate(id) {\n return `\n <button id=\"${id}\" type=\"button\" class=\"datepicker-toggle-button\" data-mdb-toggle=\"datepicker\">\n <i class=\"fa fa-calendar datepicker-toggle-icon\"></i>\n </button>\n `;\n}\n","import { createPopper } from '@popperjs/core';\nimport Data from '../../mdb/dom/data';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport ScrollBarHelper from '../../bootstrap/mdb-prefix/util/scrollbar';\nimport { typeCheckConfig, getUID, isRTL } from '../../mdb/util/index';\nimport FocusTrap from '../../mdb/util/focusTrap';\nimport {\n getDate,\n getDayNumber,\n getMonth,\n getYear,\n getDaysInMonth,\n addYears,\n addMonths,\n addDays,\n createDate,\n convertStringToDate,\n isSameDate,\n areDatesInSameView,\n isDateDisabled,\n isMonthDisabled,\n isYearDisabled,\n isNextDateDisabled,\n isPreviousDateDisabled,\n getYearsOffset,\n isValidDate,\n compareDates,\n isInRange,\n isFullYearFormat,\n} from './date-utils';\nimport {\n getBackdropTemplate,\n getDatepickerTemplate,\n createDayViewTemplate,\n createMonthViewTemplate,\n createYearViewTemplate,\n getToggleButtonTemplate,\n createCustomHeader,\n createTitle,\n} from './templates';\nimport {\n ENTER,\n SPACE,\n ESCAPE,\n LEFT_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n PAGE_UP,\n PAGE_DOWN,\n} from '../../mdb/util/keycodes';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst YEARS_IN_VIEW = 24;\nconst YEARS_IN_ROW = 4;\nconst MONTHS_IN_ROW = 4;\n\nconst NAME = 'datepicker';\nconst DATA_KEY = `mdb.${NAME}`;\nconst DATA_API_KEY = '.data-api';\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_CLOSE = `close${EVENT_KEY}`;\nconst EVENT_OPEN = `open${EVENT_KEY}`;\nconst EVENT_VALUE_CHANGED = `valueChanged${EVENT_KEY}`;\nconst EVENT_VIEW_CHANGED = `viewChanged${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\nconst BACKDROP_OPEN_ANIMATION_CLASS = 'fade-in';\nconst BACKDROP_CLOSE_ANIMATION_CLASS = 'fade-out';\nconst CONTAINER_OPEN_ANIMATION_CLASS = 'fade-in';\nconst CONTAINER_CLOSE_ANIMATION_CLASS = 'fade-out';\n\nconst CLASS_FORM_ICON_TRAILING = 'form-icon-trailing';\n\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-toggle=\"datepicker\"]';\nconst SELECTOR_MODAL_CONTAINER = '.datepicker-modal-container';\nconst SELECTOR_DROPDOWN_CONTAINER = '.datepicker-dropdown-container';\nconst SELECTOR_VIEW_CHANGE_BUTTON = '.datepicker-view-change-button';\nconst SELECTOR_PREVIOUS_BUTTON = '.datepicker-previous-button';\nconst SELECTOR_NEXT_BUTTON = '.datepicker-next-button';\nconst SELECTOR_OK_BUTTON = '.datepicker-ok-btn';\nconst SELECTOR_CANCEL_BUTTON = '.datepicker-cancel-btn';\nconst SELECTOR_CLEAR_BUTTON = '.datepicker-clear-btn';\nconst SELECTOR_DATES_CONTAINER = '.datepicker-view';\n\nconst Default = {\n title: 'Select date',\n container: 'body',\n disablePast: false,\n disableFuture: false,\n monthsFull: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysNarrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n okBtnText: 'Ok',\n clearBtnText: 'Clear',\n cancelBtnText: 'Cancel',\n\n okBtnLabel: 'Confirm selection',\n clearBtnLabel: 'Clear selection',\n cancelBtnLabel: 'Cancel selection',\n nextMonthLabel: 'Next month',\n prevMonthLabel: 'Previous month',\n nextYearLabel: 'Next year',\n prevYearLabel: 'Previous year',\n nextMultiYearLabel: 'Next 24 years',\n prevMultiYearLabel: 'Previous 24 years',\n switchToMultiYearViewLabel: 'Switch to year list',\n switchToDayViewLabel: 'Switch to day list',\n\n startDate: null,\n startDay: 0,\n format: 'dd/mm/yyyy',\n view: 'days',\n\n min: null,\n max: null,\n filter: null,\n\n inline: false,\n toggleButton: true,\n animations: true,\n confirmDateOnSelect: false,\n removeOkBtn: false,\n removeCancelBtn: false,\n removeClearBtn: false,\n headerTemplate: null,\n headerTemplateModifier: null,\n dateRange: false,\n};\n\nconst DefaultType = {\n title: 'string',\n container: 'string',\n disablePast: 'boolean',\n disableFuture: 'boolean',\n monthsFull: 'array',\n monthsShort: 'array',\n weekdaysFull: 'array',\n weekdaysShort: 'array',\n weekdaysNarrow: 'array',\n\n okBtnText: 'string',\n clearBtnText: 'string',\n cancelBtnText: 'string',\n okBtnLabel: 'string',\n clearBtnLabel: 'string',\n cancelBtnLabel: 'string',\n nextMonthLabel: 'string',\n prevMonthLabel: 'string',\n nextYearLabel: 'string',\n prevYearLabel: 'string',\n nextMultiYearLabel: 'string',\n prevMultiYearLabel: 'string',\n switchToMultiYearViewLabel: 'string',\n switchToDayViewLabel: 'string',\n\n startDate: '(null|string|date)',\n startDay: 'number',\n format: 'string',\n view: 'string',\n\n min: '(null|date|string)',\n max: '(null|date|string)',\n filter: '(null|function)',\n\n inline: 'boolean',\n toggleButton: 'boolean',\n animations: 'boolean',\n confirmDateOnSelect: 'boolean',\n removeOkBtn: 'boolean',\n removeCancelBtn: 'boolean',\n removeClearBtn: 'boolean',\n\n headerTemplate: '(null|string)',\n headerTemplateModifier: '(null|function)',\n dateRange: 'boolean',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Datepicker extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._input = SelectorEngine.findOne('input', this._element);\n this._options = this._getConfig(options);\n this._activeDate = new Date();\n this._selectedDate = null;\n this._selectedRange = [];\n this._selectedYear = null;\n this._selectedMonth = null;\n this._firstVisibleMonth = null;\n this._headerDate = null;\n this._headerYear = null;\n this._headerMonth = null;\n this._view = this._options.view;\n this._popper = null;\n this._focusTrap = null;\n this._isOpen = false;\n this._toggleButtonId = this._element.id\n ? `datepicker-toggle-${this._element.id}`\n : getUID('datepicker-toggle-');\n this._animations =\n !window.matchMedia('(prefers-reduced-motion: reduce)').matches && this._options.animations;\n\n this._scrollBar = new ScrollBarHelper();\n\n this._init();\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get container() {\n return (\n SelectorEngine.findOne(`${SELECTOR_MODAL_CONTAINER}-${this._toggleButtonId}`) ||\n SelectorEngine.findOne(`${SELECTOR_DROPDOWN_CONTAINER}-${this._toggleButtonId}`)\n );\n }\n\n get options() {\n return this._options;\n }\n\n get activeCell() {\n let activeCell;\n\n if (this._view === 'days') {\n activeCell = this._getActiveDayCell();\n }\n\n if (this._view === 'months') {\n activeCell = this._getActiveMonthCell();\n }\n\n if (this._view === 'years') {\n activeCell = this._getActiveYearCell();\n }\n\n return activeCell;\n }\n\n get activeDay() {\n return getDate(this._activeDate);\n }\n\n get activeMonth() {\n return getMonth(this._activeDate);\n }\n\n get activeYear() {\n return getYear(this._activeDate);\n }\n\n get firstYearInView() {\n return this.activeYear - getYearsOffset(this._activeDate, YEARS_IN_VIEW);\n }\n\n get lastYearInView() {\n return this.firstYearInView + YEARS_IN_VIEW - 1;\n }\n\n get viewChangeButton() {\n return SelectorEngine.findOne(SELECTOR_VIEW_CHANGE_BUTTON, this.container);\n }\n\n get previousButton() {\n return SelectorEngine.findOne(SELECTOR_PREVIOUS_BUTTON, this.container);\n }\n\n get nextButton() {\n return SelectorEngine.findOne(SELECTOR_NEXT_BUTTON, this.container);\n }\n\n get okButton() {\n return SelectorEngine.findOne(SELECTOR_OK_BUTTON, this.container);\n }\n\n get cancelButton() {\n return SelectorEngine.findOne(SELECTOR_CANCEL_BUTTON, this.container);\n }\n\n get clearButton() {\n return SelectorEngine.findOne(SELECTOR_CLEAR_BUTTON, this.container);\n }\n\n get datesContainer() {\n return SelectorEngine.findOne(SELECTOR_DATES_CONTAINER, this.container);\n }\n\n get toggleButton() {\n return SelectorEngine.findOne('.datepicker-toggle-button', this._element);\n }\n\n get isSelectionCompleted() {\n return !this.options.dateRange || this.isRangeComplete;\n }\n\n get isRangeComplete() {\n return this._selectedRange.length === 2;\n }\n\n get hasPartialRange() {\n return this._selectedRange.length === 1;\n }\n\n get visibleDates() {\n return SelectorEngine.find('td', this.datesContainer);\n }\n\n update(options = {}) {\n this._options = this._getConfig({ ...this._options, ...options });\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n if (config.max && typeof config.max === 'string') {\n config.max = new Date(config.max);\n }\n\n if (config.min && typeof config.min === 'string') {\n config.min = new Date(config.min);\n }\n\n if (config.startDay && config.startDay !== 0) {\n const sortedWeekdaysNarrow = this._getNewDaysOrderArray(config);\n config.weekdaysNarrow = sortedWeekdaysNarrow;\n }\n\n return config;\n }\n\n _getContainer() {\n return SelectorEngine.findOne(this._options.container);\n }\n\n _getNewDaysOrderArray(config) {\n const index = config.startDay;\n\n const weekdaysNarrow = config.weekdaysNarrow;\n const sortedWeekdays = weekdaysNarrow.slice(index).concat(weekdaysNarrow.slice(0, index));\n\n return sortedWeekdays;\n }\n\n _init() {\n if (!this.toggleButton && this._options.toggleButton) {\n this._appendToggleButton();\n }\n\n this._listenToUserInput();\n this._listenToToggleClick();\n this._listenToToggleKeydown();\n }\n\n _appendToggleButton() {\n const toggleButton = getToggleButtonTemplate(this._toggleButtonId);\n this._element.insertAdjacentHTML('beforeend', toggleButton);\n Manipulator.addClass(this._input, CLASS_FORM_ICON_TRAILING);\n }\n\n open() {\n if (this._input.readOnly || this._input.disabled) {\n return;\n }\n const openEvent = EventHandler.trigger(this._element, EVENT_OPEN);\n\n if (this._isOpen || openEvent.defaultPrevented) {\n return;\n }\n\n this._setInitialDate();\n\n const backdrop = getBackdropTemplate();\n const template = getDatepickerTemplate(\n this._activeDate,\n this._selectedDate,\n this._selectedYear,\n this._selectedMonth,\n this._options,\n MONTHS_IN_ROW,\n YEARS_IN_VIEW,\n YEARS_IN_ROW,\n this._toggleButtonId,\n this._selectedRange\n );\n this._firstVisibleMonth = this._activeDate;\n\n if (this._options.inline) {\n this._openDropdown(template);\n } else {\n this._openModal(backdrop, template);\n this._scrollBar.hide();\n }\n\n if (this._animations) {\n Manipulator.addClass(this.container, 'animation');\n Manipulator.addClass(this.container, CONTAINER_OPEN_ANIMATION_CLASS);\n this.container.style.animationDuration = '300ms';\n\n Manipulator.addClass(backdrop, 'animation');\n Manipulator.addClass(backdrop, BACKDROP_OPEN_ANIMATION_CLASS);\n backdrop.style.animationDuration = '150ms';\n }\n\n this._setFocusTrap(this.container);\n\n this._listenToDateSelection();\n this._addControlsListeners();\n this._updateControlsDisabledState();\n this._listenToEscapeClick();\n this._listenToKeyboardNavigation();\n this._listenToDatesContainerFocus();\n this._listenToDatesContainerBlur();\n\n // We need to wait for popper initialization to avoid bug with\n // focusing dates container, otherwise dates container will be\n // focused before popper position update which can change the\n // scroll position on the page\n this._asyncFocusDatesContainer();\n this._updateViewControlsAndAttributes(this._view);\n this._isOpen = true;\n\n // Wait for the component to open to prevent immediate calling of the\n // close method upon detecting a click on toggle element (input/button)\n setTimeout(() => {\n this._listenToOutsideClick();\n }, 0);\n }\n\n _openDropdown(template) {\n this._popper = createPopper(this._input, template, {\n placement: 'bottom-start',\n });\n const container = this._getContainer();\n container.appendChild(template);\n }\n\n _openModal(backdrop, template) {\n const container = this._getContainer();\n container.appendChild(backdrop);\n container.appendChild(template);\n }\n\n _setFocusTrap(element) {\n this._focusTrap = new FocusTrap(element, {\n event: 'keydown',\n condition: (event) => event.key === 'Tab',\n });\n this._focusTrap.trap();\n }\n\n _listenToUserInput() {\n EventHandler.on(this._input, 'input', (event) => {\n this._handleUserInput(event.target.value);\n });\n }\n\n _listenToToggleClick() {\n EventHandler.on(this._element, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {\n event.preventDefault();\n this.open();\n });\n }\n\n _listenToToggleKeydown() {\n EventHandler.on(this._element, 'keydown', SELECTOR_DATA_TOGGLE, (event) => {\n if (event.keyCode === ENTER && !this._isOpen) {\n this.open();\n }\n });\n }\n\n _listenToDateSelection() {\n EventHandler.on(this.datesContainer, 'click', (e) => {\n this._handleDateSelection(e);\n });\n }\n\n _handleDateSelection(e) {\n const dataset = e.target.nodeName === 'DIV' ? e.target.parentNode.dataset : e.target.dataset;\n if (!dataset) {\n return;\n }\n const cell = e.target.nodeName === 'DIV' ? e.target.parentNode : e.target;\n\n if (dataset.mdbDate) {\n this._pickDay(dataset.mdbDate, cell);\n }\n\n if (dataset.mdbMonth && dataset.mdbYear) {\n const month = parseInt(dataset.mdbMonth, 10);\n const year = parseInt(dataset.mdbYear, 10);\n this._pickMonth(month, year);\n }\n\n if (dataset.mdbYear && !dataset.mdbMonth) {\n const year = parseInt(dataset.mdbYear, 10);\n this._pickYear(year);\n }\n\n if (!this._options.inline) {\n if (!this.options.dateRange) {\n this._updateHeaderDate(this._activeDate, this._selectedRange);\n } else {\n this._updateHeaderDate(this._selectedRange[0], this._selectedRange);\n }\n }\n }\n\n _updateHeaderDate(date, selectedRange) {\n const headerDateEl = SelectorEngine.findOne('.datepicker-date-text', this.container);\n const datepickerHeaderContainer = SelectorEngine.findOne('.datepicker-header', this.container);\n\n if (this._options.headerTemplate && datepickerHeaderContainer) {\n const day = getDate(date);\n const dayNumber = getDayNumber(date);\n const month = getMonth(date);\n datepickerHeaderContainer.innerHTML = createCustomHeader(\n day,\n dayNumber,\n month,\n date,\n this._options\n );\n return;\n }\n\n headerDateEl.innerHTML = createTitle(date, selectedRange, this._options);\n }\n\n _addControlsListeners() {\n EventHandler.on(this.nextButton, 'click', () => {\n if (this._view === 'days') {\n this.nextMonth();\n } else if (this._view === 'years') {\n this.nextYears();\n } else {\n this.nextYear();\n }\n this._updateControlsDisabledState();\n });\n\n EventHandler.on(this.previousButton, 'click', () => {\n if (this._view === 'days') {\n this.previousMonth();\n } else if (this._view === 'years') {\n this.previousYears();\n } else {\n this.previousYear();\n }\n this._updateControlsDisabledState();\n });\n\n EventHandler.on(this.viewChangeButton, 'click', () => {\n if (this._view === 'days') {\n this._changeView('years');\n } else if (this._view === 'years' || this._view === 'months') {\n this._changeView('days');\n }\n });\n\n if (!this._options.inline) {\n this._listenToFooterButtonsClick();\n }\n }\n\n _listenToFooterButtonsClick() {\n EventHandler.on(this.okButton, 'click', () => this.handleOk());\n EventHandler.on(this.cancelButton, 'click', () => this.handleCancel());\n EventHandler.on(this.clearButton, 'click', () => this.handleClear());\n }\n\n _listenToOutsideClick() {\n EventHandler.on(document, EVENT_CLICK_DATA_API, (e) => {\n const isContainer = e.target === this.container;\n const isContainerContent = this.container?.contains(e.target);\n\n if (!isContainer && !isContainerContent) {\n this._options.dateRange ? this._interruptDateRangeSelection() : this.close();\n }\n });\n }\n\n _listenToEscapeClick() {\n EventHandler.on(document, 'keydown', (event) => {\n if (event.keyCode === ESCAPE && this._isOpen) {\n this._options.dateRange ? this._interruptDateRangeSelection() : this.close();\n }\n });\n }\n\n _interruptDateRangeSelection() {\n if (this._options.inline && this.hasPartialRange) {\n this._handleSingleDayRange();\n this.close();\n\n return;\n }\n this.handleCancel();\n }\n\n _handleSingleDayRange() {\n this._selectedRange.push(this._selectedRange[0]);\n this._confirmSelection(this._selectedRange[0]);\n }\n\n _listenToKeyboardNavigation() {\n EventHandler.on(this.datesContainer, 'keydown', (event) => {\n this._handleKeydown(event);\n });\n }\n\n _listenToDatesContainerFocus() {\n EventHandler.on(this.datesContainer, 'focus', () => {\n this._focusActiveCell(this.activeCell);\n });\n }\n\n _listenToDatesContainerBlur() {\n EventHandler.on(this.datesContainer, 'blur', () => {\n this._removeCurrentFocusStyles();\n });\n }\n\n _handleKeydown(event) {\n if (this._view === 'days') {\n this._handleDaysViewKeydown(event);\n }\n\n if (this._view === 'months') {\n this._handleMonthsViewKeydown(event);\n }\n\n if (this._view === 'years') {\n this._handleYearsViewKeydown(event);\n }\n }\n\n _handleDaysViewKeydown(event) {\n const oldActiveDate = this._activeDate;\n const previousActiveCell = this.activeCell;\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = addDays(this._activeDate, isRTL ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = addDays(this._activeDate, isRTL ? -1 : 1);\n break;\n case UP_ARROW:\n this._activeDate = addDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this._activeDate = addDays(this._activeDate, 7);\n break;\n case HOME:\n this._activeDate = addDays(this._activeDate, 1 - getDate(this._activeDate));\n break;\n case END:\n this._activeDate = addDays(\n this._activeDate,\n getDaysInMonth(this._activeDate) - getDate(this._activeDate)\n );\n break;\n case PAGE_UP:\n this._activeDate = addMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this._activeDate = addMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n this._selectDate(this._activeDate);\n this._handleDateSelection(event);\n event.preventDefault();\n return;\n default:\n return;\n }\n\n const isDateInSameView =\n areDatesInSameView(oldActiveDate, this._activeDate, this._view) ||\n (this._options.dateRange &&\n areDatesInSameView(addMonths(this._firstVisibleMonth, 1), this._activeDate, this._view));\n\n if (!isDateInSameView) {\n this._changeView('days');\n }\n\n this._removeHighlightFromCell(previousActiveCell);\n this._focusActiveCell(this.activeCell);\n event.preventDefault();\n }\n\n _asyncFocusDatesContainer() {\n setTimeout(() => {\n this.datesContainer.focus();\n }, 0);\n }\n\n _focusActiveCell(cell) {\n if (cell) {\n Manipulator.addClass(cell, 'focused');\n }\n }\n\n _removeHighlightFromCell(cell) {\n if (cell) {\n cell.classList.remove('focused');\n }\n }\n\n _getActiveDayCell() {\n const cells = SelectorEngine.find('td', this.datesContainer);\n\n const activeCell = Array.from(cells).find((cell) => {\n const cellDate = convertStringToDate(cell.dataset.mdbDate);\n return isSameDate(cellDate, this._activeDate);\n });\n\n return activeCell;\n }\n\n _handleMonthsViewKeydown(event) {\n const oldActiveDate = this._activeDate;\n const previousActiveCell = this.activeCell;\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = addMonths(this._activeDate, isRTL ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = addMonths(this._activeDate, isRTL ? -1 : 1);\n break;\n case UP_ARROW:\n this._activeDate = addMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this._activeDate = addMonths(this._activeDate, 4);\n break;\n case HOME:\n this._activeDate = addMonths(this._activeDate, -this.activeMonth);\n break;\n case END:\n this._activeDate = addMonths(this._activeDate, 11 - this.activeMonth);\n break;\n case PAGE_UP:\n this._activeDate = addYears(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this._activeDate = addYears(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n this._selectMonth(this.activeMonth);\n return;\n default:\n return;\n }\n\n if (\n !areDatesInSameView(\n oldActiveDate,\n this._activeDate,\n this._view,\n YEARS_IN_VIEW,\n this._options.min,\n this._options.max\n )\n ) {\n this._changeView('months');\n }\n\n this._removeHighlightFromCell(previousActiveCell);\n this._focusActiveCell(this.activeCell);\n event.preventDefault();\n }\n\n _getActiveMonthCell() {\n const cells = SelectorEngine.find('td', this.datesContainer);\n\n const activeCell = Array.from(cells).find((cell) => {\n const cellYear = parseInt(cell.dataset.mdbYear, 10);\n const cellMonth = parseInt(cell.dataset.mdbMonth, 10);\n return cellYear === this.activeYear && cellMonth === this.activeMonth;\n });\n\n return activeCell;\n }\n\n _handleYearsViewKeydown(event) {\n const oldActiveDate = this._activeDate;\n const previousActiveCell = this.activeCell;\n const yearsPerRow = 4;\n const yearsPerPage = 24;\n\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = addYears(this._activeDate, isRTL ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = addYears(this._activeDate, isRTL ? -1 : 1);\n break;\n case UP_ARROW:\n this._activeDate = addYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this._activeDate = addYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this._activeDate = addYears(\n this._activeDate,\n -getYearsOffset(this._activeDate, yearsPerPage)\n );\n break;\n case END:\n this._activeDate = addYears(\n this._activeDate,\n yearsPerPage - getYearsOffset(this._activeDate, yearsPerPage) - 1\n );\n break;\n case PAGE_UP:\n this._activeDate = addYears(this._activeDate, -yearsPerPage);\n break;\n case PAGE_DOWN:\n this._activeDate = addYears(this._activeDate, yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this._selectYear(this.activeYear);\n return;\n default:\n return;\n }\n\n if (\n !areDatesInSameView(\n oldActiveDate,\n this._activeDate,\n this._view,\n YEARS_IN_VIEW,\n this._options.min,\n this._options.max\n )\n ) {\n this._changeView('years');\n }\n\n this._removeHighlightFromCell(previousActiveCell);\n this._focusActiveCell(this.activeCell);\n event.preventDefault();\n }\n\n _getActiveYearCell() {\n const cells = SelectorEngine.find('td', this.datesContainer);\n\n const activeCell = Array.from(cells).find((cell) => {\n const cellYear = parseInt(cell.dataset.mdbYear, 10);\n return cellYear === this.activeYear;\n });\n\n return activeCell;\n }\n\n _setInitialDate() {\n if (this._input.value) {\n this._handleUserInput(this._input.value);\n } else if (this._options.startDate) {\n this._activeDate = new Date(this._options.startDate);\n } else {\n this._activeDate = new Date();\n }\n }\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (!this._isOpen || closeEvent.defaultPrevented) {\n return;\n }\n\n this._removeDatepickerListeners();\n\n if (this._animations) {\n Manipulator.addClass(this.container, 'animation');\n Manipulator.addClass(this.container, CONTAINER_CLOSE_ANIMATION_CLASS);\n }\n\n if (this._options.inline) {\n this._closeDropdown();\n } else {\n this._closeModal();\n }\n\n this._isOpen = false;\n this._view = this._options.view;\n\n if (this.toggleButton) {\n this.toggleButton.focus();\n } else {\n this._input.focus();\n }\n }\n\n _closeDropdown() {\n const datepicker = SelectorEngine.findOne('.datepicker-dropdown-container');\n const container = this._getContainer();\n if (this._animations) {\n datepicker.addEventListener('animationend', () => {\n if (datepicker) {\n container.removeChild(datepicker);\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n });\n } else {\n if (datepicker) {\n container.removeChild(datepicker);\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n }\n this._removeFocusTrap();\n }\n\n _closeModal() {\n const backdrop = SelectorEngine.findOne('.datepicker-backdrop');\n const datepicker = SelectorEngine.findOne('.datepicker-modal-container');\n\n if (!datepicker || !backdrop) {\n return;\n }\n\n if (this._animations) {\n Manipulator.addClass(backdrop, 'animation');\n Manipulator.addClass(backdrop, BACKDROP_CLOSE_ANIMATION_CLASS);\n }\n\n if (this._animations) {\n backdrop.addEventListener('animationend', () => {\n this._removePicker(backdrop, datepicker);\n this._scrollBar.reset();\n });\n } else {\n this._removePicker(backdrop, datepicker);\n this._scrollBar.reset();\n }\n }\n\n _removePicker(backdrop, datepicker) {\n const container = this._getContainer();\n\n container.removeChild(backdrop);\n container.removeChild(datepicker);\n }\n\n _removeFocusTrap() {\n if (this._focusTrap) {\n this._focusTrap.disable();\n this._focusTrap = null;\n }\n }\n\n _removeDatepickerListeners() {\n EventHandler.off(this.nextButton, 'click');\n EventHandler.off(this.previousButton, 'click');\n EventHandler.off(this.viewChangeButton, 'click');\n EventHandler.off(this.okButton, 'click');\n EventHandler.off(this.cancelButton, 'click');\n EventHandler.off(this.clearButton, 'click');\n\n EventHandler.off(this.datesContainer, 'click');\n EventHandler.off(this.datesContainer, 'keydown');\n EventHandler.off(this.datesContainer, 'focus');\n EventHandler.off(this.datesContainer, 'blur');\n\n EventHandler.off(document, EVENT_CLICK_DATA_API);\n }\n\n dispose() {\n if (this._isOpen) {\n this.close();\n }\n\n this._removeInputAndToggleListeners();\n\n const generatedToggleButton = SelectorEngine.findOne(`#${this._toggleButtonId}`);\n\n if (generatedToggleButton) {\n this._element.removeChild(generatedToggleButton);\n }\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n _removeInputAndToggleListeners() {\n EventHandler.off(this._input, 'input');\n EventHandler.off(this._element, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE);\n EventHandler.off(this._element, 'keydown', SELECTOR_DATA_TOGGLE);\n }\n\n handleOk() {\n if (this.hasPartialRange) {\n this._handleSingleDayRange();\n } else if (this.isRangeComplete) {\n this._confirmSelection(this._selectedRange[0]);\n } else {\n this._confirmSelection(this._headerDate);\n }\n this.close();\n }\n\n _selectDate(date, cell = this.activeCell) {\n const { min, max, filter, disablePast, disableFuture, inline, confirmDateOnSelect, dateRange } =\n this._options;\n\n if (isDateDisabled(date, min, max, filter, disablePast, disableFuture)) {\n return;\n }\n\n this._removeCurrentFocusStyles();\n dateRange\n ? this._handleDateRangeSelection(date, cell)\n : this._handleSingleDateSelection(date, cell);\n\n if (inline || confirmDateOnSelect) {\n this._confirmSelection(date);\n if (this.isSelectionCompleted) {\n this.close();\n }\n }\n }\n\n _handleSingleDateSelection(date, cell) {\n this._removeCurrentStyle('selected');\n this._selectedDate = date;\n this._selectedYear = getYear(date);\n this._selectedMonth = getMonth(date);\n this._addSelectedStyles(cell);\n this._headerDate = date;\n }\n\n _handleDateRangeSelection(date, cell) {\n if (this.isRangeComplete) {\n this._resetDateRangeStyles();\n this._selectedRange = [];\n this._selectedRange.push(date);\n } else if (this.hasPartialRange) {\n this._selectedRange.push(date);\n this._selectedRange.sort(compareDates);\n this._addDateRangeStyles();\n } else if (this._selectedRange.length === 0) {\n this._selectedRange.push(date);\n this._headerDate = [date];\n }\n this._addSelectedStyles(cell);\n }\n\n _resetDateRangeStyles() {\n const stylesToRemove = ['selected', 'in-range', 'first-in-range', 'last-in-range'];\n stylesToRemove.forEach((style) => this._removeCurrentStyle(style));\n }\n\n _selectYear(year, cell = this.activeCell) {\n this._removeCurrentStyle('selected');\n this._removeCurrentFocusStyles();\n this._addSelectedStyles(cell);\n this._headerYear = year;\n\n this._asyncChangeView('months');\n }\n\n _selectMonth(month, cell = this.activeCell) {\n this._removeCurrentStyle('selected');\n this._removeCurrentFocusStyles();\n this._addSelectedStyles(cell);\n this._headerMonth = month;\n\n this._asyncChangeView('days');\n }\n\n _removeSelectedStyles(cell) {\n if (cell) {\n cell.classList.remove('selected');\n }\n }\n\n _addSelectedStyles(cell) {\n if (cell) {\n Manipulator.addClass(cell, 'selected');\n }\n }\n\n _addDateRangeStyles() {\n const firstDate = this._selectedRange[0];\n const lastDate = this._selectedRange[1];\n\n if (isSameDate(firstDate, lastDate)) {\n return;\n }\n\n this.visibleDates.forEach((cell) => {\n const cellDate = convertStringToDate(cell.dataset.mdbDate);\n if (isSameDate(cellDate, firstDate)) {\n Manipulator.addClass(cell, 'first-in-range');\n }\n if (isSameDate(cellDate, lastDate)) {\n Manipulator.addClass(cell, 'last-in-range');\n }\n if (isInRange(cellDate, [firstDate, lastDate])) {\n Manipulator.addClass(cell, 'in-range');\n }\n });\n }\n\n _confirmSelection(date) {\n if (date) {\n let dateString;\n if (this._options.dateRange) {\n if (this.hasPartialRange) {\n dateString = `${this.formatDate(this._selectedRange[0])} - `;\n } else if (this.isRangeComplete) {\n dateString = `${this.formatDate(this._selectedRange[0])} - ${this.formatDate(\n this._selectedRange[1]\n )}`;\n }\n } else {\n dateString = this.formatDate(date);\n }\n this._input.value = dateString;\n Manipulator.addClass(this._input, 'active');\n if (this.isSelectionCompleted) {\n EventHandler.trigger(this._element, EVENT_VALUE_CHANGED, {\n date: this._options.dateRange ? this._selectedRange : date,\n });\n }\n }\n }\n\n handleCancel() {\n this._selectedRange = [];\n this._selectedDate = null;\n this._selectedYear = null;\n this._selectedMonth = null;\n this.close();\n }\n\n handleClear() {\n this._selectedRange = [];\n this._selectedDate = null;\n this._selectedMonth = null;\n this._selectedYear = null;\n this._headerDate = null;\n this._headerMonth = null;\n this._headerYear = null;\n this._removeCurrentStyle('selected');\n if (this.options.dateRange) {\n this._resetDateRangeStyles();\n }\n this._input.value = '';\n this._input.classList.remove('active');\n this._setInitialDate();\n this._changeView('days');\n this._updateHeaderDate(this._activeDate, this._selectedRange);\n }\n\n _removeCurrentStyle(style) {\n const currentSelected = SelectorEngine.find(`.${style}`, this.container);\n\n if (currentSelected) {\n currentSelected.forEach((el) => {\n el.classList.remove(`${style}`);\n });\n }\n }\n\n _removeCurrentFocusStyles() {\n const currentFocused = SelectorEngine.findOne('.focused', this.container);\n\n if (currentFocused) {\n currentFocused.classList.remove('focused');\n }\n }\n\n formatDate(date) {\n const d = getDate(date);\n const dd = this._addLeadingZero(getDate(date));\n const ddd = this._options.weekdaysShort[getDayNumber(date)];\n const dddd = this._options.weekdaysFull[getDayNumber(date)];\n const m = getMonth(date) + 1;\n const mm = this._addLeadingZero(getMonth(date) + 1);\n const mmm = this._options.monthsShort[getMonth(date)];\n const mmmm = this._options.monthsFull[getMonth(date)];\n const yy =\n getYear(date).toString().length === 2 ? getYear(date) : getYear(date).toString().slice(2, 4);\n const yyyy = getYear(date);\n\n const preformatted = this._options.format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);\n let formatted = '';\n preformatted.forEach((datePart) => {\n switch (datePart) {\n case 'dddd':\n datePart = datePart.replace(datePart, dddd);\n break;\n case 'ddd':\n datePart = datePart.replace(datePart, ddd);\n break;\n case 'dd':\n datePart = datePart.replace(datePart, dd);\n break;\n case 'd':\n datePart = datePart.replace(datePart, d);\n break;\n case 'mmmm':\n datePart = datePart.replace(datePart, mmmm);\n break;\n case 'mmm':\n datePart = datePart.replace(datePart, mmm);\n break;\n case 'mm':\n datePart = datePart.replace(datePart, mm);\n break;\n case 'm':\n datePart = datePart.replace(datePart, m);\n break;\n case 'yyyy':\n datePart = datePart.replace(datePart, yyyy);\n break;\n case 'yy':\n datePart = datePart.replace(datePart, yy);\n break;\n default:\n }\n formatted += datePart;\n });\n\n return formatted;\n }\n\n _addLeadingZero(value) {\n return parseInt(value, 10) < 10 ? `0${value}` : value;\n }\n\n _pickDay(day, el) {\n const date = convertStringToDate(day);\n const { min, max, filter, disablePast, disableFuture } = this._options;\n\n if (isDateDisabled(date, min, max, filter, disablePast, disableFuture)) {\n return;\n }\n\n this._activeDate = date;\n this._selectDate(date, el);\n }\n\n _pickYear(year) {\n const { min, max, disablePast, disableFuture } = this._options;\n\n if (isYearDisabled(year, min, max, disablePast, disableFuture)) {\n return;\n }\n\n const newDate = createDate(year, this.activeMonth, this.activeDay);\n\n this._activeDate = newDate;\n this._selectedDate = newDate;\n this._selectYear(year);\n }\n\n _pickMonth(month, year) {\n const { min, max, disablePast, disableFuture } = this._options;\n\n if (\n isMonthDisabled(month, year, min, max, disablePast, disableFuture) ||\n isYearDisabled(year, min, max, disablePast, disableFuture)\n ) {\n return;\n }\n\n const newDate = createDate(year, month, this.activeDay);\n\n this._activeDate = newDate;\n this._selectMonth(month);\n }\n\n nextMonth() {\n const nextMonth = this.options.dateRange\n ? addMonths(this._firstVisibleMonth, 1)\n : addMonths(this._activeDate, 1);\n this._activeDate = nextMonth;\n this._firstVisibleMonth = nextMonth;\n const headerDate = this.options.dateRange ? this._selectedRange : this._headerDate;\n const template = createDayViewTemplate(\n nextMonth,\n headerDate,\n this._options,\n this._selectedRange\n );\n this.viewChangeButton.textContent = `${this._options.monthsFull[this.activeMonth]} ${\n this.activeYear\n }`;\n this.datesContainer.innerHTML = template;\n }\n\n previousMonth() {\n const previousMonth = this.options.dateRange\n ? addMonths(this._firstVisibleMonth, -1)\n : addMonths(this._activeDate, -1);\n this._activeDate = previousMonth;\n this._firstVisibleMonth = previousMonth;\n const headerDate = this.options.dateRange ? this._selectedRange : this._headerDate;\n const template = createDayViewTemplate(\n previousMonth,\n headerDate,\n this._options,\n this._selectedRange\n );\n this.viewChangeButton.textContent = `${this._options.monthsFull[this.activeMonth]} ${\n this.activeYear\n }`;\n this.datesContainer.innerHTML = template;\n }\n\n nextYear() {\n const nextYear = addYears(this._activeDate, 1);\n this._activeDate = nextYear;\n this.viewChangeButton.textContent = `${this.activeYear}`;\n const template = createMonthViewTemplate(\n this.activeYear,\n this._selectedYear,\n this._selectedMonth,\n this._options,\n MONTHS_IN_ROW\n );\n this.datesContainer.innerHTML = template;\n }\n\n previousYear() {\n const previousYear = addYears(this._activeDate, -1);\n this._activeDate = previousYear;\n this.viewChangeButton.textContent = `${this.activeYear}`;\n const template = createMonthViewTemplate(\n this.activeYear,\n this._selectedYear,\n this._selectedMonth,\n this._options,\n MONTHS_IN_ROW\n );\n this.datesContainer.innerHTML = template;\n }\n\n nextYears() {\n const nextYear = addYears(this._activeDate, 24);\n this._activeDate = nextYear;\n const template = createYearViewTemplate(\n nextYear,\n this._selectedYear,\n this._options,\n YEARS_IN_VIEW,\n YEARS_IN_ROW\n );\n this.viewChangeButton.textContent = `${this.firstYearInView} - ${this.lastYearInView}`;\n this.datesContainer.innerHTML = template;\n }\n\n previousYears() {\n const previousYear = addYears(this._activeDate, -24);\n this._activeDate = previousYear;\n const template = createYearViewTemplate(\n previousYear,\n this._selectedYear,\n this._options,\n YEARS_IN_VIEW,\n YEARS_IN_ROW\n );\n this.viewChangeButton.textContent = `${this.firstYearInView} - ${this.lastYearInView}`;\n this.datesContainer.innerHTML = template;\n }\n\n _asyncChangeView(view) {\n setTimeout(() => {\n this._changeView(view);\n }, 0);\n }\n\n _changeView(view) {\n this._view = view;\n // We need to add blur event here to reapply focus to\n // dates container when switching from years to months\n // view after selecting year\n this.datesContainer.blur();\n\n const selectedDate = this.options.dateRange ? this._selectedRange : this._headerDate;\n\n if (view === 'days') {\n this.datesContainer.innerHTML = createDayViewTemplate(\n this._activeDate,\n selectedDate,\n this._options,\n this._selectedRange\n );\n }\n\n if (view === 'months') {\n this.datesContainer.innerHTML = createMonthViewTemplate(\n this.activeYear,\n this._selectedYear,\n this._selectedMonth,\n this._options,\n MONTHS_IN_ROW\n );\n }\n\n if (view === 'years') {\n this.datesContainer.innerHTML = createYearViewTemplate(\n this._activeDate,\n this._selectedYear,\n this._options,\n YEARS_IN_VIEW,\n YEARS_IN_ROW\n );\n }\n\n this._firstVisibleMonth = this._activeDate;\n\n this.datesContainer.focus();\n this._updateViewControlsAndAttributes(view);\n this._updateControlsDisabledState();\n\n EventHandler.trigger(this._element, EVENT_VIEW_CHANGED, { view: this._view });\n }\n\n _updateViewControlsAndAttributes(view) {\n if (view === 'days') {\n this.viewChangeButton.textContent = `${this._options.monthsFull[this.activeMonth]} ${\n this.activeYear\n }`;\n this.viewChangeButton.setAttribute('aria-label', this._options.switchToMultiYearViewLabel);\n this.previousButton.setAttribute('aria-label', this._options.prevMonthLabel);\n this.nextButton.setAttribute('aria-label', this._options.nextMonthLabel);\n }\n\n if (view === 'months') {\n this.viewChangeButton.textContent = `${this.activeYear}`;\n this.viewChangeButton.setAttribute('aria-label', this._options.switchToDayViewLabel);\n this.previousButton.setAttribute('aria-label', this._options.prevYearLabel);\n this.nextButton.setAttribute('aria-label', this._options.nextYearLabel);\n }\n\n if (view === 'years') {\n this.viewChangeButton.textContent = `${this.firstYearInView} - ${this.lastYearInView}`;\n this.viewChangeButton.setAttribute('aria-label', this._options.switchToDayViewLabel);\n this.previousButton.setAttribute('aria-label', this._options.prevMultiYearLabel);\n this.nextButton.setAttribute('aria-label', this._options.nextMultiYearLabel);\n }\n }\n\n _updateControlsDisabledState() {\n if (\n isNextDateDisabled(\n this._options.disableFuture,\n this._activeDate,\n this._view,\n YEARS_IN_VIEW,\n this._options.min,\n this._options.max,\n this.lastYearInView,\n this.firstYearInView\n )\n ) {\n this.nextButton.disabled = true;\n } else {\n this.nextButton.disabled = false;\n }\n\n if (\n isPreviousDateDisabled(\n this._options.disablePast,\n this._activeDate,\n this._view,\n YEARS_IN_VIEW,\n this._options.min,\n this._options.max,\n this.lastYearInView,\n this.firstYearInView\n )\n ) {\n this.previousButton.disabled = true;\n } else {\n this.previousButton.disabled = false;\n }\n }\n\n _handleUserInput(input) {\n const delimeters = this._getDelimeters(this._options.format);\n let areDatesChronological;\n let dates;\n let firstDateValid;\n let secondDateValid;\n if (this.options.dateRange) {\n dates = input.split(' - ');\n dates = dates.map((date) => this._parseDate(date, this._options.format, delimeters));\n\n firstDateValid = isValidDate(dates[0]);\n secondDateValid = dates?.length > 1 ? isValidDate(dates[1]) : false;\n if (firstDateValid && dates.length === 1) {\n dates.push(dates[0]);\n secondDateValid = true;\n }\n if (firstDateValid && secondDateValid) {\n areDatesChronological = compareDates(dates[0], dates[1]) <= 0;\n }\n }\n const date = this._parseDate(input, this._options.format, delimeters);\n\n if (isValidDate(date) && !this.options.dateRange) {\n this._setDate(date);\n } else if (firstDateValid && secondDateValid && areDatesChronological) {\n this._setDate(dates);\n } else {\n this._activeDate = this._options.startDate ? new Date(this._options.startDate) : new Date();\n this._selectedRange = [];\n this._selectedDate = null;\n this._selectedMonth = null;\n this._selectedYear = null;\n this._headerDate = null;\n this._headerMonth = null;\n this._headerYear = null;\n }\n }\n\n _setDate(dateOrDates) {\n if (this.options.dateRange) {\n const [startDate, endDate] = dateOrDates;\n this._activeDate = startDate;\n this._selectedDate = [startDate, endDate];\n this._selectedYear = [getYear(startDate), getYear(endDate)];\n this._selectedMonth = [getMonth(startDate), getMonth(endDate)];\n this._selectedRange = [startDate, endDate];\n } else {\n this._activeDate = dateOrDates;\n this._selectedDate = dateOrDates;\n this._selectedYear = getYear(dateOrDates);\n this._selectedMonth = getMonth(dateOrDates);\n this._headerDate = dateOrDates;\n }\n }\n\n _getDelimeters(format) {\n return format.match(/[^(dmy)]{1,}/g);\n }\n\n _parseDate(dateString, format, delimeters) {\n let delimeterPattern;\n\n if (delimeters[0] !== delimeters[1]) {\n delimeterPattern = delimeters[0] + delimeters[1];\n } else {\n delimeterPattern = delimeters[0];\n }\n\n const regExp = new RegExp(`[${delimeterPattern}]`);\n const dateParts = dateString.split(regExp);\n const formatParts = format.split(regExp);\n const isMonthString = format.indexOf('mmm') !== -1;\n\n const datesArray = [];\n\n for (let i = 0; i < formatParts.length; i++) {\n if (formatParts[i].indexOf('yy') !== -1) {\n datesArray[0] = { value: dateParts[i], format: formatParts[i] };\n }\n if (formatParts[i].indexOf('m') !== -1) {\n datesArray[1] = { value: dateParts[i], format: formatParts[i] };\n }\n if (formatParts[i].indexOf('d') !== -1 && formatParts[i].length <= 2) {\n datesArray[2] = { value: dateParts[i], format: formatParts[i] };\n }\n }\n\n let monthsNames;\n\n if (format.indexOf('mmmm') !== -1) {\n monthsNames = this._options.monthsFull;\n } else {\n monthsNames = this._options.monthsShort;\n }\n\n let year = Number(datesArray[0].value);\n\n if (!isFullYearFormat(datesArray[0].value) && year < 100) {\n year += year >= 50 ? 1900 : 2000;\n }\n\n const month = isMonthString\n ? this.getMonthNumberByMonthName(datesArray[1].value, monthsNames)\n : Number(datesArray[1].value) - 1;\n const day = Number(datesArray[2].value);\n\n const parsedDate = createDate(year, month, day);\n return parsedDate;\n }\n\n getMonthNumberByMonthName(monthValue, monthLabels) {\n return monthLabels.findIndex((monthLabel) => monthLabel === monthValue);\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Datepicker(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Datepicker;\n","import { createPopper } from '@popperjs/core';\nimport { element, typeCheckConfig, getUID, isRTL } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { ESCAPE } from '../mdb/util/keycodes';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\nimport FocusTrap from '../mdb/util/focusTrap';\nimport ScrollBarHelper from '../bootstrap/mdb-prefix/util/scrollbar';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popconfirm';\nconst DATA_KEY = 'mdb.popconfirm';\nconst SELECTOR_POPCONFIRM_BODY = '.popconfirm';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`;\nconst EVENT_CONFIRM = `confirm${EVENT_KEY}`;\n\nconst DefaultType = {\n popconfirmMode: 'string',\n message: 'string',\n cancelText: 'string',\n okText: 'string',\n okClass: 'string',\n cancelClass: 'string',\n popconfirmIcon: 'string',\n cancelLabel: 'string',\n confirmLabel: 'string',\n position: 'string',\n};\n\nconst Default = {\n popconfirmMode: 'inline',\n message: 'Are you sure?',\n cancelText: 'Cancel',\n okText: 'OK',\n okClass: 'btn-primary',\n cancelClass: 'btn-secondary',\n popconfirmIcon: '',\n cancelLabel: 'Cancel',\n confirmLabel: 'Confirm',\n position: 'bottom',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popconfirm extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._options = this._getConfig(options);\n this._cancelButtonTemplate = this._getCancelButtonTemplate();\n this._popper = null;\n this._cancelButton = '';\n this._confirmButton = '';\n this._isOpen = false;\n this._uid = this._element.id ? `popconfirm-${this._element.id}` : getUID('popconfirm-');\n this._focusTrap = null;\n this._scrollBar = new ScrollBarHelper();\n\n this._clickHandler = this.open.bind(this);\n\n this._escapeKeydownHandler = this._handleEscapeKey.bind(this);\n this._outsideClickHandler = this._handleOutsideClick.bind(this);\n\n EventHandler.on(this._element, 'click', this._clickHandler);\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get container() {\n return SelectorEngine.findOne(`#${this._uid}`);\n }\n\n get popconfirmBody() {\n return SelectorEngine.findOne(SELECTOR_POPCONFIRM_BODY, this.container);\n }\n\n // Public\n\n dispose() {\n if (this._isOpen || this.container !== null) {\n this.close();\n }\n\n EventHandler.off(this._element, 'click', this._clickHandler);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n // timeout is needed to avoid the issue with popper\n const timeout = this._isOpen && this._options.popconfirmMode === 'inline' ? 155 : 0;\n setTimeout(() => {\n super.dispose();\n }, timeout);\n }\n\n open() {\n if (this._isOpen) {\n return;\n }\n if (this._options.popconfirmMode === 'inline') {\n this._openPopover(this._getPopoverTemplate());\n } else {\n this._openModal(this._getModalTemplate());\n this._scrollBar.hide();\n }\n\n this._handleCancelButtonClick();\n this._handleConfirmButtonClick();\n this._listenToEscapeKey();\n this._listenToOutsideClick();\n }\n\n close() {\n if (!this._isOpen) {\n return;\n }\n\n if (this._popper !== null || SelectorEngine.findOne('.popconfirm-popover') !== null) {\n EventHandler.on(\n this.popconfirmBody,\n 'transitionend',\n this._handlePopconfirmTransitionEnd.bind(this)\n );\n Manipulator.removeClass(this.popconfirmBody, 'show');\n } else {\n const tempElement = SelectorEngine.findOne('.popconfirm-backdrop');\n Manipulator.removeClass(this.popconfirmBody, 'show');\n document.body.removeChild(tempElement);\n this._isOpen = false;\n }\n\n this._removeFocusTrap();\n this._scrollBar.reset();\n\n this._element.focus();\n\n EventHandler.off(document, 'click', this._outsideClickHandler);\n EventHandler.off(document, 'keydown', this._escapeKeydownHandler);\n }\n\n _setFocusTrap(element) {\n this._focusTrap = new FocusTrap(element, {\n event: 'keydown',\n condition: (event) => event.key === 'Tab',\n });\n\n this._focusTrap.trap();\n\n const cancelButton = SelectorEngine.findOne('#popconfirm-button-cancel', element);\n const confirmButton = SelectorEngine.findOne('#popconfirm-button-confirm', element);\n\n if (cancelButton) {\n cancelButton.focus();\n } else {\n confirmButton.focus();\n }\n }\n\n _removeFocusTrap() {\n if (this._focusTrap) {\n this._focusTrap.disable();\n this._focusTrap = null;\n }\n }\n\n _handlePopconfirmTransitionEnd(event) {\n if (event.target !== this.popconfirmBody) {\n return;\n }\n\n const popoverTemplate = SelectorEngine.findOne('.popconfirm-popover');\n EventHandler.off(this.popconfirmBody, 'transitionend');\n\n if (this._isOpen && event && event.propertyName === 'opacity') {\n this._popper.destroy();\n\n if (popoverTemplate) {\n document.body.removeChild(popoverTemplate);\n }\n\n this._isOpen = false;\n }\n }\n\n // Private\n\n _getPopoverTemplate() {\n const popover = element('div');\n const popconfirmTemplate = this._getPopconfirmTemplate();\n Manipulator.addClass(popover, 'popconfirm-popover');\n Manipulator.addClass(popover, 'shadow-2');\n popover.id = this._uid;\n popover.innerHTML = popconfirmTemplate;\n return popover;\n }\n\n _getModalTemplate() {\n const modal = element('div');\n const popconfirmTemplate = this._getPopconfirmTemplate();\n Manipulator.addClass(modal, 'popconfirm-modal');\n Manipulator.addClass(modal, 'shadow-2');\n modal.id = this._uid;\n modal.innerHTML = popconfirmTemplate;\n return modal;\n }\n\n _getPopconfirmTemplate() {\n return `<div class=\"popconfirm\">\n <p class=\"popconfirm-message\">\n ${this._getMessageIcon()}\n <span class=\"popconfirm-message-text\">${this._options.message}</span>\n </p>\n <div class=\"popconfirm-buttons-container\">\n ${this._cancelButtonTemplate}\n <button type=\"button\" id=\"popconfirm-button-confirm\" data-mdb-ripple-init\n aria-label=\"${this._options.confirmLabel}\"\n class=\"btn ${this._options.okClass} btn-sm\">${this._options.okText}</button>\n </div>\n </div>`;\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _getCancelButtonTemplate() {\n if (this._options.cancelText === '' || this._options.cancelText === ' ') {\n return '';\n }\n return `<button type=\"button\" id=\"popconfirm-button-cancel\" aria-label=\"${this._options.cancelLabel}\"\n class=\"btn ${this._options.cancelClass} btn-sm\" data-mdb-ripple-init >${this._options.cancelText}</button>`;\n }\n\n _getMessageIcon() {\n if (this._options.popconfirmIcon === '') {\n return '';\n }\n return `<span class=\"popconfirm-icon-container\"><i class=\"${this._options.popconfirmIcon}\"></i></span>`;\n }\n\n _openPopover(template) {\n this._popper = createPopper(this._element, template, {\n placement: this._translatePositionValue(),\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 5],\n },\n },\n ],\n });\n document.body.appendChild(template);\n\n setTimeout(() => {\n Manipulator.addClass(this.popconfirmBody, 'fade');\n Manipulator.addClass(this.popconfirmBody, 'show');\n this._isOpen = true;\n\n this._setFocusTrap(this.container);\n }, 0);\n }\n\n _openModal(template) {\n const backdrop = element('div');\n Manipulator.addClass(backdrop, 'popconfirm-backdrop');\n document.body.appendChild(backdrop);\n backdrop.appendChild(template);\n Manipulator.addClass(this.popconfirmBody, 'show');\n this._isOpen = true;\n\n this._setFocusTrap(this.container);\n }\n\n _handleCancelButtonClick() {\n const container = this.container;\n this._cancelButton = SelectorEngine.findOne('#popconfirm-button-cancel', container);\n if (this._cancelButton !== null) {\n EventHandler.on(this._cancelButton, 'click', () => {\n this.close();\n EventHandler.trigger(this._element, EVENT_CANCEL);\n });\n }\n }\n\n _handleConfirmButtonClick() {\n const container = this.container;\n this._confirmButton = SelectorEngine.findOne('#popconfirm-button-confirm', container);\n EventHandler.on(this._confirmButton, 'click', () => {\n this.close();\n EventHandler.trigger(this._element, EVENT_CONFIRM);\n });\n }\n\n _listenToEscapeKey() {\n EventHandler.on(document, 'keydown', this._escapeKeydownHandler);\n }\n\n _handleEscapeKey(event) {\n if (event.keyCode === ESCAPE) {\n if (this._isOpen) {\n EventHandler.trigger(this._element, EVENT_CANCEL);\n }\n this.close();\n }\n }\n\n _listenToOutsideClick() {\n EventHandler.on(document, 'click', this._outsideClickHandler);\n }\n\n _handleOutsideClick(event) {\n const container = this.container;\n const isContainer = event.target === container;\n const isContainerContent = container && container.contains(event.target);\n const isElement = event.target === this._element;\n const isElementContent = this._element && this._element.contains(event.target);\n if (!isContainer && !isContainerContent && !isElement && !isElementContent) {\n if (this._isOpen) {\n EventHandler.trigger(this._element, EVENT_CANCEL);\n }\n this.close();\n }\n }\n\n _translatePositionValue() {\n switch (this._options.position) {\n // left, right as default\n case 'top left':\n return isRTL ? 'top-start' : 'top-end';\n case 'top':\n return 'top';\n case 'top right':\n return isRTL ? 'top-end' : 'top-start';\n case 'bottom left':\n return isRTL ? 'bottom-start' : 'bottom-end';\n case 'bottom':\n return 'bottom';\n case 'bottom right':\n return isRTL ? 'bottom-end' : 'bottom-start';\n case 'left':\n return isRTL ? 'right' : 'left';\n case 'left top':\n return isRTL ? 'right-end' : 'left-end';\n case 'left bottom':\n return isRTL ? 'right-start' : 'left-start';\n case 'right':\n return isRTL ? 'left' : 'right';\n case 'right top':\n return isRTL ? 'left-end' : 'right-end';\n case 'right bottom':\n return isRTL ? 'left-start' : 'right-start';\n case undefined:\n return 'bottom';\n default:\n return this._options.position;\n }\n }\n\n // Static\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n const data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n // eslint-disable-next-line consistent-return\n return new Popconfirm(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Popconfirm;\n","/* eslint-disable indent */\n\nconst columns = (columns, selectable, multi, columnSearch) => {\n const checkboxHeader = multi\n ? `\n<th scope=\"col\">\n <div class=\"form-check d-flex align-items-center mb-0\">\n <input class=\"datatable-header-checkbox form-check-input\" type=\"checkbox\">\n </div>\n</th>\n`\n : '<th scope=\"col\"></th>';\n\n const headers = columns.map((column, i) => {\n const fixedOffset = column.fixed\n ? columns\n .filter((cell, j) => cell.fixed === column.fixed && j < i)\n .reduce((a, b) => a + b.width, 0)\n : null;\n\n return `<th style=\"${\n column.fixed ? `${column.fixed === 'right' ? 'right' : 'left'}: ${fixedOffset}px;` : ''\n }\" ${column.fixed ? 'class=\"fixed-cell\"' : ''} scope=\"col\">\n <div>${\n column.sort\n ? `<i data-mdb-sort=\"${column.field}\" class=\"datatable-sort-icon fas fa-arrow-up\"></i>`\n : ''\n }\n ${column.label} </div>\n ${\n columnSearch\n ? `<div class=\"datatable-header-filter\"><input type=\"text\" data-mdb-field=\"${column.field}\" class=\"datatable-header-filter-input\" /></div>`\n : ''\n }\n </th>`;\n });\n\n return [selectable ? checkboxHeader : '', ...headers].join('\\n');\n};\n\nexport default columns;\n","/* eslint-disable indent */\nimport generateColumns from './columns';\nimport generateRows from './rows';\n\nconst tableTemplate = ({\n columns,\n rows,\n noFoundMessage,\n edit,\n multi,\n selectable,\n loading,\n loadingMessage,\n loaderClass,\n columnSearch,\n}) => {\n const rowsTemplate = generateRows({ rows, columns, noFoundMessage, edit, loading, selectable });\n const columnsTemplate = generateColumns(columns, selectable, multi, columnSearch);\n\n const table = `\n<div class=\"datatable-inner table-responsive\">\n <table class=\"table datatable-table\">\n <thead class=\"datatable-header\">\n <tr>\n ${columnsTemplate}\n </tr>\n </thead>\n <tbody class=\"datatable-body\">\n ${loading ? '' : rowsTemplate}\n </tbody>\n </table>\n</div>\n ${\n loading\n ? `\n <div class=\"datatable-loader\">\n <span class=\"datatable-loader-inner\"><span class=\"datatable-progress ${loaderClass}\"></span></span>\n </div>\n <p class=\"text-center text-muted my-4\">${loadingMessage}</p>\n`\n : ''\n }\n `;\n\n return { table, rows: rowsTemplate, column: columnsTemplate };\n};\n\nexport default tableTemplate;\n","/* eslint-disable indent */\nconst rows = ({ rows, columns, noFoundMessage, edit, selectable, loading }) => {\n const rowsTemplate = rows.map((row) => {\n const checkbox = `\n <td data-mdb-field=\"checkbox\">\n <div class=\"form-check\">\n <input data-mdb-row-index=\"${row.rowIndex}\" class=\"datatable-row-checkbox form-check-input\" type=\"checkbox\">\n </div>\n </td>\n `;\n const innerRow = columns\n .map((column, i) => {\n const style = {};\n\n if (column.width) {\n style['min-width'] = `${column.width - 1}px`;\n style['max-width'] = `${column.width}px`;\n style.width = `${column.width}px`;\n }\n if (column.fixed) {\n const fixedOffset = columns\n .filter((cell, j) => cell.fixed === column.fixed && j < i)\n .reduce((a, b) => a + b.width, 0);\n\n style[column.fixed === 'right' ? 'right' : 'left'] = `${fixedOffset}px`;\n }\n\n const cssText = Object.keys(style)\n .map((property) => `${property}: ${style[property]}`)\n .join('; ');\n\n return `<td style=\"${cssText}\" class=\"${\n column.fixed ? 'fixed-cell' : ''\n }\" data-mdb-field=\"${column.field}\" ${edit && 'contenteditable=\"true\"'}>${\n row[column.field]\n }</td>`;\n })\n .join('');\n\n return `<tr scope=\"row\" data-mdb-index=\"${row.rowIndex}\">${\n selectable ? checkbox : ''\n }${innerRow}</tr>`;\n });\n\n return rows.length > 0 || loading\n ? rowsTemplate.join('\\n')\n : `<tr><td>${noFoundMessage}</td></tr>`;\n};\n\nexport default rows;\n","import { isRTL } from '../../../mdb/util/index';\n/* eslint-disable indent */\nconst pagination = (\n { entries, entriesOptions, fullPagination, rowsText, allText },\n loading,\n text\n) => {\n const selectHTML = createEntriesSelect(entries, entriesOptions, loading, rowsText, allText);\n const buttonsHTML = createPaginationButtons(fullPagination);\n\n return `\n <div class=\"datatable-pagination\">\n ${selectHTML}\n <div class=\"datatable-pagination-nav\">\n ${text}\n </div>\n ${buttonsHTML}\n </div>\n `;\n};\n\nconst createPaginationButtons = (fullPagination) => {\n return `\n <div class=\"datatable-pagination-buttons\">\n ${\n fullPagination\n ? '<button data-mdb-ripple-color=\"dark\" data-mdb-ripple-init class=\"btn btn-link datatable-pagination-button datatable-pagination-start\"><i class=\"fa fa-angle-double-left\"></i></button>'\n : ''\n }\n <button data-mdb-ripple-color=\"dark\" data-mdb-ripple-init class=\"btn btn-link datatable-pagination-button datatable-pagination-left\"><i class=\"fa fa-chevron-${\n isRTL ? 'right' : 'left'\n }\"></i></button>\n <button data-mdb-ripple-color=\"dark\" data-mdb-ripple-init class=\"btn btn-link datatable-pagination-button datatable-pagination-right\"><i class=\"fa fa-chevron-${\n isRTL ? 'left' : 'right'\n }\"></i></button>\n ${\n fullPagination\n ? '<button data-mdb-ripple-color=\"dark\" data-mdb-ripple-init class=\"btn btn-link datatable-pagination-button datatable-pagination-end\"><i class=\"fa fa-angle-double-right\"></i></button>'\n : ''\n }\n </div>\n `;\n};\n\nconst createEntriesSelect = (entries, entriesOptions, loading, rowsText, allText) => {\n const options = entriesOptions\n .map((option) => {\n const optionToLowerCase = typeof option === 'string' ? option.toLowerCase() : option;\n if (optionToLowerCase === 'all') {\n return `<option value=\"${option}\" ${\n option === entries ? 'selected' : ''\n }>${allText}</option>`;\n }\n return `<option value=\"${option}\">${option}</option>`;\n })\n .join('\\n');\n\n return `\n <div class=\"datatable-select-wrapper\">\n <p class=\"datatable-select-text\">${rowsText}</p>\n <select name=\"entries\" ${\n loading ? 'data-mdb-disabled=\"true\"' : ''\n } class=\"datatable-select select\">\n ${options}\n </select>\n </div>\n `;\n};\n\nexport { createEntriesSelect, createPaginationButtons };\nexport default pagination;\n","import SelectorEngine from '../../mdb/dom/selector-engine';\nimport Manipulator from '../../mdb/dom/manipulator';\n\nconst SELECTOR_FORM_CHECK_INPUT = '.form-check-input';\n\nconst CLASS_NAME_SELECTED = 'selected';\nconst CLASS_NAME_ACITVE = 'active';\n\nclass SelectOption {\n constructor(\n id,\n nativeOption,\n multiple,\n value,\n label,\n selected,\n disabled,\n hidden,\n secondaryText,\n groupId,\n icon\n ) {\n this.id = id;\n this.nativeOption = nativeOption;\n this.multiple = multiple;\n this.value = value;\n this.label = label;\n this.selected = selected;\n this.disabled = disabled;\n this.hidden = hidden;\n this.secondaryText = secondaryText;\n this.groupId = groupId;\n this.icon = icon;\n this.node = null;\n this.active = false;\n }\n\n select() {\n if (this.multiple) {\n this._selectMultiple();\n } else {\n this._selectSingle();\n }\n }\n\n _selectSingle() {\n if (!this.selected) {\n Manipulator.addClass(this.node, CLASS_NAME_SELECTED);\n this.node.setAttribute('aria-selected', true);\n this.selected = true;\n\n if (this.nativeOption) {\n this.nativeOption.selected = true;\n }\n }\n }\n\n _selectMultiple() {\n if (!this.selected) {\n const checkbox = SelectorEngine.findOne(SELECTOR_FORM_CHECK_INPUT, this.node);\n checkbox.checked = true;\n Manipulator.addClass(this.node, CLASS_NAME_SELECTED);\n this.node.setAttribute('aria-selected', true);\n this.selected = true;\n\n if (this.nativeOption) {\n this.nativeOption.selected = true;\n }\n }\n }\n\n deselect() {\n if (this.multiple) {\n this._deselectMultiple();\n } else {\n this._deselectSingle();\n }\n }\n\n _deselectSingle() {\n if (this.selected) {\n Manipulator.removeClass(this.node, CLASS_NAME_SELECTED);\n this.node.setAttribute('aria-selected', false);\n this.selected = false;\n\n if (this.nativeOption) {\n this.nativeOption.selected = false;\n }\n }\n }\n\n _deselectMultiple() {\n if (this.selected) {\n const checkbox = SelectorEngine.findOne(SELECTOR_FORM_CHECK_INPUT, this.node);\n checkbox.checked = false;\n Manipulator.removeClass(this.node, CLASS_NAME_SELECTED);\n this.node.setAttribute('aria-selected', false);\n this.selected = false;\n\n if (this.nativeOption) {\n this.nativeOption.selected = false;\n }\n }\n }\n\n setNode(node) {\n this.node = node;\n }\n\n setActiveStyles() {\n if (!this.active) {\n this.active = true;\n Manipulator.addClass(this.node, CLASS_NAME_ACITVE);\n }\n }\n\n removeActiveStyles() {\n if (this.active) {\n this.active = false;\n Manipulator.removeClass(this.node, CLASS_NAME_ACITVE);\n }\n }\n}\n\nexport default SelectOption;\n","class SelectionModel {\n constructor(multiple = false) {\n this._multiple = multiple;\n this._selections = [];\n }\n\n select(option) {\n if (this._multiple) {\n this._selections.push(option);\n } else {\n this._selections = [option];\n }\n }\n\n deselect(option) {\n if (this._multiple) {\n const optionIndex = this._selections.findIndex((selection) => option === selection);\n this._selections.splice(optionIndex, 1);\n } else {\n this._selections = [];\n }\n }\n\n clear() {\n this._selections = [];\n }\n\n get selection() {\n return this._selections[0];\n }\n\n get selections() {\n return this._selections;\n }\n\n get label() {\n return this._selections[0] && this.selection.label;\n }\n\n get labels() {\n return this._selections.map((selection) => selection.label).join(', ');\n }\n\n get value() {\n return this.selections[0] && this.selection.value;\n }\n\n get values() {\n return this._selections.map((selection) => selection.value);\n }\n}\n\nexport default SelectionModel;\n","export default function allOptionsSelected(options) {\n return options\n .filter((option) => !option.disabled)\n .every((option) => {\n return option.selected;\n });\n}\n","import { element } from '../../mdb/util/index';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport allOptionsSelected from './util';\n\nconst preventKeydown = (event) => {\n if (event.code === 'Tab' || event.code === 'Esc') {\n return;\n }\n\n event.preventDefault();\n};\n\nexport function getWrapperTemplate(id, config, label, dropdownContainerId, inputId) {\n const wrapper = document.createElement('div');\n wrapper.setAttribute('id', id);\n wrapper.classList.add('select-wrapper');\n\n const formOutline = element('div');\n Manipulator.addClass(formOutline, 'form-outline');\n formOutline.setAttribute('data-mdb-input-init', '');\n\n if (config.formWhite) {\n Manipulator.addClass(formOutline, 'form-white');\n }\n\n const input = element('input');\n const disabled = config.disabled ? 'true' : 'false';\n Manipulator.addClass(input, 'form-control');\n Manipulator.addClass(input, 'select-input');\n\n if (config.size === 'sm') {\n Manipulator.addClass(input, 'form-control-sm');\n }\n\n if (config.size === 'lg') {\n Manipulator.addClass(input, 'form-control-lg');\n }\n\n input.setAttribute('type', 'text');\n input.setAttribute('role', 'combobox');\n input.setAttribute('aria-disabled', disabled);\n input.setAttribute('aria-haspopup', 'listbox');\n input.setAttribute('aria-expanded', false);\n input.setAttribute('aria-controls', dropdownContainerId);\n input.setAttribute('id', inputId);\n\n if (config.tabIndex) {\n input.setAttribute('tabIndex', config.tabIndex);\n }\n\n if (config.disabled) {\n input.setAttribute('disabled', '');\n }\n\n if (config.placeholder !== '') {\n input.setAttribute('placeholder', config.placeholder);\n }\n\n if (config.validation) {\n Manipulator.addStyle(input, { 'pointer-events': 'none', 'caret-color': 'transparent' });\n Manipulator.addStyle(formOutline, { cursor: 'pointer' });\n } else {\n input.setAttribute('readonly', 'true');\n }\n\n if (config.validation) {\n input.setAttribute('required', 'true');\n input.setAttribute('aria-required', 'true');\n input.addEventListener('keydown', preventKeydown);\n }\n\n const validFeedback = element('div');\n Manipulator.addClass(validFeedback, 'valid-feedback');\n const validFeedBackText = document.createTextNode(`${config.validFeedback}`);\n validFeedback.appendChild(validFeedBackText);\n\n const invalidFeedback = element('div');\n Manipulator.addClass(invalidFeedback, 'invalid-feedback');\n const invalidFeedBackText = document.createTextNode(`${config.invalidFeedback}`);\n invalidFeedback.appendChild(invalidFeedBackText);\n\n const clearBtn = element('span');\n Manipulator.addClass(clearBtn, 'select-clear-btn');\n const clearBtnText = document.createTextNode('\\u2715');\n clearBtn.appendChild(clearBtnText);\n clearBtn.setAttribute('tabindex', '0');\n clearBtn.setAttribute('aria-label', config.clearButtonLabel);\n\n const arrow = element('span');\n Manipulator.addClass(arrow, 'select-arrow');\n\n formOutline.appendChild(input);\n\n if (label) {\n formOutline.appendChild(label);\n const labelId = label.getAttribute('id');\n label.setAttribute('for', inputId);\n if (labelId) {\n input.setAttribute('aria-labelledby', labelId);\n }\n }\n\n if (config.validation) {\n formOutline.appendChild(validFeedback);\n formOutline.appendChild(invalidFeedback);\n }\n\n if (config.clearButton) {\n formOutline.appendChild(clearBtn);\n }\n\n formOutline.appendChild(arrow);\n\n wrapper.appendChild(formOutline);\n return wrapper;\n}\n\nexport function getDropdownTemplate(\n id,\n config,\n width,\n height,\n selectAllOption,\n options,\n customContent\n) {\n const dropdownContainer = document.createElement('div');\n dropdownContainer.classList.add('select-dropdown-container');\n\n dropdownContainer.setAttribute('id', `${id}`);\n dropdownContainer.style.width = `${width}px`;\n\n const dropdown = document.createElement('div');\n dropdown.setAttribute('tabindex', 0);\n dropdown.classList.add('select-dropdown');\n\n const optionsWrapper = element('div');\n Manipulator.addClass(optionsWrapper, 'select-options-wrapper');\n optionsWrapper.style.maxHeight = `${height}px`;\n\n const optionsList = getOptionsListTemplate(options, selectAllOption, config);\n\n optionsWrapper.appendChild(optionsList);\n\n if (config.filter) {\n dropdown.appendChild(getFilterTemplate(config.searchPlaceholder));\n }\n\n dropdown.appendChild(optionsWrapper);\n\n if (customContent) {\n dropdown.appendChild(customContent);\n }\n\n dropdownContainer.appendChild(dropdown);\n\n return dropdownContainer;\n}\n\nexport function getOptionsListTemplate(options, selectAllOption, config, label) {\n const optionsList = element('div');\n Manipulator.addClass(optionsList, 'select-options-list');\n\n if (label?.id) {\n optionsList.setAttribute('aria-labelledby', label.id);\n }\n\n const multiselectable = config.multiple ? 'true' : 'false';\n const role = config.filter ? 'combobox' : 'listbox';\n\n optionsList.setAttribute('role', role);\n optionsList.setAttribute('aria-multiselectable', multiselectable);\n\n let optionsNodes;\n\n if (config.multiple) {\n optionsNodes = getMultipleOptionsNodes(options, selectAllOption, config);\n } else {\n optionsNodes = getSingleOptionsNodes(options, config);\n }\n\n optionsNodes.forEach((node) => {\n optionsList.appendChild(node);\n });\n\n return optionsList;\n}\n\nexport function getFilterTemplate(placeholder) {\n const inputGroup = element('div');\n Manipulator.addClass(inputGroup, 'input-group');\n const input = element('input');\n Manipulator.addClass(input, 'form-control');\n Manipulator.addClass(input, 'select-filter-input');\n input.placeholder = placeholder;\n input.setAttribute('role', 'searchbox');\n input.setAttribute('type', 'text');\n\n inputGroup.appendChild(input);\n\n return inputGroup;\n}\n\nfunction getSingleOptionsNodes(options, config) {\n const nodes = getOptionsNodes(options, config);\n return nodes;\n}\n\nfunction getMultipleOptionsNodes(options, selectAllOption, config) {\n let selectAllNode = null;\n\n if (config.selectAll) {\n selectAllNode = createSelectAllNode(selectAllOption, options, config);\n }\n const optionsNodes = getOptionsNodes(options, config);\n const nodes = selectAllNode ? [selectAllNode, ...optionsNodes] : optionsNodes;\n return nodes;\n}\n\nfunction getOptionsNodes(options, config) {\n const nodes = [];\n\n options.forEach((option) => {\n const isOptionGroup = option.hasOwnProperty('options');\n if (isOptionGroup) {\n const group = createOptionGroupTemplate(option, config);\n nodes.push(group);\n } else {\n nodes.push(createOptionTemplate(option, config));\n }\n });\n\n return nodes;\n}\n\nfunction createSelectAllNode(option, options, config) {\n const isSelected = allOptionsSelected(options);\n const optionNode = element('div');\n Manipulator.addClass(optionNode, 'select-option');\n Manipulator.addClass(optionNode, 'select-all-option');\n Manipulator.addStyle(optionNode, { height: `${config.optionHeight}px` });\n optionNode.setAttribute('role', 'option');\n optionNode.setAttribute('aria-selected', isSelected);\n\n if (isSelected) {\n Manipulator.addClass(optionNode, 'selected');\n }\n\n optionNode.appendChild(getOptionContentTemplate(option, config));\n option.setNode(optionNode);\n\n return optionNode;\n}\n\nfunction createOptionTemplate(option, config) {\n if (option.node) {\n return option.node;\n }\n\n const optionNode = element('div');\n Manipulator.addClass(optionNode, 'select-option');\n Manipulator.addStyle(optionNode, { height: `${config.optionHeight}px` });\n Manipulator.setDataAttribute(optionNode, 'id', option.id);\n optionNode.setAttribute('role', 'option');\n optionNode.setAttribute('aria-selected', option.selected);\n optionNode.setAttribute('aria-disabled', option.disabled);\n\n if (option.selected) {\n Manipulator.addClass(optionNode, 'selected');\n }\n\n if (option.disabled) {\n Manipulator.addClass(optionNode, 'disabled');\n }\n\n if (option.hidden) {\n Manipulator.addClass(optionNode, 'd-none');\n }\n\n optionNode.appendChild(getOptionContentTemplate(option, config));\n\n if (option.icon) {\n optionNode.appendChild(getOptionIconTemplate(option));\n }\n\n option.setNode(optionNode);\n\n return optionNode;\n}\n\nfunction getOptionContentTemplate(option, config) {\n const content = element('span');\n Manipulator.addClass(content, 'select-option-text');\n\n const label = document.createTextNode(option.label);\n\n if (config.multiple) {\n content.appendChild(getCheckboxTemplate(option));\n }\n\n content.appendChild(label);\n\n if (option.secondaryText || typeof option.secondaryText === 'number') {\n content.appendChild(getSecondaryTextTemplate(option.secondaryText));\n }\n\n return content;\n}\n\nfunction getSecondaryTextTemplate(text) {\n const span = element('span');\n Manipulator.addClass(span, 'select-option-secondary-text');\n const textContent = document.createTextNode(text);\n span.appendChild(textContent);\n return span;\n}\n\nfunction getCheckboxTemplate(option) {\n const checkbox = element('input');\n checkbox.setAttribute('type', 'checkbox');\n Manipulator.addClass(checkbox, 'form-check-input');\n\n const label = element('label');\n\n if (option.selected) {\n checkbox.setAttribute('checked', true);\n }\n\n if (option.disabled) {\n checkbox.setAttribute('disabled', true);\n }\n\n checkbox.appendChild(label);\n return checkbox;\n}\n\nfunction getOptionIconTemplate(option) {\n const container = element('span');\n Manipulator.addClass(container, 'select-option-icon-container');\n const image = element('img');\n Manipulator.addClass(image, 'select-option-icon');\n Manipulator.addClass(image, 'rounded-circle');\n image.src = option.icon;\n\n container.appendChild(image);\n return container;\n}\n\nfunction createOptionGroupTemplate(optionGroup, config) {\n const group = element('div');\n Manipulator.addClass(group, 'select-option-group');\n group.setAttribute('role', 'group');\n group.setAttribute('id', optionGroup.id);\n\n if (optionGroup.hidden) {\n Manipulator.addClass(group, 'd-none');\n }\n\n const label = element('label');\n Manipulator.addClass(label, 'select-option-group-label');\n Manipulator.addStyle(label, { height: `${config.optionHeight}px` });\n label.setAttribute('for', optionGroup.id);\n label.textContent = optionGroup.label;\n\n group.appendChild(label);\n\n optionGroup.options.forEach((option) => {\n group.appendChild(createOptionTemplate(option, config));\n });\n\n return group;\n}\n\nexport function getFakeValueTemplate(value) {\n const fakeValue = element('div');\n fakeValue.textContent = value;\n Manipulator.addClass(fakeValue, 'form-label');\n Manipulator.addClass(fakeValue, 'select-fake-value');\n\n return fakeValue;\n}\n","import { createPopper } from '@popperjs/core';\nimport Data from '../../mdb/dom/data';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport { typeCheckConfig, getUID } from '../../mdb/util/index';\nimport Input from '../../free/input';\nimport SelectOption from './select-option';\nimport SelectionModel from './selection-model';\nimport {\n ESCAPE,\n ENTER,\n DOWN_ARROW,\n UP_ARROW,\n HOME,\n END,\n TAB,\n SPACE,\n} from '../../mdb/util/keycodes';\nimport allOptionsSelected from './util';\nimport {\n getWrapperTemplate,\n getDropdownTemplate,\n getOptionsListTemplate,\n getFakeValueTemplate,\n} from './templates';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\nconst Default = {\n autoSelect: false,\n container: 'body',\n clearButton: false,\n disabled: false,\n displayedLabels: 5,\n formWhite: false,\n multiple: false,\n optionsSelectedLabel: 'options selected',\n optionHeight: 38,\n selectAll: true,\n selectAllLabel: 'Select all',\n searchPlaceholder: 'Search...',\n size: 'default',\n visibleOptions: 5,\n filter: false,\n filterDebounce: 300,\n noResultText: 'No results',\n validation: false,\n validFeedback: 'Valid',\n invalidFeedback: 'Invalid',\n placeholder: '',\n filterFn: null,\n clearButtonLabel: 'Clear selection',\n};\n\nconst DefaultType = {\n autoSelect: 'boolean',\n container: 'string',\n clearButton: 'boolean',\n disabled: 'boolean',\n displayedLabels: 'number',\n formWhite: 'boolean',\n multiple: 'boolean',\n optionsSelectedLabel: 'string',\n optionHeight: 'number',\n selectAll: 'boolean',\n selectAllLabel: 'string',\n searchPlaceholder: 'string',\n size: 'string',\n visibleOptions: 'number',\n filter: 'boolean',\n filterDebounce: 'number',\n noResultText: 'string',\n validation: 'boolean',\n validFeedback: 'string',\n invalidFeedback: 'string',\n placeholder: '',\n filterFn: '(function|null)',\n clearButtonLabel: 'string',\n};\n\nconst NAME = 'select';\nconst DATA_KEY = 'mdb.select';\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_CLOSE = `close${EVENT_KEY}`;\nconst EVENT_OPEN = `open${EVENT_KEY}`;\nconst EVENT_SELECTED = `optionSelected${EVENT_KEY}`;\nconst EVENT_DESELECTED = `optionDeselected${EVENT_KEY}`;\nconst EVENT_VALUE_CHANGED = `valueChanged${EVENT_KEY}`;\nconst EVENT_CHANGE_NATIVE = 'change';\nconst EVENT_OPENED = `opened${EVENT_KEY}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY}`;\nconst EVENT_SEARCH = `search${EVENT_KEY}`;\n\nconst SELECTOR_LABEL = '.select-label';\nconst SELECTOR_INPUT = '.select-input';\nconst SELECTOR_FILTER_INPUT = '.select-filter-input';\nconst SELECTOR_DROPDOWN = '.select-dropdown';\nconst SELECTOR_OPTIONS_WRAPPER = '.select-options-wrapper';\nconst SELECTOR_OPTIONS_LIST = '.select-options-list';\nconst SELECTOR_OPTION = '.select-option';\nconst SELECTOR_CLEAR_BUTTON = '.select-clear-btn';\nconst SELECTOR_CUSTOM_CONTENT = '.select-custom-content';\nconst SELECTOR_NO_RESULTS = '.select-no-results';\nconst SELECTOR_FORM_OUTLINE = '.form-outline';\nconst SELECTOR_TOGGLE = '[data-mdb-toggle]';\n\nconst CLASS_NAME_INITIALIZED = 'select-initialized';\nconst CLASS_NAME_OPEN = 'open';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FOCUSED = 'focused';\nconst CLASS_NAME_OPTION_GROUP_LABEL = 'select-option-group-label';\nconst CLASS_NAME_SELECT_ALL_OPTION = 'select-all-option';\n\nclass Select extends BaseComponent {\n constructor(element, config) {\n super(element);\n\n this._config = this._getConfig(config);\n this._optionsToRender = this._getOptionsToRender(element);\n\n // optionsToRender may contain option groups and nested options, in this case\n // we need a list of plain options to manage selections and keyboard navigation\n this._plainOptions = this._getPlainOptions(this._optionsToRender);\n this._filteredOptionsList = null;\n\n this._selectionModel = new SelectionModel(this.multiple);\n\n this._activeOptionIndex = -1;\n this._activeOption = null;\n\n this._wrapperId = this._element.id\n ? `select-wrapper-${this._element.id}`\n : getUID('select-wrapper-');\n this._dropdownContainerId = this._element.id\n ? `select-dropdown-container-${this._element.id}`\n : getUID('select-dropdown-container-');\n this._inputId = this._element.id ? `select-input-${this._element.id}` : getUID('select-input-');\n this._selectAllId = this._element.id ? `select-all-${this._element.id}` : getUID('select-all-');\n this._debounceTimeoutId = null;\n\n this._dropdownHeight = this._config.optionHeight * this._config.visibleOptions;\n\n this._popper = null;\n this._input = null;\n this._label = SelectorEngine.next(this._element, SELECTOR_LABEL)[0];\n this._fakeValue = null;\n this._isFakeValueActive = false;\n this._customContent = SelectorEngine.next(element, SELECTOR_CUSTOM_CONTENT)[0];\n this._toggleButton = null;\n this._elementToggle = null;\n\n this._wrapper = null;\n this._inputEl = null;\n this._dropdownContainer = null;\n this._container = null;\n this._selectAllOption = null;\n\n this._init();\n\n this._mutationObserver = null;\n this._isOpen = false;\n\n this._animationTransitionTime = 200;\n\n this._addMutationObserver();\n\n this._inputHandler = this._handleInput.bind(this);\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n static get NAME() {\n return NAME;\n }\n\n get filterInput() {\n return SelectorEngine.findOne(SELECTOR_FILTER_INPUT, this._dropdownContainer);\n }\n\n get dropdown() {\n return SelectorEngine.findOne(SELECTOR_DROPDOWN, this._dropdownContainer);\n }\n\n get optionsList() {\n return SelectorEngine.findOne(SELECTOR_OPTIONS_LIST, this._dropdownContainer);\n }\n\n get optionsWrapper() {\n return SelectorEngine.findOne(SELECTOR_OPTIONS_WRAPPER, this._dropdownContainer);\n }\n\n get clearButton() {\n return SelectorEngine.findOne(SELECTOR_CLEAR_BUTTON, this._wrapper);\n }\n\n get options() {\n return this._filteredOptionsList ? this._filteredOptionsList : this._plainOptions;\n }\n\n get value() {\n return this.multiple ? this._selectionModel.values : this._selectionModel.value;\n }\n\n get multiple() {\n return this._config.multiple;\n }\n\n get hasSelectAll() {\n return this.multiple && this._config.selectAll;\n }\n\n get hasSelection() {\n return this._selectionModel.selection || this._selectionModel.selections.length > 0;\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n if (this._element.hasAttribute('multiple')) {\n config.multiple = true;\n }\n\n if (this._element.hasAttribute('disabled')) {\n config.disabled = true;\n }\n\n if (this._element.tabIndex) {\n config.tabIndex = this._element.getAttribute('tabIndex');\n }\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n _getOptionsToRender(select) {\n const options = [];\n\n const nodes = select.childNodes;\n\n nodes.forEach((node) => {\n if (node.nodeName === 'OPTGROUP') {\n const optionGroup = {\n id: node.id ? `group-${node.id}` : getUID('group-'),\n label: node.label,\n disabled: node.hasAttribute('disabled'),\n hidden: node.hasAttribute('hidden'),\n options: [],\n };\n const groupOptions = node.childNodes;\n groupOptions.forEach((option) => {\n if (option.nodeName === 'OPTION') {\n optionGroup.options.push(this._createOptionObject(option, optionGroup));\n }\n });\n options.push(optionGroup);\n } else if (node.nodeName === 'OPTION') {\n options.push(this._createOptionObject(node));\n }\n });\n return options;\n }\n\n _getPlainOptions(optionsToRender) {\n const hasOptionGroup = SelectorEngine.findOne('optgroup', this._element);\n\n if (!hasOptionGroup) {\n return optionsToRender;\n }\n\n const options = [];\n\n optionsToRender.forEach((option) => {\n const isOptionGroup = option.hasOwnProperty('options');\n if (isOptionGroup) {\n option.options.forEach((nestedOption) => {\n options.push(nestedOption);\n });\n } else {\n options.push(option);\n }\n });\n\n return options;\n }\n\n _createOptionObject(nativeOption, group = {}) {\n const id = nativeOption.id ? `option-${nativeOption.id}` : getUID('option-');\n const groupId = group.id ? group.id : null;\n const groupDisabled = group.disabled ? group.disabled : false;\n const selected = nativeOption.selected || nativeOption.hasAttribute('selected');\n const disabled = nativeOption.hasAttribute('disabled') || groupDisabled;\n const hidden = nativeOption.hasAttribute('hidden') || (group && group.hidden);\n const multiple = this.multiple;\n const value = nativeOption.value;\n const label = nativeOption.label;\n const secondaryText = Manipulator.getDataAttribute(nativeOption, 'secondaryText');\n const icon = Manipulator.getDataAttribute(nativeOption, 'icon');\n return new SelectOption(\n id,\n nativeOption,\n multiple,\n value,\n label,\n selected,\n disabled,\n hidden,\n secondaryText,\n groupId,\n icon\n );\n }\n\n _getNavigationOptions() {\n const availableOptions = this.options.filter((option) => !option.hidden);\n\n return this.hasSelectAll ? [this._selectAllOption, ...availableOptions] : availableOptions;\n }\n\n _init() {\n this._renderMaterialWrapper();\n\n this._wrapper = SelectorEngine.findOne(`#${this._wrapperId}`);\n this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._wrapper);\n\n if (this._element.getAttribute('autocomplete') === 'off') {\n this._input.setAttribute('autocomplete', 'off');\n }\n const containerSelector = this._config.container;\n\n if (containerSelector === 'body') {\n this._container = document.body;\n } else {\n this._container = SelectorEngine.findOne(containerSelector);\n }\n\n this._initOutlineInput();\n this._setDefaultSelections();\n this._updateInputValue();\n this._appendFakeValue();\n this._updateFakeLabelPosition();\n this._updateLabelPosition();\n this._updateClearButtonVisibility();\n\n this._bindComponentEvents();\n\n if (this.hasSelectAll) {\n this._selectAllOption = this._createSelectAllOption();\n }\n\n this._dropdownContainer = getDropdownTemplate(\n this._dropdownContainerId,\n this._config,\n this._input.offsetWidth,\n this._dropdownHeight,\n this._selectAllOption,\n this._optionsToRender,\n this._customContent\n );\n\n this._setFirstActiveOption();\n }\n\n _renderMaterialWrapper() {\n const template = getWrapperTemplate(\n this._wrapperId,\n this._config,\n this._label,\n this._dropdownContainerId,\n this._inputId\n );\n this._element.parentNode.insertBefore(template, this._element);\n Manipulator.addClass(this._element, CLASS_NAME_INITIALIZED);\n template.appendChild(this._element);\n }\n\n _initOutlineInput() {\n const inputWrapper = SelectorEngine.findOne(SELECTOR_FORM_OUTLINE, this._wrapper);\n const outlineInput = new Input(inputWrapper);\n outlineInput.init();\n }\n\n _updateOutlineInput() {\n const inputWrapper = SelectorEngine.findOne(SELECTOR_FORM_OUTLINE, this._wrapper);\n Input.getInstance(inputWrapper).update();\n }\n\n _bindComponentEvents() {\n this._listenToComponentKeydown();\n this._listenToWrapperClick();\n if (!this._config.disabled) {\n this._listenToClearBtnClick();\n this._listenToClearBtnKeydown();\n }\n }\n\n _setDefaultSelections() {\n this.options.forEach((option) => {\n if (option.selected) {\n this._selectionModel.select(option);\n }\n });\n }\n\n _listenToComponentKeydown() {\n this._wrapperKeydownHandler = this._handleKeydown.bind(this);\n\n EventHandler.on(this._wrapper, 'keydown', this._wrapperKeydownHandler);\n }\n\n _handleKeydown(event) {\n if (this._isOpen && !this._config.filter) {\n this._handleOpenKeydown(event);\n } else {\n this._handleClosedKeydown(event);\n }\n }\n\n _handleOpenKeydown(event) {\n const key = event.keyCode;\n const isCloseKey =\n key === ESCAPE || ((key === UP_ARROW || key === DOWN_ARROW) && event.altKey) || key === TAB;\n\n if (key === TAB && this._config.autoSelect && !this.multiple) {\n this._handleAutoSelection(this._activeOption);\n }\n\n if (isCloseKey) {\n this.close();\n this._input.focus();\n return;\n }\n\n switch (key) {\n case DOWN_ARROW:\n this._setNextOptionActive();\n this._scrollToOption(this._activeOption);\n break;\n case UP_ARROW:\n this._setPreviousOptionActive();\n this._scrollToOption(this._activeOption);\n break;\n case HOME:\n this._setFirstOptionActive();\n this._scrollToOption(this._activeOption);\n break;\n case END:\n this._setLastOptionActive();\n this._scrollToOption(this._activeOption);\n break;\n case ENTER:\n event.preventDefault();\n if (this._activeOption) {\n if (this.hasSelectAll && this._activeOptionIndex === 0) {\n this._handleSelectAll();\n } else {\n this._handleSelection(this._activeOption);\n }\n }\n return;\n default:\n return;\n }\n\n event.preventDefault();\n }\n\n _handleClosedKeydown(event) {\n const key = event.keyCode;\n if (key === ENTER || key === SPACE) {\n event.preventDefault();\n }\n const isOpenKey =\n key === ENTER ||\n key === SPACE ||\n ((key === DOWN_ARROW || key === UP_ARROW) && event.altKey) ||\n (key === DOWN_ARROW && this.multiple);\n\n if (isOpenKey) {\n this.open();\n }\n\n if (!this.multiple) {\n switch (key) {\n case DOWN_ARROW:\n if (event.altKey) return;\n this._setNextOptionActive();\n this._handleSelection(this._activeOption);\n break;\n case UP_ARROW:\n if (event.altKey) return;\n this._setPreviousOptionActive();\n this._handleSelection(this._activeOption);\n break;\n case HOME:\n this._setFirstOptionActive();\n this._handleSelection(this._activeOption);\n break;\n case END:\n this._setLastOptionActive();\n this._handleSelection(this._activeOption);\n break;\n default:\n return;\n }\n } else {\n switch (key) {\n case DOWN_ARROW:\n this.open();\n break;\n case UP_ARROW:\n this.open();\n break;\n default:\n return;\n }\n }\n\n event.preventDefault();\n }\n\n _scrollToOption(option) {\n if (!option) {\n return;\n }\n\n let optionIndex;\n\n const visibleOptions = this.options.filter((option) => !option.hidden);\n\n if (this.hasSelectAll) {\n optionIndex = visibleOptions.indexOf(option) + 1;\n } else {\n optionIndex = visibleOptions.indexOf(option);\n }\n\n const groupsNumber = this._getNumberOfGroupsBeforeOption(optionIndex);\n\n const scrollToIndex = optionIndex + groupsNumber;\n\n const list = this.optionsWrapper;\n const listHeight = list.offsetHeight;\n const optionHeight = this._config.optionHeight;\n const scrollTop = list.scrollTop;\n\n if (optionIndex > -1) {\n const optionOffset = scrollToIndex * optionHeight;\n const isBelow = optionOffset + optionHeight > scrollTop + listHeight;\n const isAbove = optionOffset < scrollTop;\n\n if (isAbove) {\n list.scrollTop = optionOffset;\n } else if (isBelow) {\n list.scrollTop = optionOffset - listHeight + optionHeight;\n } else {\n list.scrollTop = scrollTop;\n }\n }\n }\n\n _getNumberOfGroupsBeforeOption(optionIndex) {\n const optionsList = this.options.filter((option) => !option.hidden);\n const groupsList = this._optionsToRender.filter((group) => !group.hidden);\n const index = this.hasSelectAll ? optionIndex - 1 : optionIndex;\n let groupsNumber = 0;\n\n for (let i = 0; i <= index; i++) {\n if (\n optionsList[i].groupId &&\n groupsList[groupsNumber] &&\n groupsList[groupsNumber].id &&\n optionsList[i].groupId === groupsList[groupsNumber].id\n ) {\n groupsNumber++;\n }\n }\n\n return groupsNumber;\n }\n\n _setNextOptionActive() {\n let index = this._activeOptionIndex + 1;\n const options = this._getNavigationOptions();\n\n if (!options[index]) {\n return;\n }\n\n while (options[index].disabled) {\n index += 1;\n\n if (!options[index]) {\n return;\n }\n }\n\n this._updateActiveOption(options[index], index);\n }\n\n _setPreviousOptionActive() {\n let index = this._activeOptionIndex - 1;\n const options = this._getNavigationOptions();\n\n if (!options[index]) {\n return;\n }\n\n while (options[index].disabled) {\n index -= 1;\n\n if (!options[index]) {\n return;\n }\n }\n\n this._updateActiveOption(options[index], index);\n }\n\n _setFirstOptionActive() {\n const index = 0;\n const options = this._getNavigationOptions();\n\n this._updateActiveOption(options[index], index);\n }\n\n _setLastOptionActive() {\n const options = this._getNavigationOptions();\n const index = options.length - 1;\n\n this._updateActiveOption(options[index], index);\n }\n\n _updateActiveOption(newActiveOption, index) {\n const currentActiveOption = this._activeOption;\n\n if (currentActiveOption) {\n currentActiveOption.removeActiveStyles();\n }\n\n newActiveOption.setActiveStyles();\n this._activeOptionIndex = index;\n this._activeOption = newActiveOption;\n }\n\n _listenToWrapperClick() {\n EventHandler.on(this._wrapper, 'click', () => {\n this.toggle();\n });\n }\n\n _listenToClearBtnClick() {\n EventHandler.on(this.clearButton, 'click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n this._handleClear();\n });\n }\n\n _listenToClearBtnKeydown() {\n EventHandler.on(this.clearButton, 'keydown', (event) => {\n if (event.keyCode === ENTER) {\n this._handleClear();\n event.preventDefault();\n event.stopPropagation();\n }\n });\n }\n\n _handleClear() {\n if (this.multiple) {\n this._selectionModel.clear();\n this._deselectAllOptions(this.options);\n\n if (this.hasSelectAll) {\n this._updateSelectAllState();\n }\n } else {\n const selected = this._selectionModel.selection;\n this._selectionModel.clear();\n selected.deselect();\n }\n\n if (this._optionsToRender[0].hidden === true) {\n this._singleOptionSelect(this._optionsToRender[0]);\n } else {\n this._emitValueChangeEvent(null);\n this._emitNativeChangeEvent();\n }\n\n this._updateInputValue();\n this._updateFakeLabelPosition();\n this._updateLabelPosition();\n this._updateClearButtonVisibility();\n }\n\n _listenToOptionsClick() {\n EventHandler.on(this.optionsWrapper, 'click', (event) => {\n const optionGroupLabel = event.target.classList.contains(CLASS_NAME_OPTION_GROUP_LABEL);\n\n if (optionGroupLabel) {\n return;\n }\n\n const target =\n event.target.nodeName === 'DIV'\n ? event.target\n : SelectorEngine.closest(event.target, SELECTOR_OPTION);\n const selectAllOption = target.classList.contains(CLASS_NAME_SELECT_ALL_OPTION);\n\n if (selectAllOption) {\n this._handleSelectAll();\n return;\n }\n\n const id = target.dataset.mdbId;\n const option = this.options.find((option) => option.id === id);\n\n if (option && !option.disabled) {\n this._handleSelection(option);\n }\n });\n }\n\n _handleSelectAll() {\n const selected = this._selectAllOption.selected;\n\n if (selected) {\n this._deselectAllOptions(this.options);\n this._selectAllOption.deselect();\n } else {\n this._selectAllOptions(this.options);\n this._selectAllOption.select();\n }\n\n this._updateInputValue();\n this._updateFakeLabelPosition();\n this._updateLabelPosition();\n this._updateClearButtonVisibility();\n\n this._emitValueChangeEvent(this.value);\n this._emitNativeChangeEvent();\n }\n\n _selectAllOptions(options) {\n options.forEach((option) => {\n if (!option.selected && !option.disabled) {\n this._selectionModel.select(option);\n option.select();\n }\n });\n }\n\n _deselectAllOptions(options) {\n options.forEach((option) => {\n if (option.selected && !option.disabled) {\n this._selectionModel.deselect(option);\n option.deselect();\n }\n });\n }\n\n _handleSelection(option) {\n if (this.multiple) {\n this._handleMultiSelection(option);\n\n if (this.hasSelectAll) {\n this._updateSelectAllState();\n }\n } else {\n this._handleSingleSelection(option);\n }\n\n this._updateInputValue();\n this._updateFakeLabelPosition();\n this._updateLabelPosition();\n this._updateClearButtonVisibility();\n this._updateOutlineInput();\n }\n\n _handleAutoSelection(option) {\n this._singleOptionSelect(option);\n this._updateInputValue();\n this._updateFakeLabelPosition();\n this._updateLabelPosition();\n this._updateClearButtonVisibility();\n this._updateOutlineInput();\n }\n\n _handleSingleSelection(option) {\n this._singleOptionSelect(option);\n this.close();\n this._input.focus();\n }\n\n _singleOptionSelect(option) {\n const currentSelected = this._selectionModel.selections[0];\n\n if (currentSelected && currentSelected !== option) {\n this._singleOptionClear(currentSelected);\n }\n\n if (!currentSelected || option !== currentSelected) {\n this._selectionModel.select(option);\n option.select();\n option.node.setAttribute('selected', true);\n EventHandler.trigger(this._element, EVENT_SELECTED, { value: option.value });\n this._emitValueChangeEvent(this.value);\n this._emitNativeChangeEvent();\n }\n }\n\n _singleOptionClear(option) {\n this._selectionModel.deselect(option);\n option.deselect();\n option.node.setAttribute('selected', false);\n EventHandler.trigger(this._element, EVENT_DESELECTED, { value: option.value });\n }\n\n _handleMultiSelection(option) {\n if (option.selected) {\n this._singleOptionClear(option);\n } else {\n this._selectionModel.select(option);\n option.select();\n option.node.setAttribute('selected', true);\n EventHandler.trigger(this._element, EVENT_SELECTED, { value: option.value });\n }\n\n this._emitValueChangeEvent(this.value);\n this._emitNativeChangeEvent();\n }\n\n _emitValueChangeEvent(value) {\n EventHandler.trigger(this._element, EVENT_VALUE_CHANGED, { value });\n }\n\n _emitNativeChangeEvent() {\n EventHandler.trigger(this._element, EVENT_CHANGE_NATIVE);\n }\n\n _updateInputValue() {\n const labels = this.multiple ? this._selectionModel.labels : this._selectionModel.label;\n let value;\n\n if (\n this.multiple &&\n this._config.displayedLabels !== -1 &&\n this._selectionModel.selections.length > this._config.displayedLabels\n ) {\n value = `${this._selectionModel.selections.length} ${this._config.optionsSelectedLabel}`;\n } else {\n value = labels;\n }\n\n if (!this.multiple && !this._isSelectionValid(this._selectionModel.selection)) {\n this._input.value = '';\n } else if (this._isLabelEmpty(this._selectionModel.selection)) {\n this._input.value = ' ';\n } else if (value) {\n this._input.value = value;\n } else {\n // prettier-ignore\n // eslint-disable-next-line\n this.multiple || !this._optionsToRender[0] || this._config.placeholder ? (this._input.value = '') : (this._input.value = this._optionsToRender[0].label);\n }\n }\n\n _isSelectionValid(selection) {\n if (selection && (selection.disabled || selection.value === '')) {\n return false;\n }\n\n return true;\n }\n\n _isLabelEmpty(selection) {\n if (selection && selection.label === '') {\n return true;\n }\n\n return false;\n }\n\n _appendFakeValue() {\n if (\n !this._selectionModel.selection ||\n this._selectionModel._multiple ||\n this._config.placeholder\n ) {\n return;\n }\n\n const value = this._selectionModel.selection.label;\n this._fakeValue = getFakeValueTemplate(value);\n const inputWrapper = SelectorEngine.findOne(SELECTOR_FORM_OUTLINE, this._wrapper);\n inputWrapper.appendChild(this._fakeValue);\n }\n\n _updateLabelPosition() {\n const isInitialized = Manipulator.hasClass(this._element, CLASS_NAME_INITIALIZED);\n const isValueEmpty = this._input.value !== '';\n if (!this._label) {\n return;\n }\n\n if (isInitialized && (isValueEmpty || this._isOpen || this._isFakeValueActive)) {\n Manipulator.addClass(this._label, CLASS_NAME_ACTIVE);\n } else {\n Manipulator.removeClass(this._label, CLASS_NAME_ACTIVE);\n }\n }\n\n _updateLabelPositionWhileClosing() {\n if (!this._label) {\n return;\n }\n\n if (this._input.value !== '' || this._isFakeValueActive) {\n Manipulator.addClass(this._label, CLASS_NAME_ACTIVE);\n } else {\n Manipulator.removeClass(this._label, CLASS_NAME_ACTIVE);\n }\n }\n\n _updateFakeLabelPosition() {\n if (!this._fakeValue) {\n return;\n }\n\n if (this.hasSelection) {\n this._fakeValue.textContent = this.hasSelection.label;\n }\n\n if (this._input.value === '' && this._fakeValue.innerHTML !== '') {\n this._isFakeValueActive = true;\n Manipulator.addClass(this._fakeValue, CLASS_NAME_ACTIVE);\n } else {\n this._isFakeValueActive = false;\n Manipulator.removeClass(this._fakeValue, CLASS_NAME_ACTIVE);\n }\n }\n\n _updateClearButtonVisibility() {\n if (!this.clearButton) {\n return;\n }\n\n if (\n (this._optionsToRender[0]?.hidden && this._optionsToRender[0]?.selected) ||\n !this.hasSelection\n ) {\n Manipulator.addStyle(this.clearButton, { display: 'none' });\n } else {\n Manipulator.addStyle(this.clearButton, { display: 'block' });\n }\n }\n\n _updateSelectAllState() {\n const selectAllSelected = this._selectAllOption.selected;\n const allSelected = allOptionsSelected(this.options);\n if (!allSelected && selectAllSelected) {\n this._selectAllOption.deselect();\n } else if (allSelected && !selectAllSelected) {\n this._selectAllOption.select();\n }\n }\n\n toggle() {\n if (this._isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open() {\n const isDisabled = this._config.disabled;\n const openEvent = EventHandler.trigger(this._element, EVENT_OPEN);\n\n if (this._isOpen || isDisabled || openEvent.defaultPrevented) {\n return;\n }\n\n this._openDropdown();\n this._updateDropdownWidth();\n this._setFirstActiveOption();\n this._scrollToOption(this._activeOption);\n\n if (this._config.filter) {\n // We need to wait for popper initialization, otherwise\n // dates container will be focused before popper position\n // update which can change the scroll position on the page\n setTimeout(() => {\n this.filterInput.focus();\n this._filterOptions(this.filterInput.value);\n }, 0);\n\n this._listenToSelectSearch();\n\n // New listener for dropdown navigation is needed, because\n // we focus search input inside dropdown template, which is\n // appended to the body. In this case listener attached to the\n // select wrapper won't work\n this._listenToDropdownKeydown();\n }\n\n this._listenToOptionsClick();\n this._listenToOutsideClick();\n this._listenToWindowResize();\n\n this._isOpen = true;\n this._input.setAttribute('aria-expanded', true);\n EventHandler.trigger(this._element, EVENT_OPENED);\n\n this._updateLabelPosition();\n this._setInputActiveStyles();\n }\n\n _openDropdown() {\n this._popper = createPopper(this._input, this._dropdownContainer, {\n placement: 'bottom-start',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 1],\n },\n },\n ],\n });\n this._container.appendChild(this._dropdownContainer);\n\n // We need to add delay to wait for the popper initialization\n // and position update\n setTimeout(() => {\n Manipulator.addClass(this.dropdown, CLASS_NAME_OPEN);\n }, 0);\n }\n\n _updateDropdownWidth() {\n const inputWidth = this._input.offsetWidth;\n Manipulator.addStyle(this._dropdownContainer, { width: `${inputWidth}px` });\n }\n\n _setFirstActiveOption() {\n const options = this._getNavigationOptions();\n const currentActive = this._activeOption;\n\n if (currentActive) {\n currentActive.removeActiveStyles();\n }\n\n const firstSelected = this.multiple\n ? this._selectionModel.selections[0]\n : this._selectionModel.selection;\n\n if (firstSelected) {\n this._activeOption = firstSelected;\n firstSelected.setActiveStyles();\n this._activeOptionIndex = options.findIndex((option) => option === firstSelected);\n } else {\n this._activeOption = null;\n this._activeOptionIndex = -1;\n }\n }\n\n _setInputActiveStyles() {\n Manipulator.addClass(this._input, CLASS_NAME_FOCUSED);\n }\n\n _listenToWindowResize() {\n this._windowResizeHandler = this._handleWindowResize.bind(this);\n\n EventHandler.on(window, 'resize', this._windowResizeHandler);\n }\n\n _handleWindowResize() {\n if (this._dropdownContainer) {\n this._updateDropdownWidth();\n this._popper.forceUpdate();\n }\n }\n\n _listenToSelectSearch() {\n EventHandler.on(this.filterInput, 'input', this._inputHandler);\n }\n\n _handleInput(event) {\n const searchTerm = event.target.value;\n const debounceTime = this._config.filterDebounce;\n\n const searchEvent = EventHandler.trigger(this._element, EVENT_SEARCH, { value: searchTerm });\n\n if (searchEvent.defaultPrevented) {\n return;\n }\n\n this._debounceFilter(searchTerm, debounceTime);\n }\n\n _debounceFilter(searchTerm, debounceTime) {\n if (this._debounceTimeoutId) {\n clearTimeout(this._debounceTimeoutId);\n }\n\n this._debounceTimeoutId = setTimeout(() => {\n this._filterOptions(searchTerm);\n }, debounceTime);\n }\n\n _filterOptions(searchTerm) {\n const filtered = [];\n const filterFn = this._config.filterFn;\n\n this._optionsToRender.forEach((option) => {\n const isOptionGroup = option.hasOwnProperty('options');\n const isValidOption =\n !isOptionGroup && option.label.toLowerCase().includes(searchTerm.toLowerCase());\n const group = {};\n\n if (isOptionGroup) {\n group.label = option.label;\n group.options = this._filter(searchTerm, option.options);\n\n if (group.options.length > 0) {\n filtered.push(group);\n }\n }\n\n if (filterFn && !isOptionGroup) {\n const customSearchResult = filterFn(searchTerm, option);\n if (customSearchResult) {\n filtered.push(option);\n }\n } else if (isValidOption) {\n filtered.push(option);\n }\n });\n\n const hasNoResultsText = this._config.noResultText !== '';\n const hasFilteredOptions = filtered.length !== 0;\n\n if (hasFilteredOptions) {\n this._updateOptionsListTemplate(filtered);\n this._popper.forceUpdate();\n this._filteredOptionsList = this._getPlainOptions(filtered);\n\n if (this.hasSelectAll) {\n this._updateSelectAllState();\n }\n\n this._setFirstActiveOption();\n } else if (!hasFilteredOptions && hasNoResultsText) {\n const noResultsTemplate = this._getNoResultTemplate();\n this.optionsWrapper.innerHTML = noResultsTemplate;\n }\n }\n\n _updateOptionsListTemplate(optionsToRender) {\n const optionsWrapperContent =\n SelectorEngine.findOne(SELECTOR_OPTIONS_LIST, this._dropdownContainer) ||\n SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._dropdownContainer);\n\n const optionsListTemplate = getOptionsListTemplate(\n optionsToRender,\n this._selectAllOption,\n this._config,\n this._label\n );\n this.optionsWrapper.removeChild(optionsWrapperContent);\n this.optionsWrapper.appendChild(optionsListTemplate);\n }\n\n _getNoResultTemplate() {\n return `<div class=\"select-no-results\" style=\"height: ${this._config.optionHeight}px\">${this._config.noResultText}</div>`;\n }\n\n _filter(value, options) {\n const filterFn = this._config.filterFn;\n if (filterFn) {\n return options.filter((option) => filterFn(value, option) && !option.hidden);\n }\n const filterValue = value.toLowerCase();\n return options.filter(\n (option) => option.label.toLowerCase().includes(filterValue) && !option.hidden\n );\n }\n\n _listenToDropdownKeydown() {\n this._dropdownKeydownHandler = this._handleOpenKeydown.bind(this);\n\n EventHandler.on(this.dropdown, 'keydown', this._dropdownKeydownHandler);\n }\n\n _listenToOutsideClick() {\n this._outsideClickHandler = this._handleOutSideClick.bind(this);\n\n EventHandler.on(document, 'click', this._outsideClickHandler);\n }\n\n _handleOutSideClick(event) {\n const isSelectContent = this._wrapper && this._wrapper.contains(event.target);\n const isDropdown = event.target === this._dropdownContainer;\n const isDropdownContent =\n this._dropdownContainer && this._dropdownContainer.contains(event.target);\n\n let isButton;\n if (!this._toggleButton) {\n this._elementToggle = SelectorEngine.find(SELECTOR_TOGGLE);\n }\n if (this._elementToggle) {\n this._elementToggle.forEach((button) => {\n const attributes = Manipulator.getDataAttribute(button, 'toggle');\n if (attributes === this._element.id || this._element.classList.contains(attributes)) {\n this._toggleButton = button;\n isButton = this._toggleButton.contains(event.target);\n }\n });\n }\n\n if (!isSelectContent && !isDropdown && !isDropdownContent && !isButton) {\n this.close();\n }\n }\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (!this._isOpen || closeEvent.defaultPrevented) {\n return;\n }\n\n if (this._config.filter) {\n EventHandler.off(this.filterInput, 'input', this._inputHandler);\n }\n\n if (this._config.filter && this.hasSelectAll) {\n this._resetFilterState();\n this._updateOptionsListTemplate(this._optionsToRender);\n if (this._config.multiple) {\n this._updateSelectAllState();\n }\n }\n\n this._removeDropdownEvents();\n\n Manipulator.removeClass(this.dropdown, CLASS_NAME_OPEN);\n\n setTimeout(() => {\n Manipulator.removeClass(this._input, CLASS_NAME_FOCUSED);\n if (this._label && !this.hasSelection) {\n Manipulator.removeClass(this._label, CLASS_NAME_ACTIVE);\n Manipulator.removeClass(this._input, CLASS_NAME_ACTIVE);\n }\n this._updateLabelPositionWhileClosing();\n }, 0);\n\n setTimeout(() => {\n if (this._container && this._dropdownContainer.parentNode === this._container) {\n this._container.removeChild(this._dropdownContainer);\n }\n this._popper.destroy();\n this._isOpen = false;\n this._input.setAttribute('aria-expanded', false);\n EventHandler.off(this.dropdown, 'transitionend');\n EventHandler.trigger(this._element, EVENT_CLOSED);\n }, this._animationTransitionTime);\n }\n\n _resetFilterState() {\n this.filterInput.value = '';\n this._filteredOptionsList = null;\n }\n\n _removeDropdownEvents() {\n EventHandler.off(document, 'click', this._outsideClickHandler);\n\n if (this._config.filter) {\n EventHandler.off(this.dropdown, 'keydown');\n }\n\n EventHandler.off(this.optionsWrapper, 'click');\n }\n\n _addMutationObserver() {\n this._mutationObserver = new MutationObserver(() => {\n if (this._wrapper) {\n this._updateSelections();\n this._updateDisabledState();\n }\n });\n\n this._observeMutationObserver();\n }\n\n _updateSelections() {\n this._plainOptions = this._getPlainOptions(this._optionsToRender);\n this._selectionModel.clear();\n this._setDefaultSelections();\n this._updateInputValue();\n this._updateFakeLabelPosition();\n this._updateLabelPosition();\n this._updateClearButtonVisibility();\n\n if (this.hasSelectAll) {\n this._updateSelectAllState();\n }\n\n const hasFilterValue = this._config.filter && this.filterInput && this.filterInput.value;\n\n if (this._isOpen && !hasFilterValue) {\n this._updateOptionsListTemplate(this._optionsToRender);\n this._setFirstActiveOption();\n } else if (this._isOpen && hasFilterValue) {\n this._filterOptions(this.filterInput.value);\n this._setFirstActiveOption();\n } else {\n this._dropdownContainer = getDropdownTemplate(\n this._dropdownContainerId,\n this._config,\n this._input.offsetWidth,\n this._dropdownHeight,\n this._selectAllOption,\n this._optionsToRender,\n this._customContent\n );\n }\n }\n\n _updateDisabledState() {\n const input = SelectorEngine.findOne(SELECTOR_INPUT, this._wrapper);\n\n if (this._element.hasAttribute('disabled')) {\n this._config.disabled = true;\n input.setAttribute('disabled', '');\n } else {\n this._config.disabled = false;\n input.removeAttribute('disabled');\n }\n }\n\n _observeMutationObserver() {\n if (!this._mutationObserver) {\n return;\n }\n\n this._mutationObserver.observe(this._element, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n\n _disconnectMutationObserver() {\n if (this._mutationObserver) {\n this._mutationObserver.disconnect();\n this._mutationObserver = null;\n }\n }\n\n _createSelectAllOption() {\n const id = this._selectAllId;\n const nativeOption = null;\n const multiple = true;\n const value = 'select-all';\n const label = this._config.selectAllLabel;\n const selected = allOptionsSelected(this.options);\n const disabled = false;\n const hidden = false;\n const secondaryText = null;\n const groupId = null;\n const icon = null;\n\n return new SelectOption(\n id,\n nativeOption,\n multiple,\n value,\n label,\n selected,\n disabled,\n hidden,\n secondaryText,\n groupId,\n icon\n );\n }\n\n dispose() {\n this._disconnectMutationObserver();\n this._removeComponentEvents();\n\n this._disconnectMutationObserver();\n\n this._destroyMaterialSelect();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n _removeComponentEvents() {\n EventHandler.off(this.input, 'click');\n EventHandler.off(this.wrapper, this._wrapperKeydownHandler);\n EventHandler.off(this.clearButton, 'click');\n EventHandler.off(this.clearButton, 'keydown');\n EventHandler.off(window, 'resize', this._windowResizeHandler);\n }\n\n _destroyMaterialSelect() {\n if (this._isOpen) {\n this.close();\n }\n\n this._destroyMaterialTemplate();\n }\n\n _destroyMaterialTemplate() {\n const wrapperParent = this._wrapper.parentNode;\n const labels = SelectorEngine.find('label', this._wrapper);\n\n wrapperParent.appendChild(this._element);\n labels.forEach((label) => {\n wrapperParent.appendChild(label);\n });\n\n labels.forEach((label) => {\n Manipulator.removeClass(label, CLASS_NAME_ACTIVE);\n });\n Manipulator.removeClass(this._element, CLASS_NAME_INITIALIZED);\n\n // restore custom content removed on init\n if (this._customContent) {\n wrapperParent.appendChild(this._customContent);\n }\n\n wrapperParent.removeChild(this._wrapper);\n }\n\n setValue(value) {\n // Preventing from bugging dropdown while search input was left with some text\n if (this._config.filter && this.filterInput.value) {\n this._resetFilterState();\n EventHandler.trigger(this.filterInput, 'input');\n }\n\n this.options\n .filter((option) => option.selected)\n .forEach((selection) => (selection.nativeOption.selected = false));\n\n const isMultipleValue = Array.isArray(value);\n\n if (!this.multiple) {\n const currentSelected = this._selectionModel.selections[0];\n if (currentSelected) {\n this._singleOptionClear(currentSelected);\n }\n const option = this.options.find((option) => option.value === value);\n option.select();\n }\n\n if (isMultipleValue) {\n value.forEach((selectionValue) => {\n this._selectByValue(selectionValue);\n });\n } else {\n this._selectByValue(value);\n }\n\n this._updateSelections();\n this._emitValueChangeEvent(value);\n this._updateOutlineInput();\n }\n\n _selectByValue(value) {\n const correspondingOption = this.options.find((option) => option.value === value);\n if (!correspondingOption) {\n return false;\n }\n correspondingOption.nativeOption.selected = true;\n return true;\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Select(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Select;\n","import paginationTemplate, { createPaginationButtons } from './templates';\nimport SelectorEngine from '../../../mdb/dom/selector-engine';\nimport EventHandler from '../../../mdb/dom/event-handler';\nimport Select from '../../select/index';\n\nconst SELECTOR_PAGINATION_RIGHT = '.datatable-pagination-right';\nconst SELECTOR_PAGINATION_LEFT = '.datatable-pagination-left';\nconst SELECTOR_PAGINATION_START = '.datatable-pagination-start';\nconst SELECTOR_PAGINATION_END = '.datatable-pagination-end';\n\nconst SELECTOR_PAGINATION_NAV = '.datatable-pagination-nav';\nconst SELECTOR_PAGINATION = '.datatable-pagination';\nconst SELECTOR_PAGINATION_BUTTONS = '.datatable-pagination-buttons';\n\nconst SELECTOR_SELECT = '.datatable-select';\nconst SELECTOR_SELECT_LABEL = '.datatable-select-text';\n\nconst EVENT_PAGINATION_CHANGE = 'paginationChange.mdb.datatable';\n\nconst EVENT_VALUE_CHANGED_SELECT = 'valueChanged.mdb.select';\n\nexport default class DatatablePagination {\n constructor(element, options) {\n this._element = element;\n\n this._options = options;\n\n this._left = null;\n this._right = null;\n this._start = null;\n this._end = null;\n\n this._select = null;\n this._selectInstance = null;\n\n this._pagination = null;\n\n this._activePage = null;\n this._total = null;\n this._entries = null;\n\n this._setPaginationValues();\n }\n\n // Getters\n\n get options() {\n return {\n entries: this._options.entries,\n entriesOptions: this._options.entriesOptions,\n fullPagination: this._options.fullPagination,\n rowsText: this._options.rowsText,\n ofText: this._options.ofText,\n allText: this._options.allText,\n };\n }\n\n get activePage() {\n return this._activePage;\n }\n\n get pages() {\n if (this._optionToLowerCase(this._entries) === 'all') {\n return 1;\n }\n\n return Math.ceil(this._total / this._entries);\n }\n\n get pagination() {\n return {\n page: this._activePage,\n entries: this._entries,\n total: this._total,\n };\n }\n\n get navigationText() {\n const entries =\n this._optionToLowerCase(this._options.entries) === 'all' ? this._total : this._entries;\n const { ofText } = this._options;\n const firstVisibleEntry = this._activePage * Number(entries);\n const lastVisibleEntry = Math.min(firstVisibleEntry + Number(entries), this._total);\n\n if (this._total === 0) {\n return `0 ${ofText} 0`;\n }\n\n if (this._optionToLowerCase(this._entries) === 'all') {\n return `1 - ${this._total} ${ofText} ${this._total}`;\n }\n\n return `${firstVisibleEntry + 1} - ${lastVisibleEntry} ${ofText} ${this._total}`;\n }\n\n // Public\n appendPagination() {\n this._appendPagination();\n this._setupPagination();\n this._setupPaginationSelect();\n this._selectInstance.setValue(String(this._entries));\n this._toggleDisableState();\n }\n\n updatePagination() {\n this._setPaginationValues();\n\n this._removeEventListeners();\n this._updatePaginationButtonsTemplate();\n this._setupPagination();\n this._setNavigationText();\n this._setSelectLabel();\n this._selectInstance.setValue(String(this._entries));\n }\n\n removePagination() {\n this._disposePaginationSelect();\n this._removeEventListeners();\n\n const paginationEl = SelectorEngine.findOne(SELECTOR_PAGINATION, this._element);\n if (paginationEl) {\n paginationEl.remove();\n }\n this._pagination = null;\n }\n\n // Private\n _setNavigationText() {\n const nav = SelectorEngine.findOne(SELECTOR_PAGINATION_NAV, this._pagination);\n nav.innerHTML = this.navigationText;\n }\n\n _setSelectLabel() {\n const selectLabel = SelectorEngine.findOne(SELECTOR_SELECT_LABEL, this._pagination);\n selectLabel.innerHTML = this._options.rowsText;\n }\n\n _updatePaginationButtonsTemplate() {\n const buttonsHTML = createPaginationButtons(this._options.fullPagination);\n const paginationButtons = SelectorEngine.findOne(SELECTOR_PAGINATION_BUTTONS, this._pagination);\n paginationButtons.outerHTML = buttonsHTML;\n }\n\n _setPaginationValues() {\n const { pagination } = this._options;\n this._activePage = pagination.page || 0;\n this._total = pagination.total || 0;\n this._entries = pagination.entries || this._options.entries;\n }\n\n _appendPagination() {\n const paginationEl = paginationTemplate(\n this.options,\n this._options.loading,\n this.navigationText\n );\n\n this._element.insertAdjacentHTML('beforeend', paginationEl);\n this._pagination = SelectorEngine.findOne(SELECTOR_PAGINATION, this._element);\n }\n\n _optionToLowerCase(option) {\n return typeof option === 'string' ? option.toLowerCase() : option;\n }\n\n _toggleDisableState() {\n if (this._options.pagination === false) {\n return;\n }\n\n if (this._activePage === 0 || this._options.loading) {\n this._left.setAttribute('disabled', true);\n\n if (this._options.fullPagination) {\n this._start.setAttribute('disabled', true);\n }\n } else {\n this._left.removeAttribute('disabled');\n\n if (this._options.fullPagination) {\n this._start.removeAttribute('disabled');\n }\n }\n\n if (this._activePage === this.pages - 1 || this._options.loading || this.pages === 0) {\n this._right.setAttribute('disabled', true);\n\n if (this._options.fullPagination) {\n this._end.setAttribute('disabled', true);\n }\n } else {\n this._right.removeAttribute('disabled');\n\n if (this._options.fullPagination) {\n this._end.removeAttribute('disabled');\n }\n }\n }\n\n _removeEventListeners() {\n EventHandler.off(this._right, 'click');\n\n EventHandler.off(this._left, 'click');\n\n if (this._options.fullPagination) {\n EventHandler.off(this._start, 'click');\n\n EventHandler.off(this._end, 'click');\n }\n }\n\n _setupPagination() {\n this._right = SelectorEngine.findOne(SELECTOR_PAGINATION_RIGHT, this._element);\n this._left = SelectorEngine.findOne(SELECTOR_PAGINATION_LEFT, this._element);\n\n const paginationButtons = [\n { button: this._right, action: () => (this._activePage += 1) },\n { button: this._left, action: () => (this._activePage -= 1) },\n ];\n\n if (this._options.fullPagination) {\n this._start = SelectorEngine.findOne(SELECTOR_PAGINATION_START, this._element);\n this._end = SelectorEngine.findOne(SELECTOR_PAGINATION_END, this._element);\n\n paginationButtons.push(\n { button: this._start, action: () => (this._activePage = 0) },\n { button: this._end, action: () => (this._activePage = this.pages - 1) }\n );\n }\n\n paginationButtons.forEach(({ button, action }) => {\n if (button) {\n EventHandler.on(button, 'click', () => {\n action();\n EventHandler.trigger(this._element, EVENT_PAGINATION_CHANGE, {\n pagination: this.pagination,\n });\n });\n }\n });\n }\n\n _setupPaginationSelect() {\n if (this._selectInstance) {\n this._selectInstance.dispose();\n }\n\n this._select = SelectorEngine.findOne(SELECTOR_SELECT, this._element);\n\n this._selectInstance = new Select(this._select);\n\n EventHandler.on(this._select, EVENT_VALUE_CHANGED_SELECT, (e) => {\n if (this._entries !== e.value) {\n this._entries = e.value;\n\n EventHandler.trigger(this._element, EVENT_PAGINATION_CHANGE, {\n pagination: this.pagination,\n });\n }\n });\n }\n\n _disposePaginationSelect() {\n EventHandler.off(this._select, EVENT_VALUE_CHANGED_SELECT);\n\n if (this._selectInstance) {\n this._selectInstance.dispose();\n }\n }\n}\n","import PerfectScrollbar from '../../mdb/perfect-scrollbar';\nimport { typeCheckConfig } from '../../mdb/util/index';\nimport Data from '../../mdb/dom/data';\nimport EventHandler, { EventHandlerMulti } from '../../mdb/dom/event-handler';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport tableTemplate from './html/table'; //eslint-disable-line\nimport { search, sort, paginate } from './util';\nimport DatatablePagination from './pagination/index';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'datatable';\nconst DATA_KEY = `mdb.${NAME}`;\n\nconst CLASS_DATATABLE = 'datatable';\nconst CLASS_FIXED_CELL = 'fixed-cell';\n\nconst SELECTOR_BODY = '.datatable-inner';\nconst SELECTOR_CELL = 'td';\nconst SELECTOR_HEADER = '.datatable-header th';\nconst SELECTOR_HEADER_CHECKBOX = '.datatable-header-checkbox';\nconst SELECTOR_HEADER_FILTER_INPUT = '.datatable-header-filter-input';\n\nconst SELECTOR_SORT_ICON = '.datatable-sort-icon';\nconst SELECTOR_ROW = '.datatable-body tr';\nconst SELECTOR_ROW_CHECKBOX = '.datatable-row-checkbox';\n\nconst SELECTOR_PAGINATION = '.datatable-pagination';\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_SELECTED = `rowSelected${EVENT_KEY}`;\nconst EVENT_RENDER = `render${EVENT_KEY}`;\nconst EVENT_ROW_CLICKED = `rowClicked${EVENT_KEY}`;\nconst EVENT_UPDATE = `update${EVENT_KEY}`;\n\nconst EVENT_VALUE_CHANGED_SELECT = 'valueChanged.mdb.select';\nconst EVENT_PAGINATION_CHANGE = 'paginationChange.mdb.datatable';\nconst EVENT_SORT_CHANGE = 'sortChange.mdb.datatable';\nconst EVENT_COLUMN_SEARCH = 'columnSearch.mdb.datatable';\n\nconst TYPE_OPTIONS = {\n bordered: 'boolean',\n borderless: 'boolean',\n borderColor: '(string|null)',\n clickableRows: 'boolean',\n color: '(string|null)',\n defaultValue: 'string',\n edit: 'boolean',\n entries: '(number|string)',\n entriesOptions: 'array',\n fullPagination: 'boolean',\n hover: 'boolean',\n loading: 'boolean',\n loadingMessage: 'string',\n maxWidth: '(null|number|string)',\n maxHeight: '(null|number|string)',\n multi: 'boolean',\n noFoundMessage: 'string',\n pagination: 'boolean|object',\n selectable: 'boolean',\n serverSide: 'boolean',\n sm: 'boolean',\n sortField: '(null|string)',\n sortOrder: '(null|string)',\n loaderClass: 'string',\n fixedHeader: 'boolean',\n striped: 'boolean',\n rowsText: 'string',\n ofText: 'string',\n allText: 'string',\n forceSort: 'boolean',\n columnSearch: 'boolean',\n};\n\nconst TYPE_COLUMN_FIELDS = {\n label: 'string',\n field: 'string',\n fixed: '(boolean|string)',\n format: '(function|null)',\n width: '(number|null)',\n sort: 'boolean',\n};\n\nconst DEFAULT_OPTIONS = {\n bordered: false,\n borderless: false,\n borderColor: null,\n clickableRows: false,\n color: null,\n defaultValue: '-',\n edit: false,\n entries: 10,\n entriesOptions: [10, 25, 50, 200],\n fixedHeader: false,\n fullPagination: false,\n hover: false,\n loaderClass: 'bg-primary',\n loading: false,\n loadingMessage: 'Loading results...',\n maxWidth: null,\n maxHeight: null,\n multi: false,\n noFoundMessage: 'No matching results found',\n pagination: true,\n selectable: false,\n serverSide: false,\n sm: false,\n sortField: null,\n sortOrder: 'asc',\n striped: false,\n rowsText: 'Rows per page:',\n ofText: 'of',\n allText: 'All',\n forceSort: false,\n columnSearch: false,\n};\n\nconst DEFAULT_COLUMN = {\n label: '',\n field: '',\n fixed: false,\n format: null,\n width: null,\n sort: true,\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Datatable extends BaseComponent {\n constructor(element, data = {}, options = {}) {\n super(element);\n\n this._options = this._getOptions(options);\n\n this._sortReverse = false;\n\n this._activePage = 0;\n\n this._search = '';\n this._searchColumn = null;\n\n this._pagination = new DatatablePagination(element, this._options);\n\n this._selected = [];\n this._checkboxes = null;\n this._headerCheckbox = null;\n this._columnSearchInputs = null;\n this._rows = this._getRows(data.rows);\n this._columns = this._getColumns(data.columns);\n this._tableId = null;\n this._hasFixedColumns = null;\n\n if (this._element) {\n this._perfectScrollbar = null;\n this._setup();\n\n this._enforceOptionDependency();\n\n // Preventing from disappearing borders in datatables with fixed columns\n this._hasFixedColumns = this._columns.some((column) => column.hasOwnProperty('fixed'));\n if (this._hasFixedColumns) {\n this._listenToWindowResize();\n }\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get columns() {\n return this._columns.map((column, index) => {\n let template = {\n ...DEFAULT_COLUMN,\n field: `field_${index}`,\n columnIndex: index,\n };\n\n if (typeof column === 'string') {\n template.label = column;\n } else if (typeof column === 'object') {\n template = {\n ...template,\n ...column,\n };\n }\n\n typeCheckConfig('column', template, TYPE_COLUMN_FIELDS);\n\n return template;\n });\n }\n\n get rows() {\n return this._rows.map((row, index) => {\n const output = {\n rowIndex: index,\n };\n\n if (Array.isArray(row)) {\n this.columns.forEach((column, i) => {\n if (row[i] === 0) {\n output[column.field] = row[i];\n } else {\n output[column.field] = row[i] || this._options.defaultValue;\n }\n });\n } else if (typeof row === 'object') {\n this.columns.forEach((column) => {\n if (row[column.field] === 0) {\n output[column.field] = row[column.field];\n } else {\n output[column.field] = row[column.field] || this._options.defaultValue;\n }\n });\n }\n\n return output;\n });\n }\n\n get searchResult() {\n return search(this.rows, this._search, this._searchColumn);\n }\n\n get computedRows() {\n let result = [...this.searchResult];\n\n this._pagination._total = result.length;\n\n if (this._options.sortOrder) {\n result = sort({\n rows: result,\n field: this._options.sortField,\n order: this._options.sortOrder,\n });\n }\n\n if (this._options.pagination) {\n const entries =\n this._optionToLowerCase(this._options.entries) === 'all'\n ? result.length\n : this._options.entries;\n\n result = paginate({\n rows: result,\n entries,\n activePage: this._activePage,\n });\n }\n\n return result;\n }\n\n get pages() {\n if (this._optionToLowerCase(this._options.entries) === 'all') {\n return 1;\n }\n\n return Math.ceil(this.searchResult.length / this._options.entries);\n }\n\n get pagination() {\n return this._pagination.pagination;\n }\n\n get classNames() {\n return [\n CLASS_DATATABLE,\n this._options.color,\n this._options.borderColor && `border-${this._options.borderColor}`,\n this._options.hover && 'datatable-hover',\n this._options.bordered && 'datatable-bordered',\n this._options.borderless && 'datatable-borderless',\n this._options.sm && 'datatable-sm',\n this._options.striped && 'datatable-striped',\n this._options.loading && 'datatable-loading',\n this._options.clickableRows && 'datatable-clickable-rows',\n ].filter((className) => className);\n }\n\n get tableOptions() {\n return {\n columns: this.columns,\n rows: this._options.serverSide ? this.rows : this.computedRows,\n noFoundMessage: this._options.noFoundMessage,\n edit: this._options.edit,\n loading: this._options.loading,\n loaderClass: this._options.loaderClass,\n loadingMessage: this._options.loadingMessage,\n selectable: this._options.selectable,\n multi: this._options.multi,\n forceSort: this._options.forceSort,\n columnSearch: this._options.columnSearch,\n };\n }\n\n // Public\n\n update(data, options = {}) {\n if (data && data.rows) {\n this._rows = data.rows;\n }\n\n if (data && data.columns) {\n this._columns = data.columns;\n }\n\n this._clearClassList(options);\n\n this._options = this._getOptions({\n ...this._options,\n ...options,\n });\n this._pagination._options = this._options;\n\n this._setup();\n\n this._renderRows();\n }\n\n dispose() {\n this._removeEventListeners();\n if (this._pagination) {\n this._pagination.removePagination();\n }\n\n this._perfectScrollbar.destroy();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n search(string, column) {\n this._search = string;\n\n this._searchColumn = column;\n\n this._activePage = 0;\n this._pagination._activePage = this._activePage;\n\n this._renderRows();\n\n if (this._options.maxHeight) {\n this._perfectScrollbar.element.scrollTop = 0;\n\n this._perfectScrollbar.update();\n }\n }\n\n sort(column, order = 'asc') {\n this._options.sortOrder = order;\n\n if (typeof column === 'string') {\n this._options.sortField = this.columns.find((header) => header.field === column).field;\n } else if (typeof column === 'number') {\n this._options.sortField = this.columns[column].field;\n } else {\n this._options.sortField = column.field;\n }\n\n const icon = SelectorEngine.findOne(\n `i[data-mdb-sort=\"${this._options.sortField}\"]`,\n this._element\n );\n\n this._setActiveSortIcon(icon);\n\n if (this._options.serverSide) {\n return;\n }\n\n this._renderRows();\n }\n\n setActivePage(index) {\n if (index < this.pages) {\n this._changeActivePage(index);\n }\n }\n\n // Private\n\n _changeActivePage(index) {\n this._activePage = index;\n this._pagination._activePage = this._activePage;\n\n this._pagination._toggleDisableState();\n\n this._renderRows();\n }\n\n _enforceOptionDependency() {\n if (\n this._options.serverSide &&\n this._options.pagination &&\n typeof this._options.pagination !== 'object'\n ) {\n console.warn(\n 'A pagination object is required when serverSide is enabled and pagination is intended to be used.'\n );\n }\n }\n\n _optionToLowerCase(option) {\n return typeof option === 'string' ? option.toLowerCase() : option;\n }\n\n _clearClassList(options) {\n if (this._options.color && options.color) {\n Manipulator.removeClass(this._element, this._options.color);\n }\n\n if (this._options.borderColor && options.borderColor) {\n Manipulator.removeClass(this._element, `border-${this._options.borderColor}`);\n }\n\n ['hover', 'bordered', 'borderless', 'sm', 'striped', 'loading'].forEach((option) => {\n if (this._options[option] && !options[option]) {\n Manipulator.removeClass(this._element, `datatable-${option}`);\n }\n });\n }\n\n _emitSelectEvent() {\n EventHandler.trigger(this._element, EVENT_SELECTED, {\n selectedRows: this.rows.filter((row) => this._selected.indexOf(row.rowIndex) !== -1),\n selectedIndexes: this._selected,\n allSelected: this._selected.length === this.rows.length,\n });\n }\n\n _getRows(rows = []) {\n const body = SelectorEngine.findOne('tbody', this._element);\n\n if (!body) {\n return rows;\n }\n\n const tableRows = SelectorEngine.find('tr', body).map((row) => {\n return SelectorEngine.find('td', row).map((cell) => cell.innerHTML);\n });\n\n return [...tableRows, ...rows];\n }\n\n _getColumns(columns = []) {\n const head = SelectorEngine.findOne('thead', this._element);\n\n if (!head) {\n return columns;\n }\n\n const headerRow = SelectorEngine.findOne('tr', head);\n\n const headers = SelectorEngine.find('th', headerRow).map((cell) => ({\n label: cell.innerHTML,\n ...Manipulator.getDataAttributes(cell),\n }));\n\n return [...headers, ...columns];\n }\n\n _getCSSValue(size) {\n if (typeof size === 'string') {\n return size;\n }\n\n return `${size}px`;\n }\n\n _getOptions(options) {\n const config = {\n ...DEFAULT_OPTIONS,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n\n const entriesOptions = Manipulator.getDataAttributes(this._element).entriesOptions;\n const entriesOptionsAsArray = Array.isArray(config.entriesOptions)\n ? config.entriesOptions\n : JSON.parse(entriesOptions.replaceAll(\"'\", '\"')); //eslint-disable-line\n\n config.entriesOptions = entriesOptionsAsArray;\n\n typeCheckConfig(NAME, config, TYPE_OPTIONS);\n return config;\n }\n\n _setActiveRows() {\n SelectorEngine.find(SELECTOR_ROW, this._element).forEach((row) => {\n if (this._selected.includes(Manipulator.getDataAttribute(row, 'index'))) {\n Manipulator.addClass(row, 'active');\n } else {\n Manipulator.removeClass(row, 'active');\n }\n });\n }\n\n _setEntries(e) {\n this._options = this._getOptions({ ...this._options, entries: e.target.value });\n\n this._pagination._options = this._options;\n\n if (this._activePage > this.pages - 1) {\n this._activePage = this.pages - 1;\n this._pagination._activePage = this._activePage;\n }\n\n this._pagination._toggleDisableState();\n\n this._renderRows();\n }\n\n _setSelected() {\n SelectorEngine.find(SELECTOR_ROW_CHECKBOX, this._element).forEach((checkbox) => {\n const index = Manipulator.getDataAttribute(checkbox, 'rowIndex');\n\n checkbox.checked = this._selected.includes(index);\n });\n\n this._setActiveRows();\n }\n\n _setActiveSortIcon(active) {\n SelectorEngine.find(SELECTOR_SORT_ICON, this._element).forEach((icon) => {\n const angle = this._options.sortOrder === 'desc' && icon === active ? 180 : 0;\n\n Manipulator.style(icon, {\n transform: `rotate(${angle}deg)`,\n });\n\n if (icon === active && this._options.sortOrder) {\n Manipulator.addClass(icon, 'active');\n } else {\n Manipulator.removeClass(icon, 'active');\n }\n });\n }\n\n _setClassNames() {\n this.classNames.forEach((className) => {\n Manipulator.addClass(this._element, className);\n });\n }\n\n _setup() {\n this._setClassNames();\n\n this._renderTable();\n\n if (this._options.edit) {\n this._setupEditable();\n }\n\n if (this._options.clickableRows) {\n this._setupClickableRows();\n }\n\n if (this._options.selectable) {\n this._setupSelectable();\n }\n\n if (this._options.columnSearch) {\n this._setupColumnSearch();\n }\n\n this._setupScroll();\n\n this._setupSort();\n }\n\n _setupPagination() {\n const paginationEl = SelectorEngine.findOne(SELECTOR_PAGINATION, this._element);\n if (!paginationEl) {\n this._pagination.appendPagination();\n this._setupPaginationListeners();\n } else {\n this._pagination.updatePagination();\n }\n }\n\n _listenToWindowResize() {\n this._windowResizeHandler = this._handleWindowResize.bind(this);\n\n EventHandlerMulti.on(window, 'resize DOMContentLoaded', this._windowResizeHandler);\n }\n\n _handleWindowResize() {\n this._renderRows();\n }\n\n _setupClickableRows() {\n SelectorEngine.find(SELECTOR_ROW, this._element).forEach((row) => {\n const index = Manipulator.getDataAttribute(row, 'index');\n\n EventHandler.on(row, 'click', (e) => {\n if (!SelectorEngine.matches(e.target, SELECTOR_ROW_CHECKBOX)) {\n EventHandler.trigger(this._element, EVENT_ROW_CLICKED, { index, row: this.rows[index] });\n }\n });\n });\n }\n\n _setupEditable() {\n SelectorEngine.find(SELECTOR_ROW, this._element).forEach((row) => {\n const index = Manipulator.getDataAttribute(row, 'index');\n\n SelectorEngine.find(SELECTOR_CELL, row).forEach((cell) => {\n EventHandler.on(cell, 'input', (e) => this._updateRow(e, index));\n EventHandler.on(cell, 'focus', () => {\n cell.classList.add('editable-active');\n });\n EventHandler.on(cell, 'blur', () => {\n cell.classList.remove('editable-active');\n });\n });\n });\n }\n\n _setupScroll() {\n const datatableBody = SelectorEngine.findOne(SELECTOR_BODY, this._element);\n\n const style = {\n overflow: 'auto',\n position: 'relative',\n };\n\n if (this._options.maxHeight) {\n style.maxHeight = this._getCSSValue(this._options.maxHeight);\n }\n\n if (this._options.maxWidth) {\n const width = this._getCSSValue(this._options.maxWidth);\n\n style.maxWidth = width;\n\n Manipulator.style(this._element, { maxWidth: width });\n }\n\n Manipulator.style(datatableBody, style);\n\n if (this._options.fixedHeader) {\n let headers = SelectorEngine.find(SELECTOR_HEADER, this._element);\n\n if (this._options.selectable) {\n headers = headers.filter((header, index) => {\n Manipulator.addClass(header, CLASS_FIXED_CELL);\n\n if (this._options.color) {\n Manipulator.addClass(header, this._options.color);\n }\n\n return index !== 0;\n });\n }\n\n headers.forEach((header, i) => {\n Manipulator.addClass(header, CLASS_FIXED_CELL);\n\n if (this.columns[i].fixed) {\n Manipulator.addStyle(header, { zIndex: 4 });\n }\n\n if (this._options.color) {\n Manipulator.addClass(header, this._options.color);\n }\n });\n }\n\n this._perfectScrollbar = new PerfectScrollbar(datatableBody);\n }\n\n _setupSort() {\n SelectorEngine.find(SELECTOR_SORT_ICON, this._element).forEach((icon) => {\n const field = Manipulator.getDataAttribute(icon, 'sort');\n const [header] = SelectorEngine.parents(icon, 'div');\n Manipulator.style(header, { cursor: 'pointer' });\n\n if (field === this._options.sortField) {\n this._setActiveSortIcon(icon);\n }\n\n EventHandler.on(header, 'click', () => {\n if (this._options.sortField === field && this._options.sortOrder === 'asc') {\n this._options.sortOrder = 'desc';\n } else if (this._options.sortField === field && this._options.sortOrder === 'desc') {\n this._options.sortOrder = this._options.forceSort ? 'asc' : null;\n } else {\n this._options.sortOrder = 'asc';\n }\n\n this._options.sortField = field;\n\n EventHandler.trigger(this._element, EVENT_SORT_CHANGE, {\n sorting: {\n field,\n columnIndex: this._getColumnIndex(field),\n order: this._options.sortOrder,\n },\n });\n\n if (this._options.serverSide) {\n return;\n }\n\n this._renderRows();\n\n this._setActiveSortIcon(icon);\n });\n });\n }\n\n _setupColumnSearch() {\n this._columnSearchInputs = SelectorEngine.find(SELECTOR_HEADER_FILTER_INPUT, this._element);\n\n this._columnSearchInputs.forEach((input) => {\n EventHandler.on(input, 'input', (e) => {\n const value = e.target.value;\n const field = Manipulator.getDataAttribute(input, 'field');\n const columnIndex = this._getColumnIndex(field);\n\n EventHandler.trigger(this._element, EVENT_COLUMN_SEARCH, {\n value,\n field,\n columnIndex,\n });\n\n if (this._options.serverSide) {\n return;\n }\n\n this.search(value, field);\n });\n });\n }\n\n _getColumnIndex(field) {\n return this.columns.findIndex((column) => column.field === field);\n }\n\n _setupSelectable() {\n this._checkboxes = SelectorEngine.find(SELECTOR_ROW_CHECKBOX, this._element);\n\n this._headerCheckbox = SelectorEngine.findOne(SELECTOR_HEADER_CHECKBOX, this._element);\n\n EventHandler.on(this._headerCheckbox, 'input', (e) => this._toggleSelectAll(e));\n\n this._checkboxes.forEach((checkbox) => {\n const rowIndex = Manipulator.getDataAttribute(checkbox, 'rowIndex');\n\n EventHandler.on(checkbox, 'input', (e) => this._toggleSelectRow(e, rowIndex));\n });\n }\n\n _removeEventListeners() {\n if (this._options.pagination) {\n EventHandler.off(this._element, EVENT_PAGINATION_CHANGE);\n\n EventHandler.off(this._pagination._select, EVENT_VALUE_CHANGED_SELECT);\n }\n\n EventHandlerMulti.off(window, 'resize DOMContentLoaded', this._windowResizeHandler);\n\n if (this._options.editable) {\n SelectorEngine.find(SELECTOR_CELL, this._element).forEach((cell) => {\n EventHandler.off(cell, 'input');\n EventHandler.off(cell, 'focus');\n EventHandler.off(cell, 'blur');\n });\n }\n\n if (this._options.clickableRows) {\n SelectorEngine.find(SELECTOR_ROW, this._element).forEach((row) => {\n EventHandler.off(row, 'click');\n });\n }\n\n SelectorEngine.find(SELECTOR_SORT_ICON, this._element).forEach((icon) => {\n const [header] = SelectorEngine.parents(icon, 'th');\n\n EventHandler.off(header, 'click');\n });\n\n if (this._options.selectable) {\n EventHandler.off(this._headerCheckbox, 'input');\n\n this._checkboxes.forEach((checkbox) => {\n EventHandler.off(checkbox, 'input');\n });\n }\n\n if (this._options.columnSearch) {\n this._columnSearchInputs.forEach((input) => {\n EventHandler.off(input, 'input');\n });\n }\n }\n\n _renderTable() {\n const userTable = SelectorEngine.findOne('table', this._element);\n this._tableId = userTable?.getAttribute('id');\n const tableOptions = this.tableOptions;\n const { rows } = tableOptions;\n\n const paginationEl = SelectorEngine.findOne(SELECTOR_PAGINATION, this._element);\n if (paginationEl && !this._options.pagination) {\n this._pagination.removePagination();\n }\n\n [...this._element.children].forEach((child) => {\n if (child !== paginationEl) {\n child.remove();\n }\n });\n\n this._element.insertAdjacentHTML('afterbegin', tableTemplate(tableOptions).table);\n\n if (this._options.pagination) {\n this._setupPagination();\n }\n\n if (this._tableId) {\n const renderedTable = SelectorEngine.findOne('table', this._element);\n renderedTable.setAttribute('id', this._tableId);\n }\n\n this._formatCells(rows);\n\n EventHandler.trigger(this._element, EVENT_RENDER);\n }\n\n _renderRows() {\n const body = SelectorEngine.findOne('tbody', this._element);\n const tableOptions = this.tableOptions;\n const { rows } = tableOptions;\n\n body.innerHTML = tableTemplate(tableOptions).rows;\n\n if (this._options.pagination) {\n this._pagination._setNavigationText();\n this._pagination._toggleDisableState();\n }\n this._formatCells(rows);\n\n if (this._options.edit) {\n this._setupEditable();\n }\n\n if (this._options.selectable) {\n this._setupSelectable();\n\n this._setSelected();\n }\n\n if (this._options.clickableRows) {\n this._setupClickableRows();\n }\n\n EventHandler.trigger(this._element, EVENT_RENDER);\n }\n\n _formatCells(rowsData) {\n const columnsMap = new Map(\n this.columns.map((obj) => {\n return [obj.field, obj];\n })\n );\n\n const rows = SelectorEngine.find(SELECTOR_ROW, this._element);\n const cellsToFormat = [];\n\n rows.forEach((row, index) => {\n const cells = SelectorEngine.find(SELECTOR_CELL, row);\n\n cells.forEach((cell) => {\n const field = Manipulator.getDataAttribute(cell, 'field');\n const column = columnsMap.get(field);\n\n if (column && column.format !== null) {\n const cellData = rowsData[index][field];\n cellsToFormat.push({ cell, column, cellData });\n }\n });\n });\n\n cellsToFormat.forEach(({ cell, column, cellData }) => column.format(cell, cellData));\n }\n\n _setupPaginationListeners() {\n if (this._options.serverSide) {\n return;\n }\n\n EventHandler.on(this._element, EVENT_PAGINATION_CHANGE, (e) => {\n if (this._activePage !== e.pagination?.page) {\n this._changeActivePage(e.pagination.page);\n }\n });\n\n EventHandler.on(this._pagination._select, EVENT_VALUE_CHANGED_SELECT, (e) => {\n if (this._options.entries !== e.value) {\n this._setEntries(e);\n }\n });\n }\n\n _toggleSelectAll(e) {\n if (e.target.checked) {\n this._selected = this.rows.map((row) => row.rowIndex);\n } else this._selected = [];\n\n this._setSelected();\n\n this._emitSelectEvent();\n }\n\n _toggleSelectRow(e, rowIndex) {\n if (e.target.checked) {\n if (this._options.multi && !this._selected.includes(rowIndex)) {\n this._selected = [...this._selected, rowIndex];\n } else {\n this._selected = [rowIndex];\n\n this._checkboxes.forEach((checkbox) => {\n if (checkbox !== e.target) {\n checkbox.checked = false;\n }\n });\n }\n } else {\n this._selected = this._selected.filter((index) => index !== rowIndex);\n }\n if (this._options.multi && !e.target.checked) {\n this._headerCheckbox.checked = false;\n }\n\n this._setActiveRows();\n\n this._emitSelectEvent();\n }\n\n _updateRow(event, index) {\n const field = Manipulator.getDataAttribute(event.target, 'field');\n\n const value = event.target.textContent;\n\n const row = this._rows[index];\n\n if (Array.isArray(row)) {\n const column = this.columns.find((column) => {\n return column.field === field;\n });\n\n const columnIndex = column.columnIndex;\n\n row[columnIndex] = value;\n } else {\n row[field] = value;\n }\n\n EventHandler.trigger(this._element, EVENT_UPDATE, {\n rows: this._rows,\n columns: this._columns,\n });\n }\n\n static jQueryInterface(config, param1, param2) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Datatable(this, _config, param1);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](param1, param2);\n }\n });\n }\n}\n\nexport default Datatable;\n","const sort = ({ rows, field, order }) => {\n const sorted = rows.sort((a, b) => {\n let fieldA = a[field];\n let fieldB = b[field];\n\n if (typeof fieldA === 'string') {\n fieldA = fieldA.toLowerCase();\n }\n if (typeof fieldB === 'string') {\n fieldB = fieldB.toLowerCase();\n }\n\n if (fieldA < fieldB) {\n return order === 'desc' ? 1 : -1;\n }\n if (fieldA > fieldB) {\n return order === 'desc' ? -1 : 1;\n }\n return 0;\n });\n\n return sorted;\n};\n\nconst search = (rows, search, column) => {\n if (!search) return rows;\n\n const match = (entry) => {\n const div = document.createElement('div');\n div.innerHTML = entry;\n entry = div.textContent || div.innerText || '';\n\n return entry.toString().toLowerCase().match(search.toLowerCase());\n };\n\n return rows.filter((row) => {\n if (column && typeof column === 'string') {\n return match(row[column]);\n }\n\n let values = Object.values(row);\n\n if (column && Array.isArray(column)) {\n values = Object.keys(row)\n .filter((key) => column.includes(key))\n .map((key) => row[key]);\n }\n\n return (\n values.filter((value) => {\n return match(value);\n }).length > 0\n );\n });\n};\n\nconst paginate = ({ rows, entries, activePage }) => {\n const firstVisibleEntry = activePage * entries;\n return rows.slice(firstVisibleEntry, firstVisibleEntry + Number(entries));\n};\n\nexport { sort, search, paginate };\n","import Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Manipulator from '../mdb/dom/manipulator';\nimport { typeCheckConfig, isRTL } from '../mdb/util/index';\nimport {\n LEFT_ARROW,\n RIGHT_ARROW,\n UP_ARROW,\n DOWN_ARROW,\n HOME,\n END,\n ENTER,\n SPACE,\n TAB,\n} from '../mdb/util/keycodes';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'stepper';\nconst DATA_KEY = 'mdb.stepper';\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst STEPPER_HORIZONTAL = 'horizontal';\nconst STEPPER_VERTICAL = 'vertical';\nconst STEPPER_MOBILE = 'mobile';\n\nconst DefaultType = {\n stepperType: 'string',\n stepperLinear: 'boolean',\n stepperNoEditable: 'boolean',\n stepperActive: 'string',\n stepperCompleted: 'string',\n stepperInvalid: 'string',\n stepperDisabled: 'string',\n stepperVerticalBreakpoint: 'number',\n stepperMobileBreakpoint: 'number',\n stepperMobileBarBreakpoint: 'number',\n animations: 'boolean',\n stepperHeadClick: 'boolean',\n stepperMobileNextBtn: 'string',\n stepperMobileBackBtn: 'string',\n stepperMobileStepTxt: 'string',\n stepperMobileOfTxt: 'string',\n};\n\nconst Default = {\n stepperType: STEPPER_HORIZONTAL,\n stepperLinear: false,\n stepperNoEditable: false,\n stepperActive: '',\n stepperCompleted: '',\n stepperInvalid: '',\n stepperDisabled: '',\n stepperVerticalBreakpoint: 0,\n stepperMobileBreakpoint: 0,\n stepperMobileBarBreakpoint: 4,\n animations: true,\n stepperHeadClick: true,\n stepperMobileNextBtn: 'NEXT',\n stepperMobileBackBtn: 'BACK',\n stepperMobileStepTxt: 'step',\n stepperMobileOfTxt: 'of',\n};\n\nconst EVENT_MOUSEDOWN = `mousedown${EVENT_KEY}`;\nconst EVENT_SUBMIT = `submit${EVENT_KEY}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\nconst EVENT_KEYUP = `keyup${EVENT_KEY}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY}`;\nconst EVENT_CLICK = `click${EVENT_KEY}`;\nconst EVENT_ANIMATIONEND = 'animationend';\nconst EVENT_CHANGE_STEP = `stepChange${EVENT_KEY}`;\nconst EVENT_CHANGED_STEP = `stepChanged${EVENT_KEY}`;\nconst EVENT_INVALID = `stepInvalid${EVENT_KEY}`;\nconst EVENT_VALID = `stepValid${EVENT_KEY}`;\n\nconst STEP_CLASS = `${NAME}-step`;\nconst HEAD_CLASS = `${NAME}-head`;\nconst HEAD_TEXT_CLASS = `${NAME}-head-text`;\nconst CONTENT_CLASS = `${NAME}-content`;\nconst ACTIVE_CLASS = `${NAME}-active`;\nconst COMPLETED_CLASS = `${NAME}-completed`;\nconst INVALID_CLASS = `${NAME}-invalid`;\nconst DISABLED_CLASS = `${NAME}-disabled`;\nconst VERTICAL_CLASS = `${NAME}-${STEPPER_VERTICAL}`;\nconst CONTENT_HIDE_CLASS = `${NAME}-content-hide`;\nconst HORIZONTAL_CLASS = `${NAME}-${STEPPER_HORIZONTAL}`;\nconst MOBILE_CLASS = `${NAME}-${STEPPER_MOBILE}`;\nconst MOBILE_HEAD_CLASS = `${NAME}-${STEPPER_MOBILE}-head`;\nconst MOBILE_FOOTER_CLASS = `${NAME}-${STEPPER_MOBILE}-footer`;\nconst MOBILE_PROGRESS_BAR_CLASS = `${NAME}-${STEPPER_MOBILE}-progress-bar`;\nconst MOBILE_PROGRESS_CLASS = `${NAME}-${STEPPER_MOBILE}-progress`;\nconst NEXT_BTN_CLASS = `${NAME}-next-btn`;\nconst BACK_BTN_CLASS = `${NAME}-back-btn`;\n\nconst MOBILE_ACTIVE_STEP_ID = `${NAME}-active-step`;\nconst MOBILE_NUMBER_OF_STEPS_ID = `${NAME}-all-steps`;\n\nconst MOBILE_BUTTON_NEXT = (options) => {\n return `\n <div class=\"${NEXT_BTN_CLASS}\">\n <button type=\"button\" class=\"btn btn-link\">\n ${options.stepperMobileNextBtn}\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n </div>\n`;\n};\nconst MOBILE_BUTTON_BACK = (options) => {\n return `\n <div class=\"${BACK_BTN_CLASS}\">\n <button type=\"button\" class=\"btn btn-link\">\n <i class=\"fas fa-chevron-left\"></i>\n ${options.stepperMobileBackBtn}\n </button>\n </div>\n`;\n};\nconst MOBILE_STEPPER_HEAD = (options) => {\n return `\n <div class =\"${MOBILE_HEAD_CLASS}\">\n ${options.stepperMobileStepTxt} <span id=\"${MOBILE_ACTIVE_STEP_ID}\"></span> ${options.stepperMobileOfTxt} <span id=\"${MOBILE_NUMBER_OF_STEPS_ID}\"></span>\n </div>\n`;\n};\nconst MOBILE_PROGRESS_BAR = `\n <div class=\"${MOBILE_PROGRESS_CLASS} gray-500\">\n <div class=\"${MOBILE_PROGRESS_BAR_CLASS}\"></div>\n </div>\n`;\nconst MOBILE_FOOTER = `\n <div class=\"${MOBILE_FOOTER_CLASS}\"></div>\n`;\n\nclass Stepper extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._options = this._getConfig(options);\n this._elementHeight = 0;\n this._steps = SelectorEngine.find(`.${STEP_CLASS}`, this._element);\n this._currentView = '';\n this._activeStepIndex = 0;\n this._verticalStepperStyles = [];\n this._animations =\n !window.matchMedia('(prefers-reduced-motion: reduce)').matches && this._options.animations;\n\n if (this._element) {\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n get activeStep() {\n return this._steps[this._activeStepIndex];\n }\n\n get activeStepIndex() {\n return this._activeStepIndex;\n }\n\n // Public\n\n dispose() {\n this._steps.forEach((el) => {\n EventHandler.off(el, EVENT_MOUSEDOWN);\n EventHandler.off(el, EVENT_KEYDOWN);\n });\n\n EventHandler.off(window, EVENT_RESIZE);\n\n this._unbindMouseDown();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n changeStep(index) {\n this._toggleStep(index);\n }\n\n nextStep() {\n this._toggleStep(this._activeStepIndex + 1);\n }\n\n prevStep() {\n this._toggleStep(this._activeStepIndex - 1);\n }\n\n resizeStepper() {\n if (this._currentView === STEPPER_VERTICAL) {\n this._setSingleStepHeight(this.activeStep);\n }\n\n if (this._currentView === STEPPER_HORIZONTAL) {\n this._setHeight(this.activeStep);\n }\n\n if (this._options.stepperVerticalBreakpoint || this._options.stepperMobileBreakpoint) {\n this._toggleStepperView();\n }\n }\n\n // Private\n _init() {\n const activeStep = SelectorEngine.findOne(`.${ACTIVE_CLASS}`, this._element);\n\n if (activeStep) {\n this._activeStepIndex = this._steps.indexOf(activeStep);\n this._toggleStepClass(this._activeStepIndex, 'add', this._options.stepperActive);\n } else {\n this._toggleStepClass(this._activeStepIndex, 'add', ACTIVE_CLASS);\n this._toggleStepClass(this._activeStepIndex, 'add', this._options.stepperActive);\n }\n\n this._setOptional();\n if (this._options.stepperHeadClick) {\n this._bindMouseDown();\n }\n this._bindKeysNavigation();\n\n switch (this._options.stepperType) {\n case STEPPER_VERTICAL:\n this._toggleVertical();\n break;\n case STEPPER_MOBILE:\n this._toggleMobile();\n break;\n default:\n this._toggleHorizontal();\n break;\n }\n\n if (this._options.stepperVerticalBreakpoint || this._options.stepperMobileBreakpoint) {\n this._toggleStepperView();\n }\n\n if (this._options.stepperLinear) {\n this._setValidation();\n }\n\n this._bindResize();\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n _bindMouseDown() {\n this._steps.forEach((el) => {\n const stepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, el);\n\n EventHandler.on(stepHead, EVENT_MOUSEDOWN, (e) => {\n const step = SelectorEngine.parents(e.target, `.${STEP_CLASS}`)[0];\n const stepIndex = this._steps.indexOf(step);\n\n e.preventDefault();\n this._toggleStep(stepIndex);\n });\n });\n }\n\n _unbindMouseDown() {\n this._steps.forEach((el) => {\n const stepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, el);\n\n EventHandler.off(stepHead, EVENT_MOUSEDOWN);\n });\n }\n\n _bindResize() {\n EventHandler.on(window, EVENT_RESIZE, () => {\n this.resizeStepper();\n });\n }\n\n _toggleStepperView() {\n const shouldBeHorizontal = this._options.stepperVerticalBreakpoint < window.innerWidth;\n const shouldBeVertical = this._options.stepperVerticalBreakpoint > window.innerWidth;\n const shouldBeMobile = this._options.stepperMobileBreakpoint > window.innerWidth;\n\n if (shouldBeHorizontal && this._currentView !== STEPPER_HORIZONTAL) {\n this._toggleHorizontal();\n }\n\n if (shouldBeVertical && !shouldBeMobile && this._currentView !== STEPPER_VERTICAL) {\n this._steps.forEach((el) => {\n const stepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, el);\n\n this._resetStepperHeight();\n this._showElement(stepContent);\n });\n\n this._toggleVertical();\n }\n\n if (shouldBeMobile && this._currentView !== STEPPER_MOBILE) {\n this._toggleMobile();\n }\n }\n\n _toggleStep(index) {\n const numberOfSteps = this._steps.length;\n\n const isValid = this._validateStep(index);\n\n const activeStepIndex = this._activeStepIndex;\n\n if (!isValid) {\n return;\n }\n\n if (this._options.stepperLinear) {\n EventHandler.trigger(this.activeStep, EVENT_VALID, {\n currentStep: this._activeStepIndex,\n nextStep: index,\n });\n }\n\n if (this._options.stepperNoEditable) {\n this._toggleDisabled();\n }\n\n this._showElement(SelectorEngine.findOne(`.${CONTENT_CLASS}`, this._steps[index]));\n this._toggleActive(index);\n\n if (!this._options.stepperLinear || index > this._activeStepIndex) {\n this._toggleCompleted(this._activeStepIndex);\n }\n\n if (this._currentView === STEPPER_HORIZONTAL || this._currentView === STEPPER_MOBILE) {\n this._animateHorizontalStep(index);\n } else {\n this._animateVerticalStep(index);\n this._setSingleStepHeight(this._steps[index]);\n }\n\n this._toggleStepTabIndex(\n SelectorEngine.findOne(`.${HEAD_CLASS}`, this.activeStep),\n SelectorEngine.findOne(`.${HEAD_CLASS}`, this._steps[index])\n );\n\n this._activeStepIndex = index;\n\n if (this._currentView === STEPPER_MOBILE) {\n const activeStepElement = SelectorEngine.findOne(`#${MOBILE_ACTIVE_STEP_ID}`, this._element);\n\n activeStepElement.textContent = this._activeStepIndex + 1;\n\n if (numberOfSteps > this._options.stepperMobileBarBreakpoint) {\n this._updateProgressBar();\n }\n }\n\n const inputs = this.activeStep.querySelectorAll('.form-outline');\n const inputNotches = SelectorEngine.find('.form-notch', inputs[0]);\n if (inputs.length && inputNotches.length < 1) {\n inputs.forEach((formOutline) => {\n new mdb.Input(formOutline).init();\n });\n }\n\n EventHandler.trigger(this.activeStep, EVENT_CHANGED_STEP, {\n currentStep: this._activeStepIndex,\n prevStep: activeStepIndex,\n });\n }\n\n _resetStepperHeight() {\n this._element.style.height = '';\n }\n\n _setStepsHeight() {\n this._steps.forEach((el) => {\n const stepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, el);\n const stepComputed = window.getComputedStyle(stepContent);\n this._verticalStepperStyles.push({\n paddingTop: parseFloat(stepComputed.paddingTop),\n paddingBottom: parseFloat(stepComputed.paddingBottom),\n });\n const stepHeight = stepContent.scrollHeight;\n stepContent.style.height = `${stepHeight}px`;\n });\n }\n\n _setSingleStepHeight(step) {\n const stepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, step);\n const isActiveStep = this.activeStep === step;\n const stepIndex = this._steps.indexOf(step);\n let stepContentHeight;\n\n if (!isActiveStep) {\n stepContentHeight =\n stepContent.scrollHeight +\n this._verticalStepperStyles[stepIndex].paddingTop +\n this._verticalStepperStyles[stepIndex].paddingBottom;\n } else {\n stepContent.style.height = '';\n stepContentHeight = stepContent.scrollHeight;\n }\n\n stepContent.style.height = `${stepContentHeight}px`;\n }\n\n _createMobileElements() {\n this._element.insertAdjacentHTML('beforeend', MOBILE_FOOTER);\n\n const footer = SelectorEngine.findOne(`.${MOBILE_FOOTER_CLASS}`, this._element);\n\n if (this._steps.length > this._options.stepperMobileBarBreakpoint) {\n this._element.classList.add('stepper-progress-bar');\n\n footer.insertAdjacentHTML('afterbegin', MOBILE_PROGRESS_BAR);\n\n this._updateProgressBar();\n }\n\n footer.insertAdjacentHTML('afterbegin', MOBILE_BUTTON_BACK(this._options));\n footer.insertAdjacentHTML('beforeend', MOBILE_BUTTON_NEXT(this._options));\n\n this._element.insertAdjacentHTML('afterbegin', MOBILE_STEPPER_HEAD(this._options));\n\n const allStepsElement = SelectorEngine.findOne(`#${MOBILE_NUMBER_OF_STEPS_ID}`, this._element);\n allStepsElement.textContent = this._steps.length;\n\n const ActiveStepsElement = SelectorEngine.findOne(`#${MOBILE_ACTIVE_STEP_ID}`, this._element);\n ActiveStepsElement.textContent = this._activeStepIndex + 1;\n }\n\n _toggleMobile() {\n this._currentView = STEPPER_MOBILE;\n\n this._toggleStepperClass(MOBILE_CLASS);\n this._createMobileElements();\n this._bindMobileButtons();\n this._setHeight(this.activeStep);\n this._hideInactiveSteps();\n }\n\n _toggleVertical() {\n if (this._currentView === STEPPER_MOBILE) {\n this._deleteMobileElements();\n this._unbindMobileButtons();\n }\n\n this._currentView = STEPPER_VERTICAL;\n\n this._toggleStepperClass(VERTICAL_CLASS);\n this._setStepsHeight();\n this._hideInactiveSteps();\n }\n\n _toggleHorizontal() {\n if (this._currentView === STEPPER_MOBILE) {\n this._deleteMobileElements();\n this._unbindMobileButtons();\n }\n\n this._currentView = STEPPER_HORIZONTAL;\n\n this._toggleStepperClass(HORIZONTAL_CLASS);\n this._setHeight(this.activeStep);\n this._hideInactiveSteps();\n }\n\n _toggleStepperClass(className) {\n this._element.classList.remove(HORIZONTAL_CLASS, MOBILE_CLASS, VERTICAL_CLASS);\n this._element.classList.add(className);\n\n if (className !== VERTICAL_CLASS) {\n this._steps.forEach((el) => {\n SelectorEngine.findOne(`.${CONTENT_CLASS}`, el).classList.remove(CONTENT_HIDE_CLASS);\n });\n }\n }\n\n _toggleStepClass(index, action, className) {\n // condition to prevent errors if the user has not set any custom classes like active, disabled etc.\n if (className) {\n this._steps[index].classList[action](className);\n }\n }\n\n _deleteMobileElements() {\n const footer = SelectorEngine.findOne(`.${MOBILE_FOOTER_CLASS}`, this._element);\n const head = SelectorEngine.findOne(`.${MOBILE_HEAD_CLASS}`, this._element);\n\n footer.remove();\n head.remove();\n }\n\n _bindKeysNavigation() {\n this._toggleStepTabIndex(false, SelectorEngine.findOne(`.${HEAD_CLASS}`, this.activeStep));\n\n this._steps.forEach((el) => {\n const stepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, el);\n\n EventHandler.on(stepHead, EVENT_KEYDOWN, (e) => {\n const focusedStep = SelectorEngine.parents(e.currentTarget, `.${STEP_CLASS}`)[0];\n const nextStep = SelectorEngine.next(focusedStep, `.${STEP_CLASS}`)[0];\n const prevStep = SelectorEngine.prev(focusedStep, `.${STEP_CLASS}`)[0];\n const focusedStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, focusedStep);\n const activeStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, this.activeStep);\n let nextStepHead = null;\n let prevStepHead = null;\n\n if (nextStep) {\n nextStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, nextStep);\n }\n\n if (prevStep) {\n prevStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, prevStep);\n }\n\n if (e.keyCode === LEFT_ARROW && this._currentView !== STEPPER_VERTICAL) {\n if (!isRTL && prevStepHead) {\n this._toggleStepTabIndex(focusedStepHead, prevStepHead);\n this._toggleOutlineStyles(focusedStepHead, prevStepHead);\n\n prevStepHead.focus();\n } else if (isRTL && nextStepHead) {\n this._toggleStepTabIndex(focusedStepHead, nextStepHead);\n this._toggleOutlineStyles(focusedStepHead, nextStepHead);\n\n nextStepHead.focus();\n }\n }\n\n if (e.keyCode === RIGHT_ARROW && this._currentView !== STEPPER_VERTICAL) {\n if (!isRTL && nextStepHead) {\n this._toggleStepTabIndex(focusedStepHead, nextStepHead);\n this._toggleOutlineStyles(focusedStepHead, nextStepHead);\n\n nextStepHead.focus();\n } else if (isRTL && prevStepHead) {\n this._toggleStepTabIndex(focusedStepHead, prevStepHead);\n this._toggleOutlineStyles(focusedStepHead, prevStepHead);\n\n prevStepHead.focus();\n }\n }\n\n if (e.keyCode === DOWN_ARROW && this._currentView === STEPPER_VERTICAL) {\n e.preventDefault();\n\n if (nextStepHead) {\n this._toggleStepTabIndex(focusedStepHead, nextStepHead);\n this._toggleOutlineStyles(focusedStepHead, nextStepHead);\n\n nextStepHead.focus();\n }\n }\n\n if (e.keyCode === UP_ARROW && this._currentView === STEPPER_VERTICAL) {\n e.preventDefault();\n\n if (prevStepHead) {\n this._toggleStepTabIndex(focusedStepHead, prevStepHead);\n this._toggleOutlineStyles(focusedStepHead, prevStepHead);\n\n prevStepHead.focus();\n }\n }\n\n if (e.keyCode === HOME) {\n const firstStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, this._steps[0]);\n\n this._toggleStepTabIndex(focusedStepHead, firstStepHead);\n this._toggleOutlineStyles(focusedStepHead, firstStepHead);\n\n firstStepHead.focus();\n }\n\n if (e.keyCode === END) {\n const lastStep = this._steps[this._steps.length - 1];\n const lastStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, lastStep);\n this._toggleStepTabIndex(focusedStepHead, lastStepHead);\n this._toggleOutlineStyles(focusedStepHead, lastStepHead);\n\n lastStepHead.focus();\n }\n\n if (e.keyCode === ENTER || e.keyCode === SPACE) {\n e.preventDefault();\n\n this.changeStep(this._steps.indexOf(focusedStep));\n }\n\n if (e.keyCode === TAB) {\n this._toggleStepTabIndex(focusedStepHead, activeStepHead);\n this._toggleOutlineStyles(focusedStepHead, false);\n\n activeStepHead.focus();\n }\n });\n\n EventHandler.on(stepHead, EVENT_KEYUP, (e) => {\n const focusedStep = SelectorEngine.parents(e.currentTarget, `.${STEP_CLASS}`)[0];\n const focusedStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, focusedStep);\n const activeStepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, this.activeStep);\n\n if (e.keyCode === TAB) {\n this._toggleStepTabIndex(focusedStepHead, activeStepHead);\n this._toggleOutlineStyles(false, activeStepHead);\n\n activeStepHead.focus();\n }\n });\n });\n }\n\n _bindMobileButtons() {\n const btnBack = SelectorEngine.findOne(`.${BACK_BTN_CLASS}`, this._element);\n const btnNext = SelectorEngine.findOne(`.${NEXT_BTN_CLASS}`, this._element);\n\n EventHandler.on(btnBack, EVENT_CLICK, () => this.prevStep());\n EventHandler.on(btnNext, EVENT_CLICK, () => this.nextStep());\n }\n\n _unbindMobileButtons() {\n const btnBack = SelectorEngine.findOne(`.${BACK_BTN_CLASS}`, this._element);\n const btnNext = SelectorEngine.findOne(`.${NEXT_BTN_CLASS}`, this._element);\n\n EventHandler.off(btnBack, EVENT_CLICK, () => this.prevStep());\n EventHandler.off(btnNext, EVENT_CLICK, () => this.nextStep());\n }\n\n _toggleStepTabIndex(focusedElement, newTarget) {\n if (focusedElement) {\n focusedElement.setAttribute('tabIndex', -1);\n }\n\n if (newTarget) {\n newTarget.setAttribute('tabIndex', 0);\n }\n }\n\n _validateActiveStepRequiredElements() {\n const isValid = SelectorEngine.find('[required]', this.activeStep).every((el) => {\n return el.checkValidity() === true;\n });\n\n return isValid;\n }\n\n _validateStep(index) {\n const numberOfSteps = this._steps.length;\n let result = true;\n\n // prevent any actions if the same step is chosen\n if (index === this._activeStepIndex) {\n result = false;\n }\n\n // prevent toggleSteps if next/prev step don't exist\n if (index >= numberOfSteps || index < 0) {\n result = false;\n }\n\n const changeStepEvent = EventHandler.trigger(this.activeStep, EVENT_CHANGE_STEP, {\n currentStep: this._activeStepIndex,\n nextStep: index,\n });\n\n if (this._options.stepperLinear) {\n // prevent toggleStep if one of the steps is skipped\n const stepsToCheck = index - this.activeStepIndex - 1;\n if (index > this._activeStepIndex + 1) {\n let nextStepToValidate = SelectorEngine.next(this.activeStep, 'li')[0];\n\n for (let i = 0; i < stepsToCheck; i++) {\n if (!nextStepToValidate.classList.contains('stepper-completed')) {\n nextStepToValidate.classList.add('stepper-invalid');\n result = false;\n }\n nextStepToValidate = SelectorEngine.next(nextStepToValidate, 'li')[0];\n }\n }\n\n if (index < this._activeStepIndex) {\n if (!this._validateActiveStepRequiredElements()) {\n this.activeStep.classList.remove('stepper-completed');\n }\n }\n\n if (index > this._activeStepIndex || index === numberOfSteps - 1) {\n this.activeStep.classList.add('was-validated');\n\n if (!this._validateActiveStepRequiredElements()) {\n this._toggleInvalid(this._activeStepIndex);\n EventHandler.trigger(this.activeStep, EVENT_INVALID, {\n currentStep: this._activeStepIndex,\n nextStep: index,\n });\n // wait for other elements transition end\n // the input transition takes 200ms. + 10ms is added, because without it it would not expand to the correct height\n\n if (this._currentView !== STEPPER_VERTICAL) {\n setTimeout(() => {\n this._setHeight(this.activeStep);\n }, 210);\n } else {\n setTimeout(() => {\n this._setSingleStepHeight(this.activeStep);\n }, 210);\n }\n\n result = false;\n }\n }\n }\n\n if (index > this._activeStepIndex && changeStepEvent.defaultPrevented) {\n result = false;\n }\n\n if (this._options.stepperNoEditable) {\n if (this._steps[index].classList.contains(DISABLED_CLASS)) {\n result = false;\n }\n }\n\n return result;\n }\n\n _updateProgressBar() {\n const numberOfSteps = this._steps.length;\n const progressBar = SelectorEngine.findOne(`.${MOBILE_PROGRESS_BAR_CLASS}`, this._element);\n\n progressBar.style.width = `${((this._activeStepIndex + 1) / numberOfSteps) * 100}%`;\n }\n\n _toggleOutlineStyles(focusedElement, newTarget) {\n if (focusedElement) {\n focusedElement.style.outline = '';\n }\n\n if (newTarget) {\n newTarget.style.outline = 'revert';\n }\n }\n\n _toggleDisabled() {\n this._toggleStepClass(this._activeStepIndex, 'add', DISABLED_CLASS);\n this._toggleStepClass(this._activeStepIndex, 'add', this._options.stepperDisabled);\n }\n\n _toggleActive(index) {\n this._toggleStepClass(index, 'add', ACTIVE_CLASS);\n this._toggleStepClass(this._activeStepIndex, 'remove', ACTIVE_CLASS);\n this._toggleStepClass(index, 'add', this._options.stepperActive);\n this._toggleStepClass(this._activeStepIndex, 'remove', this._options.stepperActive);\n }\n\n _toggleCompleted(index) {\n this._toggleStepClass(index, 'add', COMPLETED_CLASS);\n this._toggleStepClass(index, 'remove', INVALID_CLASS);\n this._toggleStepClass(index, 'add', this._options.stepperCompleted);\n this._toggleStepClass(index, 'remove', this._options.stepperInvalid);\n }\n\n _toggleInvalid(index) {\n this._toggleStepClass(index, 'add', INVALID_CLASS);\n this._toggleStepClass(index, 'remove', COMPLETED_CLASS);\n this._toggleStepClass(index, 'add', this._options.stepperInvalid);\n this._toggleStepClass(index, 'remove', this._options.stepperCompleted);\n }\n\n _setOptional() {\n this._steps.forEach((el) => {\n const isOptional = Manipulator.getDataAttribute(el, 'stepper-optional');\n\n if (isOptional) {\n const stepHeadText = SelectorEngine.findOne(`.${HEAD_TEXT_CLASS}`, el);\n stepHeadText.setAttribute('data-mdb-content', 'Optional');\n }\n });\n }\n\n _hideInactiveSteps() {\n this._steps.forEach((el) => {\n if (!el.classList.contains(ACTIVE_CLASS)) {\n this._hideElement(SelectorEngine.findOne(`.${CONTENT_CLASS}`, el));\n }\n });\n }\n\n _setValidation() {\n const form = SelectorEngine.findOne('.needs-validation.stepper-form', this._element);\n\n EventHandler.on(\n form,\n EVENT_SUBMIT,\n (event) => {\n if (!form.checkValidity()) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this._steps.forEach((el, i) => {\n const isValid = this._validateStep(i);\n\n if (!isValid) {\n this._toggleInvalid(i);\n EventHandler.trigger(this.activeStep, EVENT_INVALID);\n }\n });\n },\n false\n );\n }\n\n _setHeight(stepElement) {\n const stepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, stepElement);\n const stepFooter = SelectorEngine.findOne(`.${MOBILE_FOOTER_CLASS}`, this._element);\n const contentStyle = getComputedStyle(stepContent);\n const footerStyle = stepFooter ? getComputedStyle(stepFooter) : '';\n let stepHead;\n\n if (this._currentView === STEPPER_MOBILE) {\n stepHead = SelectorEngine.findOne(`.${MOBILE_HEAD_CLASS}`, this._element);\n } else {\n stepHead = SelectorEngine.findOne(`.${HEAD_CLASS}`, stepElement);\n }\n\n const headStyle = getComputedStyle(stepHead);\n const stepContentHeight =\n stepContent.offsetHeight +\n parseFloat(contentStyle.marginTop) +\n parseFloat(contentStyle.marginBottom);\n\n const stepHeadHeight =\n stepHead.offsetHeight + parseFloat(headStyle.marginTop) + parseFloat(headStyle.marginBottom);\n\n const stepFooterHeight = footerStyle\n ? stepFooter.offsetHeight +\n parseFloat(footerStyle.marginTop) +\n parseFloat(footerStyle.marginBottom)\n : 0;\n\n this._element.style.height = `${stepHeadHeight + stepContentHeight + stepFooterHeight}px`;\n }\n\n _hideElement(stepContent) {\n const isActive = SelectorEngine.parents(stepContent, `.${STEP_CLASS}`)[0].classList.contains(\n ACTIVE_CLASS\n );\n\n // prevent hiding during a quick step change\n if (!isActive && this._currentView !== STEPPER_VERTICAL) {\n stepContent.style.display = 'none';\n } else {\n stepContent.classList.add(CONTENT_HIDE_CLASS);\n }\n }\n\n _showElement(stepContent) {\n if (this._currentView === STEPPER_VERTICAL) {\n stepContent.classList.remove(CONTENT_HIDE_CLASS);\n } else {\n stepContent.style.display = 'block';\n }\n }\n\n _animateHorizontalStep(index) {\n if (!this._animations) {\n this._steps.forEach((el, i) => {\n const stepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, el);\n\n if (i !== index) {\n this._hideElement(stepContent);\n }\n });\n\n this._setHeight(this._steps[index]);\n\n return;\n }\n\n const isForward = index > this._activeStepIndex;\n const nextStepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, this._steps[index]);\n const activeStepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, this.activeStep);\n\n let nextStepAnimation;\n let activeStepAnimation;\n\n this._steps.forEach((el, i) => {\n const stepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, el);\n\n this._clearStepAnimation(stepContent);\n\n if (i !== index && i !== this._activeStepIndex) {\n this._hideElement(stepContent);\n }\n });\n\n if (isForward) {\n activeStepAnimation = 'slide-out-left';\n nextStepAnimation = 'slide-in-right';\n } else {\n activeStepAnimation = 'slide-out-right';\n nextStepAnimation = 'slide-in-left';\n }\n\n if (this._animations) {\n activeStepContent.classList.add(activeStepAnimation, 'animation', 'fast');\n nextStepContent.classList.add(nextStepAnimation, 'animation', 'fast');\n }\n\n this._setHeight(this._steps[index]);\n\n EventHandler.one(activeStepContent, EVENT_ANIMATIONEND, (e) => {\n this._clearStepAnimation(e.target);\n this._hideElement(e.target);\n });\n\n EventHandler.one(nextStepContent, EVENT_ANIMATIONEND, (e) => {\n this._clearStepAnimation(e.target);\n });\n }\n\n _animateVerticalStep(index) {\n const nextStepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, this._steps[index]);\n const activeStepContent = SelectorEngine.findOne(`.${CONTENT_CLASS}`, this.activeStep);\n\n this._hideElement(activeStepContent);\n this._showElement(nextStepContent);\n }\n\n _clearStepAnimation(element) {\n element.classList.remove(\n 'slide-out-left',\n 'slide-in-right',\n 'slide-out-right',\n 'slide-in-left',\n 'animation',\n 'fast'\n );\n }\n\n // Static\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Stepper(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Stepper;\n","import { typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'sticky';\nconst DATA_KEY = 'mdb.sticky';\n\nconst ANIMATED_CLASS = 'animation';\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_ACTIVATED = `activated${EVENT_KEY}`;\nconst EVENT_DEACTIVATED = `deactivated${EVENT_KEY}`;\n\nconst Default = {\n stickyActiveClass: '',\n stickyAnimationSticky: '',\n stickyAnimationUnsticky: '',\n stickyBoundary: false,\n stickyDelay: 0,\n stickyDirection: 'down',\n stickyMedia: 0,\n stickyOffset: 0,\n stickyPosition: 'top',\n};\n\nconst DefaultType = {\n stickyActiveClass: 'string',\n stickyAnimationSticky: 'string',\n stickyAnimationUnsticky: 'string',\n stickyBoundary: '(boolean|string)',\n stickyDelay: 'number',\n stickyDirection: 'string',\n stickyMedia: 'number',\n stickyOffset: 'number',\n stickyPosition: 'string',\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Sticky extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._hiddenElement = null;\n this._elementPositionStyles = {};\n this._scrollDirection = '';\n this._isSticked = false;\n this._elementOffsetTop = null;\n this._scrollTop = 0;\n this._pushPoint = '';\n this._manuallyDeactivated = false;\n\n if (this._element) {\n this._options = this._getConfig(options);\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n\n dispose() {\n const { stickyAnimationUnsticky } = this._options;\n let { animationDuration } = getComputedStyle(this._element);\n\n animationDuration = stickyAnimationUnsticky !== '' ? parseFloat(animationDuration) * 1000 : 0;\n\n this._disableSticky();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n setTimeout(() => {\n super.dispose();\n }, animationDuration);\n }\n\n activate() {\n // prevent action if sticky is already active\n if (this._isSticked) {\n return;\n }\n\n this._createHiddenElement();\n this._enableSticky();\n this._changeBoundaryPosition();\n this._isSticked = true;\n this._manuallyDeactivated = false;\n }\n\n deactivate() {\n // prevent action if sticky is already inactive\n if (!this._isSticked) {\n return;\n }\n\n this._disableSticky();\n this._isSticked = false;\n this._manuallyDeactivated = true;\n }\n\n // Private\n _init() {\n this._userActivityListener();\n }\n\n _userActivityListener() {\n EventHandler.on(window, 'resize', () => {\n this._updateElementPosition();\n this._updateElementOffset();\n });\n\n EventHandler.on(window, 'scroll', () => {\n if (!this._element) {\n return;\n }\n\n // prevent action if browser resolution <= user acceptable resolution\n if (window.innerWidth <= this._options.stickyMedia) {\n return;\n }\n\n // prevent action if user deactivated sticky manually using public methods.\n if (this._manuallyDeactivated) {\n return;\n }\n\n const doc = document.documentElement;\n const { stickyDirection } = this._options;\n const scrollTop = window.pageYOffset || doc.scrollTop;\n\n this._updateElementOffset();\n this._updatePushPoint();\n this._updateScrollDirection(scrollTop);\n this._clearInProgressAnimations();\n\n const isCorrectScrollDirection = [this._scrollDirection, 'both'].includes(stickyDirection);\n const isPushPointReached = this._pushPoint <= scrollTop;\n\n const shouldBeSticky = isPushPointReached && !this._isSticked && isCorrectScrollDirection;\n const shouldNotBeSticky =\n (!isPushPointReached || !isCorrectScrollDirection) && this._isSticked;\n\n if (shouldBeSticky) {\n this._createHiddenElement();\n this._enableSticky();\n this._changeBoundaryPosition();\n this._isSticked = true;\n }\n\n if (shouldNotBeSticky) {\n this._disableSticky();\n this._isSticked = false;\n }\n\n if (this._isSticked) {\n this._updatePosition({ styles: this._elementPositionStyles });\n this._changeBoundaryPosition();\n }\n\n this._scrollTop = scrollTop <= 0 ? 0 : scrollTop; // Get last scrollTop position and fix negative scroll\n });\n }\n\n _updatePushPoint() {\n if (this._options.stickyPosition === 'top') {\n this._pushPoint = this._elementOffsetTop - this._options.stickyDelay;\n } else {\n this._pushPoint =\n this._elementOffsetTop +\n this._element.height -\n document.body.scrollHeight +\n this._options.stickyDelay;\n }\n }\n\n _updateElementOffset() {\n if (this._hiddenElement) {\n this._elementOffsetTop = this._hiddenElement.offsetTop;\n } else {\n this._elementOffsetTop = this._element.offsetTop;\n }\n\n if (this._options.stickyAnimationUnsticky) {\n this._elementOffsetTop += this._element.height || 0;\n }\n }\n\n _updateElementPosition() {\n if (this._hiddenElement) {\n const { left } = this._hiddenElement.getBoundingClientRect();\n\n this._elementPositionStyles = {\n left: `${left}px`,\n };\n } else {\n this._elementPositionStyles = {};\n }\n\n this._setStyle(this._element, this._elementPositionStyles);\n }\n\n _updateScrollDirection(scrollTop) {\n if (scrollTop > this._scrollTop) {\n this._scrollDirection = 'down';\n } else {\n this._scrollDirection = 'up';\n }\n }\n\n _clearInProgressAnimations() {\n const isScrollUp = this._scrollDirection === 'up';\n const isUnstickyAnimationInProgress = this._element.classList.contains(\n this._options.stickyAnimationUnsticky\n );\n const isScrolledAboveElement = window.scrollY <= this._elementOffsetTop - this._element.height;\n\n if (isScrollUp && isUnstickyAnimationInProgress && isScrolledAboveElement) {\n this._removeUnstickyAnimation();\n this._resetStyles();\n this._removeHiddenElement();\n }\n }\n\n _enableSticky() {\n const {\n stickyActiveClass,\n stickyAnimationSticky,\n stickyAnimationUnsticky,\n stickyOffset,\n stickyPosition,\n } = this._options;\n const { height, left, width } = this._element.getBoundingClientRect();\n\n if (stickyAnimationSticky !== '') {\n Manipulator.addClass(this._element, ANIMATED_CLASS);\n this._toggleClass(stickyAnimationSticky, stickyAnimationUnsticky, this._element);\n }\n\n this._toggleClass(stickyActiveClass, '', this._element);\n\n this._setStyle(this._element, {\n top: stickyPosition === 'top' && `${0 + stickyOffset}px`,\n bottom: stickyPosition === 'bottom' && `${0 + stickyOffset}px`,\n height: `${height}px`,\n width: `${width}px`,\n left: `${left}px`,\n zIndex: '100',\n position: 'fixed',\n });\n\n this._hiddenElement.hidden = false;\n\n EventHandler.trigger(this._element, EVENT_ACTIVATED);\n }\n\n _changeBoundaryPosition() {\n const { stickyPosition, stickyBoundary, stickyOffset } = this._options;\n const { height } = this._element.getBoundingClientRect();\n const parentOffset = {\n height: this._element.parentElement.getBoundingClientRect().height,\n ...this._getOffset(this._element.parentElement),\n };\n let stopPoint;\n const stopper = SelectorEngine.findOne(stickyBoundary);\n\n if (stopper) {\n stopPoint = this._getOffset(stopper).top - height - stickyOffset;\n } else {\n stopPoint = parentOffset.height + parentOffset[stickyPosition] - height - stickyOffset;\n }\n\n const isStickyTop = stickyPosition === 'top';\n const isStickyBottom = stickyPosition === 'bottom';\n const isStickyBoundary = stickyBoundary;\n const isBelowStopPoint = stopPoint < 0;\n const isBelowParentElementEnd = stopPoint > parentOffset.height - height;\n let elementStyle;\n\n if (isStickyTop) {\n if (isBelowStopPoint && isStickyBoundary) {\n elementStyle = { top: `${stickyOffset + stopPoint}px` };\n } else {\n elementStyle = { top: `${stickyOffset + 0}px` };\n }\n }\n\n if (isStickyBottom) {\n if (isBelowStopPoint && isStickyBoundary) {\n elementStyle = { bottom: `${stickyOffset + stopPoint}px` };\n } else if (isBelowParentElementEnd && isStickyBoundary) {\n elementStyle = { bottom: `${stickyOffset + parentOffset.bottom}px` };\n } else {\n elementStyle = { bottom: `${stickyOffset + 0}px` };\n }\n }\n\n this._setStyle(this._element, elementStyle);\n }\n\n _disableSticky() {\n const { stickyActiveClass, stickyAnimationUnsticky, stickyAnimationSticky } = this._options;\n\n let { animationDuration } = getComputedStyle(this._element);\n\n animationDuration = stickyAnimationUnsticky !== '' ? parseFloat(animationDuration) * 1000 : 0;\n\n if (this._options.stickyAnimationUnsticky !== '') {\n Manipulator.addClass(this._element, ANIMATED_CLASS);\n this._toggleClass(stickyAnimationUnsticky, stickyAnimationSticky, this._element);\n }\n\n setTimeout(() => {\n if (this._element.classList.contains(stickyAnimationSticky)) {\n return;\n }\n\n this._removeUnstickyAnimation();\n this._resetStyles();\n this._removeHiddenElement();\n this._toggleClass('', stickyActiveClass, this._element);\n\n EventHandler.trigger(this._element, EVENT_DEACTIVATED);\n }, animationDuration);\n }\n\n _createHiddenElement() {\n if (!this._hiddenElement) {\n this._hiddenElement = this._copyElement(this._element);\n }\n }\n\n _removeHiddenElement() {\n // prevent to throw error when hidden Element don't exist;\n if (!this._hiddenElement) {\n return;\n }\n\n this._hiddenElement.remove();\n this._hiddenElement = null;\n }\n\n _removeUnstickyAnimation() {\n this._toggleClass('', this._options.stickyAnimationUnsticky, this._element);\n }\n\n _resetStyles() {\n this._setStyle(this._element, {\n top: null,\n bottom: null,\n position: null,\n left: null,\n zIndex: null,\n width: null,\n height: null,\n });\n }\n\n _updatePosition({ styles }) {\n this._setStyle(this._element, styles);\n }\n\n _toggleClass(addClass, removeClass, target) {\n if (addClass) {\n Manipulator.addClass(target, addClass);\n }\n\n if (removeClass) {\n Manipulator.removeClass(target, removeClass);\n }\n }\n\n _getOffset(element) {\n const offsetElement = Manipulator.offset(element);\n const rectElement = element.getBoundingClientRect();\n\n const bottom =\n offsetElement.left === 0 && offsetElement.top === 0\n ? 0\n : window.innerHeight - rectElement.bottom;\n\n return {\n ...offsetElement,\n bottom,\n };\n }\n\n _copyElement(itemToCopy) {\n const { height, width } = itemToCopy.getBoundingClientRect();\n const COPIED_ITEM = itemToCopy.cloneNode(false);\n COPIED_ITEM.hidden = true;\n\n this._setStyle(COPIED_ITEM, {\n height: `${height}px`,\n width: `${width}px`,\n opacity: '0',\n });\n\n itemToCopy.parentElement.insertBefore(COPIED_ITEM, itemToCopy);\n\n return COPIED_ITEM;\n }\n\n _getConfig(config = {}) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _setStyle(element, styles) {\n Object.keys(styles).forEach((style) => {\n element.style[style] = styles[style];\n });\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Sticky(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Sticky;\n","class TouchUtil {\n _getCoordinates(e) {\n const [touch] = e.touches;\n\n return {\n x: touch.clientX,\n y: touch.clientY,\n };\n }\n\n _getDirection({ x, y }) {\n return {\n x: {\n direction: x < 0 ? 'left' : 'right',\n value: Math.abs(x),\n },\n y: {\n direction: y < 0 ? 'up' : 'down',\n value: Math.abs(y),\n },\n };\n }\n\n _getOrigin({ x, y }, { x: x2, y: y2 }) {\n return {\n x: x - x2,\n y: y - y2,\n };\n }\n\n _getDistanceBetweenTwoPoints(x1, x2, y1, y2) {\n return Math.hypot(x2 - x1, y2 - y1);\n }\n\n _getMidPoint({ x1, x2, y1, y2 }) {\n return {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2,\n };\n }\n\n _getVectorLength({ x1, x2, y1, y2 }) {\n return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n }\n\n _getRightMostTouch(touches) {\n let rightMost = null;\n const distance = Number.MIN_VALUE;\n touches.forEach((touch) => {\n if (touch.clientX > distance) {\n rightMost = touch;\n }\n });\n return rightMost;\n }\n\n _getAngle(x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n }\n\n _getAngularDistance(start, end) {\n return end - start;\n }\n\n _getCenterXY({ x1, x2, y1, y2 }) {\n return {\n x: x1 + (x2 - x1) / 2,\n y: y1 + (y2 - y1) / 2,\n };\n }\n\n _getPinchTouchOrigin(touches) {\n const [t1, t2] = touches;\n\n const _position = {\n x1: t1.clientX,\n x2: t2.clientX,\n y1: t1.clientY,\n y2: t2.clientY,\n };\n\n return [this._getVectorLength(_position), this._getCenterXY(_position)];\n }\n\n _getPosition({ x1, x2, y1, y2 }) {\n return { x1, x2, y1, y2 };\n }\n}\n\nexport default TouchUtil;\n","import TouchUtil from './touchUtil';\nimport EventHandler from '../../mdb/dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n time: 250,\n pointers: 1,\n};\n\nconst NAME = 'press';\nconst EVENT_UP = 'pressup';\n\nclass Press extends TouchUtil {\n constructor(element, options = {}) {\n super();\n this._element = element;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n this._timer = null;\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n handleTouchStart(e) {\n const { time, pointers } = this._options;\n\n if (e.touches.length === pointers) {\n this._timer = setTimeout(() => {\n EventHandler.trigger(this._element, NAME, { touch: e, time });\n EventHandler.trigger(this._element, EVENT_UP, { touch: e });\n }, time);\n }\n }\n\n handleTouchEnd() {\n clearTimeout(this._timer);\n }\n}\n\nexport default Press;\n","import EventHandler from '../../mdb/dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n threshold: 10,\n direction: 'all',\n};\n\nclass Swipe {\n constructor(element, options) {\n this._element = element;\n this._startPosition = null;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n }\n\n handleTouchStart(e) {\n this._startPosition = this._getCoordinates(e);\n }\n\n handleTouchMove(e) {\n if (!this._startPosition) return;\n\n const position = this._getCoordinates(e);\n const displacement = {\n x: position.x - this._startPosition.x,\n y: position.y - this._startPosition.y,\n };\n\n const swipe = this._getDirection(displacement);\n\n if (this._options.direction === 'all') {\n if (swipe.y.value < this._options.threshold && swipe.x.value < this._options.threshold) {\n return;\n }\n const direction = swipe.y.value > swipe.x.value ? swipe.y.direction : swipe.x.direction;\n EventHandler.trigger(this._element, `swipe${direction}`, { touch: e });\n EventHandler.trigger(this._element, 'swipe', { touch: e, direction });\n this._startPosition = null;\n return;\n }\n\n const axis = this._options.direction === 'left' || this._options === 'right' ? 'x' : 'y';\n\n if (\n swipe[axis].direction === this._options.direction &&\n swipe[axis].value > this._options.threshold\n ) {\n EventHandler.trigger(this._element, `swipe${swipe[axis].direction}`, { touch: e });\n this._startPosition = null;\n }\n }\n\n handleTouchEnd() {\n this._startPosition = null;\n }\n\n _getCoordinates(e) {\n const [touch] = e.touches;\n return {\n x: touch.clientX,\n y: touch.clientY,\n };\n }\n\n _getDirection(displacement) {\n return {\n x: {\n direction: displacement.x < 0 ? 'left' : 'right',\n value: Math.abs(displacement.x),\n },\n y: {\n direction: displacement.y < 0 ? 'up' : 'down',\n value: Math.abs(displacement.y),\n },\n };\n }\n}\n\nexport default Swipe;\n","import TouchUtil from './touchUtil';\nimport EventHandler from '../../mdb/dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n threshold: 20,\n direction: 'all',\n pointers: 1,\n};\n\nconst NAME = 'pan';\nconst EVENT_START = `${NAME}start`;\nconst EVENT_END = `${NAME}end`;\nconst EVENT_MOVE = `${NAME}move`;\nconst LEFT = 'left';\nconst RIGHT = 'right';\n\nclass Pan extends TouchUtil {\n constructor(element, options = {}) {\n super();\n this._element = element;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n this._startTouch = null;\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n handleTouchStart(e) {\n this._startTouch = this._getCoordinates(e);\n this._movedTouch = e;\n\n EventHandler.trigger(this._element, EVENT_START, { touch: e });\n }\n\n handleTouchMove(e) {\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchmove' && e.preventDefault();\n\n const { threshold, direction } = this._options;\n const postion = this._getCoordinates(e);\n const movedPosition = this._getCoordinates(this._movedTouch);\n\n const displacement = this._getOrigin(postion, this._startTouch);\n const displacementMoved = this._getOrigin(postion, movedPosition);\n\n const pan = this._getDirection(displacement);\n const movedDirection = this._getDirection(displacementMoved);\n\n const { x, y } = pan;\n\n if (direction === 'all' && (y.value > threshold || x.value > threshold)) {\n const direction = y.value > x.value ? y.direction : x.direction;\n\n EventHandler.trigger(this._element, `${NAME}${direction}`, { touch: e });\n EventHandler.trigger(this._element, NAME, { ...displacementMoved, touch: e });\n }\n\n const axis = direction === LEFT || direction === RIGHT ? 'x' : 'y';\n\n if (movedDirection[axis].direction === direction && pan[axis].value > threshold) {\n EventHandler.trigger(this._element, `${NAME}${direction}`, {\n touch: e,\n [axis]: postion[axis] - movedPosition[axis],\n });\n }\n\n this._movedTouch = e;\n\n EventHandler.trigger(this._element, EVENT_MOVE, { touch: e });\n }\n\n handleTouchEnd(e) {\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchend' && e.preventDefault();\n\n this._movedTouch = null;\n this._startTouch = null;\n\n EventHandler.trigger(this._element, EVENT_END, { touch: e });\n }\n}\n\nexport default Pan;\n","import TouchUtil from './touchUtil';\nimport EventHandler from '../../mdb/dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n pointers: 2,\n threshold: 10,\n};\n\nconst NAME = 'pinch';\nconst EVENT_END = `${NAME}end`;\nconst EVENT_START = `${NAME}start`;\nconst EVENT_MOVE = `${NAME}move`;\nclass Pinch extends TouchUtil {\n constructor(element, options = {}) {\n super();\n this._element = element;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n this._startTouch = null;\n this._origin = null;\n this._touch = null;\n this._math = null;\n this._ratio = null;\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get isNumber() {\n return (\n typeof this._startTouch === 'number' &&\n typeof this._touch === 'number' &&\n // eslint-disable-next-line no-restricted-globals\n !isNaN(this._startTouch) &&\n // eslint-disable-next-line no-restricted-globals\n !isNaN(this._touch)\n );\n }\n\n handleTouchStart(e) {\n if (e.touches.length !== this._options.pointers) return;\n\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchstart' && e.preventDefault();\n\n const [touch, origin] = this._getPinchTouchOrigin(e.touches);\n\n this._touch = touch;\n this._origin = origin;\n this._startTouch = this._touch;\n\n EventHandler.trigger(this._element, EVENT_START, {\n touch: e,\n ratio: this._ratio,\n origin: this._origin,\n });\n }\n\n handleTouchMove(e) {\n const { threshold, pointers } = this._options;\n\n if (e.touches.length !== pointers) return;\n\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchmove' && e.preventDefault();\n\n this._touch = this._getPinchTouchOrigin(e.touches)[0];\n this._ratio = this._touch / this._startTouch;\n\n if (this.isNumber) {\n if (this._origin.x > threshold || this._origin.y > threshold) {\n this._startTouch = this._touch;\n\n EventHandler.trigger(this._element, NAME, {\n touch: e,\n ratio: this._ratio,\n origin: this._origin,\n });\n EventHandler.trigger(this._element, EVENT_MOVE, {\n touch: e,\n ratio: this._ratio,\n origin: this._origin,\n });\n }\n }\n }\n\n handleTouchEnd(e) {\n if (this.isNumber) {\n this._startTouch = null;\n\n EventHandler.trigger(this._element, EVENT_END, {\n touch: e,\n ratio: this._ratio,\n origin: this._origin,\n });\n }\n }\n}\n\nexport default Pinch;\n","import TouchUtil from './touchUtil';\nimport EventHandler from '../../mdb/dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n interval: 500,\n time: 250,\n taps: 1,\n pointers: 1,\n};\nconst NAME = 'tap';\n\nclass Tap extends TouchUtil {\n constructor(element, options) {\n super();\n this._element = element;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n this._timer = null;\n this._tapCount = 0;\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n handleTouchStart(e) {\n const { x, y } = this._getCoordinates(e);\n const { interval, taps, pointers } = this._options;\n\n if (e.touches.length === pointers) {\n this._tapCount += 1;\n\n if (this._tapCount === 1) {\n this._timer = setTimeout(() => {\n this._tapCount = 0;\n }, interval);\n }\n\n if (this._tapCount === taps) {\n clearTimeout(this._timer);\n this._tapCount = 0;\n EventHandler.trigger(this._element, NAME, {\n touch: e,\n origin: {\n x,\n y,\n },\n });\n }\n }\n\n return e;\n }\n\n handleTouchEnd() {\n return;\n }\n\n handleTouchMove() {\n return;\n }\n}\n\nexport default Tap;\n","/* eslint-disable no-multi-assign */\nimport TouchUtil from './touchUtil';\nimport EventHandler from '../../mdb/dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n angle: 0,\n pointers: 2,\n};\nconst NAME = 'rotate';\nconst EVENT_END = `${NAME}end`;\nconst EVENT_START = `${NAME}start`;\n\nclass Rotate extends TouchUtil {\n constructor(element, options) {\n super();\n this._element = element;\n this._options = {\n ...DEFAULT_OPTIONS,\n ...options,\n };\n this._origin = {};\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n handleTouchStart(e) {\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchstart' && e.preventDefault();\n\n if (e.touches.length < 2) return;\n this._startTouch = e;\n this._origin = {};\n EventHandler.trigger(this._element, EVENT_START, { touch: e });\n return;\n }\n\n handleTouchMove(e) {\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchmove' && e.preventDefault();\n\n let origin;\n let input;\n const touches = e.touches;\n\n if (touches.length === 1 && this._options.pointers === 1) {\n const { left, top, width, height } = this._element.getBoundingClientRect();\n origin = {\n x: left + width / 2,\n y: top + height / 2,\n };\n\n input = touches[0];\n } else if (e.touches.length === 2 && this._options.pointers === 2) {\n const [t2, t1] = e.touches;\n const _position = {\n x1: t1.clientX,\n x2: t2.clientX,\n y1: t1.clientY,\n y2: t2.clientY,\n };\n\n origin = this._getMidPoint(_position);\n input = this._getRightMostTouch(e.touches);\n } else {\n return;\n }\n\n this.currentAngle = this._getAngle(origin.x, origin.y, input.clientX, input.clientY);\n\n if (!this._origin.initialAngle) {\n this._origin.initialAngle = this._origin.previousAngle = this.currentAngle;\n this._origin.distance = this._origin.change = 0;\n } else {\n this._origin.change = this._getAngularDistance(this._origin.previousAngle, this.currentAngle);\n this._origin.distance += this._origin.change;\n }\n\n this._origin.previousAngle = this.currentAngle;\n\n this.rotate = {\n currentAngle: this.currentAngle,\n distance: this._origin.distance,\n change: this._origin.change,\n };\n\n EventHandler.trigger(this._element, NAME, { ...this.rotate, touch: e });\n }\n\n handleTouchEnd(e) {\n // eslint-disable-next-line no-unused-expressions\n e.type === 'touchend' && e.preventDefault();\n\n this._origin = {};\n\n EventHandler.trigger(this._element, EVENT_END, { touch: e });\n }\n}\n\nexport default Rotate;\n","import Data from '../../mdb/dom/data';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport Press from './press';\nimport Swipe from './swipe';\nimport Pan from './pan';\nimport Pinch from './pinch';\nimport Tap from './tap';\nimport Rotate from './rotate';\nimport BaseComponent from '../../free/base-component';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\nconst NAME = 'touch';\nconst DATA_KEY = 'mdb.touch';\n\nclass Touch extends BaseComponent {\n constructor(element, event = 'swipe', options = {}) {\n super(element);\n\n this._options = this._getConfig(options);\n this._event = this._options.event || event;\n\n // events\n\n this.swipe = this._event === 'swipe' ? new Swipe(element, this._options) : null;\n this.press = this._event === 'press' ? new Press(element, this._options) : null;\n this.pan = this._event === 'pan' ? new Pan(element, this._options) : null;\n this.pinch = this._event === 'pinch' ? new Pinch(element, this._options) : null;\n this.tap = this._event === 'tap' ? new Tap(element, this._options) : null;\n this.rotate = this._event === 'rotate' ? new Rotate(element, this._options) : null;\n\n // handlers\n\n this._touchStartHandler = this._handleTouchStart.bind(this);\n this._touchMoveHandler = this._handleTouchMove.bind(this);\n this._touchEndHandler = this._handleTouchEnd.bind(this);\n\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n\n dispose() {\n EventHandler.off(this._element, 'touchstart', this._touchStartHandler);\n EventHandler.off(this._element, 'touchmove', this._touchMoveHandler);\n EventHandler.off(this._element, 'touchend', this._touchEndHandler);\n\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n init() {\n // istanbul ignore next\n EventHandler.on(this._element, 'touchstart', this._touchStartHandler);\n\n // istanbul ignore next\n EventHandler.on(this._element, 'touchmove', this._touchMoveHandler);\n\n // istanbul ignore next\n EventHandler.on(this._element, 'touchend', this._touchEndHandler);\n }\n\n // Private\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...dataAttributes,\n ...config,\n };\n\n return config;\n }\n\n _handleTouchStart(e) {\n this[this._event].handleTouchStart(e);\n }\n\n _handleTouchMove(e) {\n if (this[this._event].handleTouchMove) {\n this[this._event].handleTouchMove(e);\n }\n }\n\n _handleTouchEnd(e) {\n this[this._event].handleTouchEnd(e);\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Touch(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n // eslint-disable-next-line consistent-return\n return data[config];\n }\n });\n }\n}\n\nexport default Touch;\n","import { element, typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\nconst NAME = 'smoothScroll';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst DefaultType = {\n container: 'string',\n offset: 'number',\n easing: 'string',\n duration: 'number',\n};\n\nconst Default = {\n container: 'body',\n offset: 0,\n easing: 'linear',\n duration: 500,\n};\n\nconst EVENT_SCROLL_START = `scrollStart${EVENT_KEY}`;\nconst EVENT_SCROLL_END = `scrollEnd${EVENT_KEY}`;\nconst EVENT_SCROLL_CANCEL = `scrollCancel${EVENT_KEY}`;\n\nclass SmoothScroll extends BaseComponent {\n constructor(element, options = {}) {\n super(element);\n\n this._options = this._getConfig(options);\n this._href = this._element.getAttribute('href');\n this.isCancel = false;\n\n if (this._element) {\n this._setup();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // getters\n\n static get NAME() {\n return NAME;\n }\n\n get isWindow() {\n return this._options.container === 'body';\n }\n\n get containerToScroll() {\n return this.isWindow\n ? document.documentElement\n : SelectorEngine.findOne(this._options.container, document.documentElement);\n }\n\n get elFromHrefExist() {\n return !!SelectorEngine.findOne(this._href, this.containerToScroll);\n }\n\n get offsetFromEl() {\n const heightFromTop = this.containerToScroll.scrollTop;\n const el = SelectorEngine.findOne(this._href, this.containerToScroll);\n if (this.isWindow) {\n return Manipulator.offset(el).top - this._options.offset + heightFromTop;\n }\n const elY = el.getBoundingClientRect().y;\n const containerY = this.containerToScroll.getBoundingClientRect().y;\n const offsetFromContainer = elY - containerY;\n\n return offsetFromContainer - this._options.offset + heightFromTop;\n }\n\n get easingFunction() {\n const easing = this._options.easing;\n const motionName = `_motion${easing[0].toUpperCase()}${easing.slice(1)}`;\n return this[motionName] ? this[motionName] : this._motionLinear;\n }\n\n // public\n\n dispose() {\n EventHandler.off(this._element, 'click');\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n cancelScroll() {\n this.isCancel = true;\n }\n\n // private\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n _inViewport() {\n if (this.isWindow) {\n return true;\n }\n const rect = this.containerToScroll.getBoundingClientRect();\n return (\n rect.top >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n\n _setup() {\n const linkExist = typeof this._href !== 'undefined';\n const isHashInLink = this._href.includes('#');\n\n if (linkExist && isHashInLink && this.elFromHrefExist) {\n this._scrollOnClickEvent();\n this._preventNativeScroll();\n }\n }\n\n _scrollOnClickEvent() {\n EventHandler.on(this._element, 'click', (e) => {\n this._handleClick(e);\n });\n }\n\n _handleClick(e) {\n e.preventDefault();\n this.isCancel = false;\n\n EventHandler.trigger(this._element, EVENT_SCROLL_START);\n\n const scrollingContainer = this.containerToScroll;\n const positionFrom = this.containerToScroll.scrollTop;\n const positionTo = this.offsetFromEl;\n const scrollProgress = 0;\n const speed = 1 / this._options.duration;\n // Thanks to this value time of scrolling is almost equal to value which user set\n const step = 4.25;\n const easing = this.easingFunction;\n\n if (!this._inViewport()) {\n this._scrollOnNextTick(\n document.documentElement,\n document.documentElement.scrollTop,\n this.containerToScroll.offsetTop,\n scrollProgress,\n speed,\n step,\n easing\n );\n\n // Function which is waiting for ends scrolling to viewport\n setTimeout(() => {\n this._scrollOnNextTick(\n scrollingContainer,\n positionFrom,\n positionTo,\n scrollProgress,\n speed,\n step,\n easing\n );\n this.isCancel = false;\n }, this._options.duration);\n } else {\n this._scrollOnNextTick(\n scrollingContainer,\n positionFrom,\n positionTo,\n scrollProgress,\n speed,\n step,\n easing\n );\n }\n }\n\n _scrollOnNextTick(\n scrollingContainer,\n positionFrom,\n positionTo,\n scrollProgress,\n speed,\n step,\n easing\n ) {\n const progressWrongValue = scrollProgress < 0;\n const scrollEnd = scrollProgress > 1;\n const speedWrongValue = speed <= 0;\n if (progressWrongValue || scrollEnd || speedWrongValue || this.isCancel) {\n if (this.isCancel) {\n if (this.isInViewport) {\n this.isCancel = false;\n }\n EventHandler.trigger(this._element, EVENT_SCROLL_CANCEL);\n return;\n }\n EventHandler.trigger(this._element, EVENT_SCROLL_END);\n scrollingContainer.scrollTop = positionTo;\n return;\n }\n scrollingContainer.scrollTo({\n top: positionFrom - (positionFrom - positionTo) * easing(scrollProgress),\n });\n scrollProgress += speed * step;\n\n // After one tick ends next tick is able to run, otherwise scrolling aren't goint to be animated\n setTimeout(() => {\n this._scrollOnNextTick(\n scrollingContainer,\n positionFrom,\n positionTo,\n scrollProgress,\n speed,\n step,\n easing\n );\n });\n }\n\n _preventDefault(e) {\n e.preventDefault();\n }\n\n _preventNativeScroll() {\n let supportsPassive = false;\n try {\n window.addEventListener(\n 'test',\n null,\n Object.defineProperty({}, 'passive', {\n get: () => (supportsPassive = true),\n })\n );\n } catch (e) {\n this._scrollError = e;\n }\n\n const wheelOpt = supportsPassive ? { passive: false } : false;\n const wheelEvent = 'onwheel' in element('div') ? 'wheel' : 'mousewheel';\n if (this.isWindow) {\n this._deleteScrollOnStart(wheelOpt, wheelEvent);\n this._addScrollOnEnd(wheelOpt, wheelEvent);\n this._addScrollOnCancel(wheelOpt, wheelEvent);\n }\n }\n\n _deleteScrollOnStart(wheelOpt, wheelEvent) {\n EventHandler.on(this._element, 'scrollStart.mdb.smoothScroll', () => {\n window.addEventListener(wheelEvent, this._preventDefault, wheelOpt);\n window.addEventListener('touchmove', this._preventDefault, wheelOpt);\n });\n }\n\n _addScrollOnEnd(wheelOpt, wheelEvent) {\n EventHandler.on(this._element, 'scrollEnd.mdb.smoothScroll', () => {\n window.removeEventListener(wheelEvent, this._preventDefault, wheelOpt);\n window.removeEventListener('touchmove', this._preventDefault, wheelOpt);\n });\n }\n\n _addScrollOnCancel(wheelOpt, wheelEvent) {\n EventHandler.on(this._element, 'scrollCancel.mdb.smoothScroll', () => {\n window.removeEventListener(wheelEvent, this._preventDefault, wheelOpt);\n window.removeEventListener('touchmove', this._preventDefault, wheelOpt);\n });\n }\n\n // Motions\n\n // Linear\n\n _motionLinear(t) {\n return t;\n }\n\n // Ease-In\n\n _motionEaseInQuad(t) {\n return t * t;\n }\n\n _motionEaseInCubic(t) {\n return t * t * t;\n }\n\n _motionEaseInQuart(t) {\n return t * t * t * t;\n }\n\n _motionEaseInQuint(t) {\n return t * t * t * t * t;\n }\n\n // Ease-In-Out\n\n _motionEaseInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n }\n\n _motionEaseInOutCubic(t) {\n t /= 0.5;\n if (t < 1) return (t * t * t) / 2;\n t -= 2;\n return (t * t * t + 2) / 2;\n }\n\n _motionEaseInOutQuart(t) {\n t /= 0.5;\n if (t < 1) return 0.5 * t * t * t * t;\n t -= 2;\n return -(t * t * t * t - 2) / 2;\n }\n\n _motionEaseInOutQuint(t) {\n t /= 0.5;\n if (t < 1) return (t * t * t * t * t) / 2;\n t -= 2;\n return (t * t * t * t * t + 2) / 2;\n }\n\n // Ease-Out\n\n _motionEaseOutQuad(t) {\n return -t * (t - 2);\n }\n\n _motionEaseOutCubic(t) {\n t--;\n return t * t * t + 1;\n }\n\n _motionEaseOutQuart(t) {\n t--;\n return -(t * t * t * t - 1);\n }\n\n _motionEaseOutQuint(t) {\n t--;\n return t * t * t * t * t + 1;\n }\n\n // static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new SmoothScroll(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n}\n\nexport default SmoothScroll;\n","/* eslint-disable no-restricted-globals */\nimport PerfectScrollbar from '../mdb/perfect-scrollbar';\nimport { typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport Manipulator from '../mdb/dom/manipulator';\nimport EventHandler from '../mdb/dom/event-handler';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\nconst NAME = 'perfectScrollbar';\nconst CLASSNAME_PS = 'perfect-scrollbar';\nconst DATA_KEY = 'mdb.perfectScrollbar';\nconst MDB_NAME = 'mdb';\nconst PS_NAME = 'ps';\n\nconst EVENTS = [\n { mdb: `scrollX.${MDB_NAME}.${PS_NAME}`, ps: 'ps-scroll-x' },\n { mdb: `scrollY.${MDB_NAME}.${PS_NAME}`, ps: 'ps-scroll-y' },\n { mdb: `scrollUp.${MDB_NAME}.${PS_NAME}`, ps: 'ps-scroll-up' },\n { mdb: `scrollDown.${MDB_NAME}.${PS_NAME}`, ps: 'ps-scroll-down' },\n { mdb: `scrollLeft.${MDB_NAME}.${PS_NAME}`, ps: 'ps-scroll-left' },\n { mdb: `scrollRight.${MDB_NAME}.${PS_NAME}`, ps: 'ps-scroll-right' },\n { mdb: `scrollXEnd.${MDB_NAME}.${PS_NAME}`, ps: 'ps-x-reach-end' },\n { mdb: `scrollYEnd.${MDB_NAME}.${PS_NAME}`, ps: 'ps-y-reach-end' },\n { mdb: `scrollXStart.${MDB_NAME}.${PS_NAME}`, ps: 'ps-x-reach-start' },\n { mdb: `scrollYStart.${MDB_NAME}.${PS_NAME}`, ps: 'ps-y-reach-start' },\n];\n\nconst Default = {\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n wheelSpeed: 1,\n wheelPropagation: true,\n swipeEasing: true,\n minScrollbarLength: null,\n maxScrollbarLength: null,\n scrollingThreshold: 1000,\n useBothWheelAxes: false,\n suppressScrollX: false,\n suppressScrollY: false,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n};\n\nconst DefaultType = {\n handlers: '(string|array)',\n wheelSpeed: 'number',\n wheelPropagation: 'boolean',\n swipeEasing: 'boolean',\n minScrollbarLength: '(number|null)',\n maxScrollbarLength: '(number|null)',\n scrollingThreshold: 'number',\n useBothWheelAxes: 'boolean',\n suppressScrollX: 'boolean',\n suppressScrollY: 'boolean',\n scrollXMarginOffset: 'number',\n scrollYMarginOffset: 'number',\n};\n\nclass PerfectScrollbars extends BaseComponent {\n constructor(element, options = {}) {\n super(element);\n\n this._options = this._getConfig(options);\n this.perfectScrollbar = null;\n\n if (this._element) {\n Manipulator.addClass(this._element, CLASSNAME_PS);\n }\n\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n if (dataAttributes.handlers !== undefined) {\n dataAttributes.handlers = dataAttributes.handlers.split(' ');\n }\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n // Public\n dispose() {\n this.removeEvent(EVENTS);\n this.perfectScrollbar.destroy();\n this.perfectScrollbar = null;\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n init() {\n this.perfectScrollbar = new PerfectScrollbar(this._element, this._options);\n\n this._initEvents(EVENTS);\n }\n\n update() {\n return this.perfectScrollbar.update();\n }\n\n _initEvents(events = []) {\n events.forEach(({ ps, mdb }) =>\n EventHandler.on(this._element, ps, (e) => EventHandler.trigger(this._element, mdb, { e }))\n );\n }\n\n removeEvent(event) {\n let filter = [];\n\n if (typeof event === 'string') {\n filter = EVENTS.filter(({ mdb }) => mdb === event);\n }\n\n filter.forEach(({ ps, mdb }) => {\n EventHandler.off(this._element, ps);\n EventHandler.off(this._element, mdb);\n });\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new PerfectScrollbars(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n}\n\nexport default PerfectScrollbars;\n","import { typeCheckConfig } from '../../mdb/util/index';\nimport Data from '../../mdb/dom/data';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport { getBackdropTemplate } from './templates';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\nconst NAME = 'loading';\nconst CLASS_SPINNER = 'loading-spinner';\nconst DATA_KEY = 'mdb.loading';\n\nconst SELECTOR_LOADING_ICON = '.loading-icon';\nconst SELECTOR_LOADING_TEXT = '.loading-text';\n\nconst SHOW_EVENT = 'show.mdb.loading';\n\nconst DefaultType = {\n backdrop: '(null|boolean)',\n backdropColor: 'string',\n backdropOpacity: '(number|string)',\n backdropID: 'string',\n delay: '(null|number)',\n loader: 'string',\n parentSelector: '(null|string)',\n loadingIcon: 'boolean',\n loadingText: 'boolean',\n scroll: 'boolean',\n};\n\nconst Default = {\n backdrop: true,\n backdropColor: 'rgba(0, 0, 0)',\n backdropOpacity: 0.4,\n backdropID: '',\n delay: null,\n loader: '',\n parentSelector: null,\n scroll: true,\n loadingText: true,\n loadingIcon: true,\n};\n\nclass Loading extends BaseComponent {\n constructor(element, options = {}) {\n super(element);\n\n this._options = this._getConfig(options);\n\n this._backdropElement = null;\n this._parentElement = SelectorEngine.findOne(this._options.parentSelector);\n\n this._loadingIcon = SelectorEngine.findOne(SELECTOR_LOADING_ICON, this._element);\n this._loadingText = SelectorEngine.findOne(SELECTOR_LOADING_TEXT, this._element);\n\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n\n init() {\n const spinnerCloned = this._loadingIcon.cloneNode(true);\n const loadingCloned = this._loadingText.cloneNode(true);\n\n this._removeElementsOnStart();\n\n setTimeout(() => {\n Manipulator.addClass(this._element, CLASS_SPINNER);\n\n this._setBackdrop();\n this._setLoadingIcon(spinnerCloned);\n this._setLoadingText(loadingCloned);\n this._setScrollOption();\n\n EventHandler.trigger(this._element, SHOW_EVENT);\n }, this._options.delay);\n }\n\n dispose() {\n Manipulator.removeClass(this._element, CLASS_SPINNER);\n\n const delay = this._options.delay;\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n setTimeout(() => {\n this._removeBackdrop();\n\n setTimeout(() => {\n super.dispose();\n }, delay);\n }, delay);\n }\n\n // Private\n\n _setBackdrop() {\n const { backdrop } = this._options;\n\n if (!backdrop) return;\n\n this._backdropElement = getBackdropTemplate(this._options);\n\n if (this._parentElement !== null) {\n Manipulator.addClass(this._element, 'position-absolute');\n Manipulator.addClass(this._parentElement, 'position-relative');\n Manipulator.addClass(this._backdropElement, 'position-absolute');\n\n this._parentElement.appendChild(this._backdropElement);\n } else {\n Manipulator.addClass(this._element, 'position-fixed');\n\n document.body.appendChild(this._backdropElement);\n document.body.appendChild(this._element);\n }\n }\n\n _removeBackdrop() {\n const { backdrop } = this._options;\n\n if (!backdrop) return;\n\n if (this._parentElement !== null) {\n Manipulator.removeClass(this._element, 'position-absolute');\n Manipulator.removeClass(this._parentElement, 'position-relative');\n\n this._backdropElement.remove();\n } else {\n this._backdropElement.remove();\n this._element.remove();\n }\n }\n\n _setLoadingIcon(spinner) {\n if (!this._options.loadingIcon) {\n spinner.remove();\n return;\n }\n this._element.appendChild(spinner);\n spinner.id = this._options.loader;\n }\n\n _setLoadingText(text) {\n if (!this._options.loadingText) {\n text.remove();\n return;\n }\n\n this._element.appendChild(text);\n }\n\n _removeElementsOnStart() {\n if (this._element === null) return;\n\n this._loadingIcon.remove();\n this._loadingText.remove();\n }\n\n _setScrollOption() {\n if (!this._options.scroll) {\n if (this._parentElement === null) {\n document.body.style.overflow = 'hidden';\n return;\n }\n\n Manipulator.addStyle(this._parentElement, { overflow: 'hidden' });\n } else {\n if (this._parentElement === null) {\n document.body.style.overflow = '';\n return;\n }\n\n Manipulator.addStyle(this._parentElement, { overflow: '' });\n }\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n if (!data) {\n data = new Loading(this, _config);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\nexport default Loading;\n","/* eslint-disable import/prefer-default-export */\nimport Manipulator from '../../mdb/dom/manipulator';\nimport { element } from '../../mdb/util/index';\n\nexport function getBackdropTemplate({ backdropID, backdropOpacity, backdropColor }) {\n const backdrop = element('div');\n\n Manipulator.addClass(backdrop, 'loading-backdrop');\n backdrop.id = backdropID;\n Manipulator.addStyle(backdrop, { opacity: backdropOpacity, backgroundColor: backdropColor });\n\n return backdrop;\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href',\n]);\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN =\n /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(\n attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)\n );\n }\n\n return true;\n }\n\n const regExp = allowedAttributeList.filter((attrRegex) => attrRegex instanceof RegExp);\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: [],\n};\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const whitelistKeys = Object.keys(whiteList);\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i];\n const elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(elName) === -1) {\n el.parentNode.removeChild(el);\n\n continue;\n }\n\n const attributeList = [].concat(...el.attributes);\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n\n attributeList.forEach((attr) => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n }\n\n return createdDocument.body.innerHTML;\n}\n","import { element } from '../../mdb/util/index';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport { sanitizeHtml, DefaultWhitelist } from '../../mdb/util/sanitizer';\n\nconst CLASS_NAME_AUTOCOMPLETE_DROPDOWN_CONTAINER = 'autocomplete-dropdown-container';\nconst CLASS_NAME_AUTOCOMPLETE_DROPDOWN = 'autocomplete-dropdown';\nconst CLASS_NAME_AUTOCOMPLETE_ITEMS_LIST = 'autocomplete-items-list';\nconst CLASS_NAME_AUTOCOMPLETE_ITEM = 'autocomplete-item';\nconst CLASS_NAME_LOADER = 'autocomplete-loader';\nconst CLASS_NAME_SPINNER_BORDER = 'spinner-border';\nconst CLASS_NAME_NO_RESULTS = 'autocomplete-item autocomplete-no-results';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function getDropdownTemplate(settings) {\n const { id, items, width, options } = settings;\n\n const dropdownContainer = element('div');\n Manipulator.addClass(dropdownContainer, CLASS_NAME_AUTOCOMPLETE_DROPDOWN_CONTAINER);\n Manipulator.addStyle(dropdownContainer, { width: `${width}px` });\n dropdownContainer.setAttribute('id', id);\n\n const dropdown = element('div');\n Manipulator.addClass(dropdown, CLASS_NAME_AUTOCOMPLETE_DROPDOWN);\n\n const itemsList = element('ul');\n const listHeight = options.listHeight;\n Manipulator.addClass(itemsList, CLASS_NAME_AUTOCOMPLETE_ITEMS_LIST);\n Manipulator.addStyle(itemsList, { maxHeight: `${listHeight}px` });\n itemsList.setAttribute('role', 'listbox');\n\n const itemsListTemplate = getItemsTemplate(items, options);\n\n itemsList.innerHTML = itemsListTemplate;\n\n dropdown.appendChild(itemsList);\n dropdownContainer.appendChild(dropdown);\n\n return dropdownContainer;\n}\n\nexport function getItemsTemplate(items = [], options) {\n const displayValue = options.displayValue;\n const itemContent = options.itemContent;\n return `\n ${items\n .map((item, index) => {\n const content =\n typeof itemContent === 'function'\n ? sanitizeHtml(itemContent(item), DefaultWhitelist, null)\n : displayValue(item);\n return `<li data-mdb-index=\"${index}\" role=\"option\" class=\"${CLASS_NAME_AUTOCOMPLETE_ITEM}\">${content}</li>`;\n })\n .join('')}\n `;\n}\n\nexport function getLoaderTemplate() {\n const container = element('div');\n Manipulator.addClass(container, CLASS_NAME_LOADER);\n Manipulator.addClass(container, CLASS_NAME_SPINNER_BORDER);\n container.setAttribute('role', 'status');\n\n const content = '<span class=\"sr-only\">Loading...</span>';\n container.innerHTML = content;\n\n return container;\n}\n\nexport function getNoResultsTemplate(message) {\n return `<li class=\"${CLASS_NAME_NO_RESULTS}\">${message}</li>`;\n}\n","import { createPopper } from '@popperjs/core';\nimport Data from '../../mdb/dom/data';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport { typeCheckConfig, getUID, defineJQueryPlugin } from '../../mdb/util/index';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport {\n getDropdownTemplate,\n getItemsTemplate,\n getLoaderTemplate,\n getNoResultsTemplate,\n} from './templates';\nimport { ESCAPE, UP_ARROW, DOWN_ARROW, HOME, END, ENTER, TAB } from '../../mdb/util/keycodes';\nimport { sanitizeHtml, DefaultWhitelist } from '../../mdb/util/sanitizer';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\nconst Default = {\n autoSelect: false,\n container: 'body',\n customContent: '',\n debounce: 300,\n displayValue: (value) => value,\n filter: null,\n itemContent: null,\n listHeight: 190,\n noResults: 'No results found',\n threshold: 0,\n};\n\nconst DefaultType = {\n autoSelect: 'boolean',\n container: 'string',\n customContent: 'string',\n debounce: 'number',\n displayValue: 'function',\n filter: '(null|function)',\n itemContent: '(null|function)',\n listHeight: 'number',\n noResults: 'string',\n threshold: 'number',\n};\n\nconst NAME = 'autocomplete';\nconst DATA_KEY = 'mdb.autocomplete';\n\nconst CLASS_NAME_CUSTOM_INPUT = 'autocomplete-input';\nconst CLASS_NAME_CUSTOM_LABEL = 'autocomplete-label';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FOCUSED = 'focused';\nconst CLASS_NAME_FOCUSING = 'focusing';\nconst CLASS_NAME_OPEN = 'open';\n\nconst SELECTOR_DROPDOWN = '.autocomplete-dropdown';\nconst SELECTOR_ITEMS_LIST = '.autocomplete-items-list';\nconst SELECTOR_ITEM = '.autocomplete-item';\nconst SELECTOR_LOADER = '.autocomplete-loader';\nconst SELECTOR_INPUT = '.form-control';\nconst SELECTOR_LABEL = '.form-label';\nconst SELECTOR_CUSTOM_CONTENT = '.autocomplete-custom-content';\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_CLOSE = `close${EVENT_KEY}`;\nconst EVENT_OPEN = `open${EVENT_KEY}`;\nconst EVENT_SELECT = `itemSelect${EVENT_KEY}`;\nconst EVENT_UPDATE = `update${EVENT_KEY}`;\n\nconst LOADER_CLOSE_DELAY = 300;\n\nclass Autocomplete extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._options = this._getConfig(options);\n this._getContainer();\n this._input = SelectorEngine.findOne(SELECTOR_INPUT, element);\n this._label = SelectorEngine.findOne(SELECTOR_LABEL, element);\n this._customContent = SelectorEngine.findOne(SELECTOR_CUSTOM_CONTENT, element);\n this._loader = getLoaderTemplate();\n this._popper = null;\n this._debounceTimeoutId = null;\n this._loaderTimeout = null;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._filteredResults = null;\n this._lastQueryValue = null;\n this._canOpenOnFocus = true;\n this._isOpen = false;\n\n this._outsideClickHandler = this._handleOutsideClick.bind(this);\n this._inputFocusHandler = this._handleInputFocus.bind(this);\n this._userInputHandler = this._handleUserInput.bind(this);\n this._keydownHandler = this._handleKeydown.bind(this);\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n static get NAME() {\n return NAME;\n }\n\n get filter() {\n return this._options.filter;\n }\n\n get dropdown() {\n return SelectorEngine.findOne(SELECTOR_DROPDOWN, this._dropdownContainer);\n }\n\n get items() {\n return SelectorEngine.find(SELECTOR_ITEM, this._dropdownContainer);\n }\n\n get itemsList() {\n return SelectorEngine.findOne(SELECTOR_ITEMS_LIST, this._dropdownContainer);\n }\n\n search(value) {\n this._filterResults(value);\n }\n\n _getContainer() {\n this._container = SelectorEngine.findOne(this._options.container);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n\n return config;\n }\n\n _init() {\n this._initDropdown();\n this._setInputAndLabelClasses();\n this._updateLabelPosition();\n this._setInputAriaAttributes();\n this._listenToInputFocus();\n this._listenToUserInput();\n this._listenToKeydown();\n }\n\n _initDropdown() {\n this._dropdownContainerId = this._element.id\n ? `autocomplete-dropdown-${this._element.id}`\n : getUID('autocomplete-dropdown-');\n const settings = {\n id: this._dropdownContainerId,\n items: [],\n width: this._input.offsetWidth,\n options: this._options,\n };\n\n this._dropdownContainer = getDropdownTemplate(settings);\n\n if (this._options.customContent !== '') {\n const customContent = this._options.customContent;\n const sanitizedCustomContent = sanitizeHtml(customContent, DefaultWhitelist, null);\n this.dropdown.insertAdjacentHTML('beforeend', sanitizedCustomContent);\n }\n }\n\n _setInputAndLabelClasses() {\n Manipulator.addClass(this._input, CLASS_NAME_CUSTOM_INPUT);\n\n if (this._label) {\n Manipulator.addClass(this._label, CLASS_NAME_CUSTOM_LABEL);\n }\n }\n\n _setInputAriaAttributes() {\n this._input.setAttribute('role', 'combobox');\n this._input.setAttribute('aria-expanded', false);\n this._input.setAttribute('aria-owns', this._dropdownContainerId);\n this._input.setAttribute('aria-haspopup', true);\n this._input.setAttribute('autocomplete', 'off');\n }\n\n _updateLabelPosition() {\n if (!this._label) {\n return;\n }\n\n if (this._input.value !== '' || this._isOpen) {\n Manipulator.addClass(this._label, CLASS_NAME_ACTIVE);\n } else {\n Manipulator.removeClass(this._label, CLASS_NAME_ACTIVE);\n }\n }\n\n _listenToInputFocus() {\n EventHandler.on(this._input, 'focus', this._inputFocusHandler);\n }\n\n _handleInputFocus(event) {\n const { value } = event.target;\n const threshold = this._options.threshold;\n\n if (!this._canOpenOnFocus) {\n this._canOpenOnFocus = true;\n return;\n }\n\n if (value.length < threshold) {\n return;\n }\n\n if (this._lastQueryValue !== value) {\n this._filterResults(value);\n } else {\n this.open();\n }\n }\n\n _listenToWindowResize() {\n this._windowResizeHandler = this._handleWindowResize.bind(this);\n\n EventHandler.on(window, 'resize', this._windowResizeHandler);\n }\n\n _handleWindowResize() {\n if (this._dropdownContainer) {\n this._updateDropdownWidth();\n }\n }\n\n _updateDropdownWidth() {\n const inputWidth = this._input.offsetWidth;\n Manipulator.addStyle(this._dropdownContainer, { width: `${inputWidth}px` });\n }\n\n _listenToUserInput() {\n EventHandler.on(this._input, 'input', this._userInputHandler);\n }\n\n _handleUserInput(event) {\n const { value } = event.target;\n const threshold = this._options.threshold;\n const debounceTime = this._options.debounce;\n\n if (!this.filter) {\n return;\n }\n\n if (value.length < threshold) {\n if (this._isOpen) {\n this.close();\n }\n return;\n }\n\n this._debounceFilter(value, debounceTime);\n }\n\n _debounceFilter(searchTerm, debounceTime) {\n if (this._debounceTimeoutId) {\n clearTimeout(this._debounceTimeoutId);\n }\n\n this._debounceTimeoutId = setTimeout(() => {\n this._filterResults(searchTerm);\n }, debounceTime);\n }\n\n _filterResults(value) {\n this._lastQueryValue = value;\n const data = this.filter(value);\n\n if (this._isPromise(data)) {\n this._asyncUpdateResults(data);\n } else {\n this._updateResults(data);\n }\n }\n\n _isPromise(value) {\n return !!value && typeof value.then === 'function';\n }\n\n _asyncUpdateResults(data) {\n this._resetActiveItem();\n this._showLoader();\n\n data.then((items) => {\n this._updateResults(items);\n\n this._loaderTimeout = setTimeout(() => {\n this._hideLoader();\n this._loaderTimeout = null;\n }, LOADER_CLOSE_DELAY);\n });\n }\n\n _resetActiveItem() {\n const currentActive = this._activeItem;\n\n if (currentActive) {\n Manipulator.removeClass(currentActive, 'active');\n this._activeItem = null;\n this._activeItemIndex = -1;\n }\n }\n\n _showLoader() {\n this._element.appendChild(this._loader);\n }\n\n _hideLoader() {\n const loader = SelectorEngine.findOne(SELECTOR_LOADER, this._element);\n\n if (loader) {\n this._element.removeChild(this._loader);\n }\n }\n\n _updateResults(data) {\n this._resetActiveItem();\n this._filteredResults = data;\n EventHandler.trigger(this._element, EVENT_UPDATE, { results: data });\n\n const itemsList = SelectorEngine.findOne('.autocomplete-items-list', this._dropdownContainer);\n const newTemplate = getItemsTemplate(data, this._options);\n const noResultsTemplate = getNoResultsTemplate(this._options.noResults);\n\n if (data.length === 0 && this._options.noResults !== '') {\n itemsList.innerHTML = noResultsTemplate;\n } else {\n itemsList.innerHTML = newTemplate;\n }\n\n if (!this._isOpen) {\n this.open();\n }\n\n if (this._popper) {\n this._popper.forceUpdate();\n }\n }\n\n _listenToKeydown() {\n EventHandler.on(this._element, 'keydown', this._keydownHandler);\n }\n\n _handleKeydown(event) {\n if (this._isOpen) {\n this._handleOpenKeydown(event);\n } else {\n this._handleClosedKeydown(event);\n }\n }\n\n _handleOpenKeydown(event) {\n const key = event.keyCode;\n\n if (key === TAB && this._options.autoSelect) {\n this._selectActiveItem();\n }\n\n // fix for flashing notch\n if (key === ESCAPE || (key === UP_ARROW && event.altKey)) {\n if (!this._input.value) {\n Manipulator.addClass(this._input, CLASS_NAME_FOCUSING);\n }\n\n this.close();\n this._input.focus();\n\n if (!this._input.value) {\n setTimeout(() => {\n Manipulator.removeClass(this._input, CLASS_NAME_FOCUSING);\n }, 10);\n }\n return;\n }\n\n const isCloseKey = key === ESCAPE || (key === UP_ARROW && event.altKey) || key === TAB;\n\n if (isCloseKey) {\n this.close();\n this._input.focus();\n return;\n }\n\n switch (key) {\n case DOWN_ARROW:\n this._setActiveItem(this._activeItemIndex + 1);\n this._scrollToItem(this._activeItem);\n break;\n case UP_ARROW:\n this._setActiveItem(this._activeItemIndex - 1);\n this._scrollToItem(this._activeItem);\n break;\n case HOME:\n if (event.shiftKey) {\n const start = 0;\n const end = this._input.selectionStart;\n this._input.setSelectionRange(start, end);\n } else if (this._activeItemIndex > -1) {\n this._setActiveItem(0);\n this._scrollToItem(this._activeItem);\n } else {\n this._input.setSelectionRange(0, 0);\n }\n break;\n case END:\n if (event.shiftKey) {\n const start = this._input.selectionStart;\n const end = this._input.value.length;\n this._input.setSelectionRange(start, end);\n } else if (this._activeItemIndex > -1) {\n this._setActiveItem(this.items.length - 1);\n this._scrollToItem(this._activeItem);\n } else {\n const end = this._input.value.length;\n this._input.setSelectionRange(end, end);\n }\n break;\n case ENTER:\n event.preventDefault();\n if (this._activeItemIndex > -1) {\n const item = this._filteredResults[this._activeItemIndex];\n this._handleSelection(item);\n }\n return;\n default:\n return;\n }\n\n event.preventDefault();\n }\n\n _setActiveItem(index) {\n const items = this.items;\n\n if (!items[index]) {\n return;\n }\n\n this._updateActiveItem(items[index], index);\n }\n\n _updateActiveItem(newActiveItem, index) {\n const currentActiveItem = this._activeItem;\n\n if (currentActiveItem) {\n Manipulator.removeClass(currentActiveItem, 'active');\n }\n\n Manipulator.addClass(newActiveItem, 'active');\n this._activeItemIndex = index;\n this._activeItem = newActiveItem;\n }\n\n _scrollToItem(item) {\n if (!item) {\n return;\n }\n\n const list = this.itemsList;\n const listHeight = list.offsetHeight;\n const itemIndex = this.items.indexOf(item);\n const itemHeight = item.offsetHeight;\n const scrollTop = list.scrollTop;\n\n if (itemIndex > -1) {\n const itemOffset = itemIndex * itemHeight;\n const isBelow = itemOffset + itemHeight > scrollTop + listHeight;\n const isAbove = itemOffset < scrollTop;\n\n if (isAbove) {\n list.scrollTop = itemOffset;\n } else if (isBelow) {\n list.scrollTop = itemOffset - listHeight + itemHeight;\n } else {\n list.scrollTop = scrollTop;\n }\n }\n }\n\n _handleClosedKeydown(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n const key = event.keyCode;\n const isOpenKey = key === ENTER || key === DOWN_ARROW || key === DOWN_ARROW;\n\n if (isOpenKey) {\n this.open();\n }\n }\n\n open() {\n if (this._lastQueryValue === null) {\n this._filterResults('');\n }\n\n const openEvent = EventHandler.trigger(this._element, EVENT_OPEN);\n\n if (this._isOpen || openEvent.defaultPrevented) {\n return;\n }\n this._updateDropdownWidth();\n this._listenToWindowResize();\n\n this._popper = createPopper(this._element, this._dropdownContainer, {\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 1],\n },\n },\n ],\n });\n this._container.appendChild(this._dropdownContainer);\n\n this._listenToOutsideClick();\n this._listenToItemsClick();\n\n // We need to add delay to wait for the popper initialization\n // and position update\n setTimeout(() => {\n Manipulator.addClass(this.dropdown, CLASS_NAME_OPEN);\n this._isOpen = true;\n this._input.setAttribute('aria-expanded', true);\n this._setInputActiveStyles();\n this._updateLabelPosition();\n }, 0);\n }\n\n _listenToOutsideClick() {\n EventHandler.on(document, 'click', this._outsideClickHandler);\n }\n\n _handleOutsideClick(event) {\n const isInput = this._input === event.target;\n const isDropdown = event.target === this._dropdownContainer;\n const isDropdownContent =\n this._dropdownContainer && this._dropdownContainer.contains(event.target);\n\n if (!isInput && !isDropdown && !isDropdownContent) {\n this.close();\n }\n }\n\n _listenToItemsClick() {\n const itemsList = SelectorEngine.findOne(SELECTOR_ITEMS_LIST, this._dropdownContainer);\n // Handler is not needed in this case\n EventHandler.on(itemsList, 'click', this._handleItemsClick.bind(this));\n }\n\n _handleItemsClick(event) {\n const target = SelectorEngine.closest(event.target, SELECTOR_ITEM);\n const targetIndex = Manipulator.getDataAttribute(target, 'index');\n const item = this._filteredResults[targetIndex];\n\n this._handleSelection(item);\n }\n\n _selectActiveItem() {\n const item = this._filteredResults[this._activeItemIndex];\n\n if (!item) {\n return;\n }\n\n const value = this._options.displayValue(item);\n const selectEvent = EventHandler.trigger(this._element, EVENT_SELECT, { value: item });\n\n if (selectEvent.defaultPrevented) {\n return;\n }\n\n setTimeout(() => {\n this._canOpenOnFocus = false;\n this._updateInputValue(value);\n this._updateLabelPosition();\n }, 0);\n }\n\n _handleSelection(item) {\n if (!item) {\n return;\n }\n\n const value = this._options.displayValue(item);\n const selectEvent = EventHandler.trigger(this._element, EVENT_SELECT, { value: item });\n\n if (selectEvent.defaultPrevented) {\n return;\n }\n\n setTimeout(() => {\n this._canOpenOnFocus = false;\n this._updateInputValue(value);\n this._updateLabelPosition();\n this._input.focus();\n this.close();\n }, 0);\n }\n\n _updateInputValue(value) {\n this._input.value = value;\n }\n\n _setInputActiveStyles() {\n Manipulator.addClass(this._input, CLASS_NAME_FOCUSED);\n }\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (!this._isOpen || closeEvent.defaultPrevented) {\n return;\n }\n\n this._resetActiveItem();\n this._removeDropdownEvents();\n\n Manipulator.removeClass(this.dropdown, CLASS_NAME_OPEN);\n\n EventHandler.on(this.dropdown, 'transitionend', this._handleDropdownTransitionEnd.bind(this));\n\n Manipulator.removeClass(this._input, CLASS_NAME_FOCUSED);\n Manipulator.removeClass(this._input, CLASS_NAME_ACTIVE);\n\n if (!this._input.value && this._label) {\n Manipulator.removeClass(this._label, CLASS_NAME_ACTIVE);\n }\n }\n\n _removeDropdownEvents() {\n const itemsList = SelectorEngine.findOne(SELECTOR_ITEMS_LIST, this._dropdownContainer);\n EventHandler.off(itemsList, 'click');\n EventHandler.off(document, 'click', this._outsideClickHandler);\n EventHandler.off(window, 'resize', this._windowResizeHandler);\n }\n\n _handleDropdownTransitionEnd(event) {\n // This event fires for each animated property. We only want\n // to run this code once\n if (this._isOpen && event && event.propertyName === 'opacity') {\n this._popper.destroy();\n\n if (this._dropdownContainer) {\n this._container.removeChild(this._dropdownContainer);\n }\n\n this._isOpen = false;\n this._input.setAttribute('aria-expanded', false);\n EventHandler.off(this.dropdown, 'transitionend');\n }\n }\n\n dispose() {\n if (this._isOpen) {\n this.close();\n }\n\n this._removeInputAndElementEvents();\n this._dropdownContainer.remove();\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n _removeInputAndElementEvents() {\n EventHandler.off(this._input, 'focus', this._inputFocusHandler);\n EventHandler.off(this._input, 'input', this._userInputHandler);\n EventHandler.off(this._element, 'keydown', this._keydownHandler);\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Autocomplete(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\ndefineJQueryPlugin(Autocomplete);\n\nexport default Autocomplete;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js';\nimport EventHandler from './dom/event-handler.js';\nimport SelectorEngine from './dom/selector-engine.js';\nimport Backdrop from './util/backdrop.js';\nimport { enableDismissTrigger } from './util/component-functions.js';\nimport FocusTrap from './util/focustrap.js';\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js';\nimport ScrollBarHelper from './util/scrollbar.js';\n\n/**\n * Constants\n */\n\nconst NAME = 'modal';\nconst DATA_KEY = 'bs.modal';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\nconst ESCAPE_KEY = 'Escape';\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\n\nconst OPEN_SELECTOR = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE = '[data-mdb-toggle=\"modal\"]';\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true,\n};\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean',\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget,\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY);\n EventHandler.off(this._dialog, EVENT_KEY);\n\n this._backdrop.dispose();\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop) && Boolean(!this._config.modalNonInvasive), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated(),\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element,\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget,\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\n// EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n// const target = SelectorEngine.getElementFromSelector(this)\n\n// if (['A', 'AREA'].includes(this.tagName)) {\n// event.preventDefault()\n// }\n\n// EventHandler.one(target, EVENT_SHOW, showEvent => {\n// if (showEvent.defaultPrevented) {\n// // only register focus restorer if modal will actually get shown\n// return\n// }\n\n// EventHandler.one(target, EVENT_HIDDEN, () => {\n// if (isVisible(this)) {\n// this.focus()\n// }\n// })\n// })\n\n// // avoid conflict when clicking moddal toggler while another one is open\n// const allreadyOpenedModals = SelectorEngine.find(OPEN_SELECTOR);\n// allreadyOpenedModals.forEach((modal) => {\n// if (!modal.classList.contains('modal-non-invasive-show')) {\n// Modal.getInstance(modal).hide();\n// }\n// });\n\n// const data = Modal.getOrCreateInstance(target)\n\n// data.toggle(this)\n// })\n\n// enableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\n// defineJQueryPlugin(Modal)\n\nexport default Modal;\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine';\nimport Manipulator from '../dom/manipulator';\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\n\nconst getWidth = () => {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n};\n\nconst hide = (width = getWidth()) => {\n _disableOverFlow();\n // give padding to element to balances the hidden scrollbar width\n _setElementAttributes('body', 'paddingRight', (calculatedValue) => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth\n _setElementAttributes(\n SELECTOR_FIXED_CONTENT,\n 'paddingRight',\n (calculatedValue) => calculatedValue + width\n );\n _setElementAttributes(\n SELECTOR_STICKY_CONTENT,\n 'marginRight',\n (calculatedValue) => calculatedValue - width\n );\n};\n\nconst _disableOverFlow = () => {\n const actualValue = document.body.style.overflow;\n if (actualValue) {\n Manipulator.setDataAttribute(document.body, 'overflow', actualValue);\n }\n\n document.body.style.overflow = 'hidden';\n};\n\nconst _setElementAttributes = (selector, styleProp, callback) => {\n const scrollbarWidth = getWidth();\n SelectorEngine.find(selector).forEach((element) => {\n if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n const actualValue = element.style[styleProp];\n const calculatedValue = window.getComputedStyle(element)[styleProp];\n Manipulator.setDataAttribute(element, styleProp, actualValue);\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;\n });\n};\n\nconst reset = () => {\n _resetElementAttributes('body', 'overflow');\n _resetElementAttributes('body', 'paddingRight');\n _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');\n _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');\n};\n\nconst _resetElementAttributes = (selector, styleProp) => {\n SelectorEngine.find(selector).forEach((element) => {\n const value = Manipulator.getDataAttribute(element, styleProp);\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp);\n } else {\n Manipulator.removeDataAttribute(element, styleProp);\n element.style[styleProp] = value;\n }\n });\n};\n\nconst isBodyOverflowing = () => {\n return getWidth() > 0;\n};\n\nexport { getWidth, hide, isBodyOverflowing, reset };\n","import { typeCheckConfig, getElementFromSelector } from '../mdb/util/index';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Data from '../mdb/dom/data';\nimport Manipulator from '../mdb/dom/manipulator';\nimport BSModal from '../bootstrap/mdb-prefix/modal';\nimport { reset as scrollBarReset } from '../mdb/util/scrollbar';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal';\nconst DATA_KEY = 'bs.modal';\nconst EVENT_KEY = `.${DATA_KEY}`;\n\n// width below which, according to css rules, modal position changes - modal gets position relative instead of absolute.\nconst MODAL_CSS_BREAKPOINT = 992;\n\nconst NON_INVASIVE_CLASS = 'modal-non-invasive-open';\nconst NON_INVASIVE_SHOW_CLASS = 'modal-non-invasive-show';\nconst SHOW_CLASS = 'show';\nconst MODAL_CLASS = 'modal';\nconst MODAL_OPEN_CLASS = 'modal-open';\nconst MODAL_CONTENT_CLASS = 'modal-content';\nconst MODAL_BOTTOM_CLASS = 'modal-bottom';\nconst MODAL_BOTTOM_RIGHT_CLASS = 'modal-bottom-right';\nconst MODAL_BOTTOM_LEFT_CLASS = 'modal-bottom-left';\nconst MODAL_TOP_RIGHT_CLASS = 'modal-top-right';\nconst MODAL_TOP_LEFT_CLASS = 'modal-top-left';\nconst MODAL_DIALOG_SCROLLABLE_CLASS = 'modal-dialog-scrollable';\nconst MODAL_DIALOG_CLASS = 'modal-dialog';\n\nconst SELECTOR_MODAL_CONTENT = `.${MODAL_CONTENT_CLASS}`;\nconst SELECTOR_MODAL_BOTTOM = `.${MODAL_BOTTOM_CLASS}`;\nconst SELECTOR_MODAL_BOTTOM_RIGHT = `.${MODAL_BOTTOM_RIGHT_CLASS}`;\nconst SELECTOR_MODAL_BOTTOM_LEFT = `.${MODAL_BOTTOM_LEFT_CLASS}`;\nconst SELECTOR_MODAL_TOP_RIGHT = `.${MODAL_TOP_RIGHT_CLASS}`;\nconst SELECTOR_MODAL_TOP_LEFT = `.${MODAL_TOP_LEFT_CLASS}`;\nconst SELECTOR_MODAL_DIALOG_SCROLLABLE = `.${MODAL_DIALOG_SCROLLABLE_CLASS}`;\nconst SELECTOR_MODAL_DIALOG = `.${MODAL_DIALOG_CLASS}`;\n\nconst EVENT_SHOW_BS_MODAL = `show${EVENT_KEY}`;\nconst EVENT_SHOWN_BS_MODAL = `shown${EVENT_KEY}`;\nconst EVENT_HIDDEN_BS_MODAL = `hidden${EVENT_KEY}`;\nconst EVENT_HIDE_BS_MODAL = 'hide.bs.modal';\nconst EVENT_HIDE_PREVENTED_BS_MODAL = 'hidePrevented.bs.modal';\n\nconst EXTENDED_EVENTS = [\n { name: 'show', parametersToCopy: ['relatedTarget'] },\n { name: 'shown', parametersToCopy: ['relatedTarget'] },\n { name: 'hide' },\n { name: 'hidePrevented' },\n { name: 'hidden' },\n];\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n modalNonInvasive: false,\n};\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n modalNonInvasive: 'boolean',\n};\n\nclass Modal extends BSModal {\n constructor(element, data) {\n super(element, data);\n this._config = this._getConfig(data);\n this._modalContentRect = '';\n this._modalContentComputedStyles = '';\n this._isNonInvasive = this._config.modalNonInvasive;\n this._isScrollable = '';\n this._isBottomRight = '';\n this._isBottomLeft = '';\n this._isTopRight = '';\n this._isTopLeft = '';\n this._isSideTopModal = '';\n this._isSideBottomModal = '';\n this._isSideModal = '';\n this._isModalBottom = '';\n\n if (this._isNonInvasive) {\n this._config.backdrop = false;\n this._config.focus = false;\n this._isBodyOverflowing = true;\n this._onModalShow();\n this._onModalShown();\n this._onModalHidden();\n this._listenToWindowResize();\n }\n Data.setData(element, DATA_KEY, this);\n\n this._bindMdbEvents();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_SHOW_BS_MODAL);\n EventHandler.off(this._element, EVENT_SHOWN_BS_MODAL);\n EventHandler.off(this._element, EVENT_HIDE_BS_MODAL);\n EventHandler.off(this._element, EVENT_HIDDEN_BS_MODAL);\n EventHandler.off(this._element, EVENT_HIDE_PREVENTED_BS_MODAL);\n EventHandler.off(window, 'resize', this._windowResizeHandler);\n\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _onModalShow() {\n EventHandler.on(this._element, EVENT_SHOW_BS_MODAL, () => {\n this._addNonInvasiveClass();\n });\n }\n\n _onModalShown() {\n EventHandler.on(this._element, EVENT_SHOWN_BS_MODAL, () => {\n const modalContent = SelectorEngine.findOne(SELECTOR_MODAL_CONTENT, this._element);\n\n this._isScrollable = SelectorEngine.findOne(SELECTOR_MODAL_DIALOG_SCROLLABLE, this._element);\n this._isBottomRight = SelectorEngine.findOne(SELECTOR_MODAL_BOTTOM_RIGHT, this._element);\n this._isBottomLeft = SelectorEngine.findOne(SELECTOR_MODAL_BOTTOM_LEFT, this._element);\n this._isTopRight = SelectorEngine.findOne(SELECTOR_MODAL_TOP_RIGHT, this._element);\n this._isTopLeft = SelectorEngine.findOne(SELECTOR_MODAL_TOP_LEFT, this._element);\n this._isSideTopModal = this._isTopLeft || this._isTopRight;\n this._isSideBottomModal = this._isBottomLeft || this._isBottomRight;\n this._isSideModal = this._isSideTopModal || this._isSideBottomModal;\n this._isModalBottom = SelectorEngine.findOne(SELECTOR_MODAL_BOTTOM, this._element);\n this._modalContentRect = modalContent.getBoundingClientRect();\n this._modalContentComputedStyles = window.getComputedStyle(modalContent);\n this._modalDialogComputedStyles = window.getComputedStyle(\n SelectorEngine.findOne(SELECTOR_MODAL_DIALOG, this._element)\n );\n this._topOffset = parseInt(this._modalDialogComputedStyles.top, 0);\n this._leftOffset = parseInt(this._modalDialogComputedStyles.left, 0);\n this._rightOffset = parseInt(this._modalDialogComputedStyles.right, 0);\n this._bottomOffset = parseInt(this._modalDialogComputedStyles.bottom, 0);\n\n this._addOpenClass();\n this._setStyles();\n });\n }\n\n _listenToWindowResize() {\n this._windowResizeHandler = this._handleWindowResize.bind(this);\n\n EventHandler.on(window, 'resize', this._windowResizeHandler);\n }\n\n _handleWindowResize() {\n const modalContent = SelectorEngine.findOne(SELECTOR_MODAL_CONTENT, this._element);\n this._resetStyles();\n\n this._modalContentRect = modalContent.getBoundingClientRect();\n this._modalContentComputedStyles = window.getComputedStyle(modalContent);\n\n if (this._isSideTopModal || this._isSideBottomModal) {\n let sideOffset = 0;\n let topOffset = 0;\n if (this._isBottomRight || this._isBottomLeft) {\n topOffset = -this._bottomOffset;\n }\n if (this._isBottomRight || this._isTopRight) {\n sideOffset = -this._rightOffset;\n }\n if (this._isBottomLeft || this._isTopLeft) {\n sideOffset = this._leftOffset;\n }\n\n this._setStyles(sideOffset, topOffset);\n\n return;\n }\n this._setStyles();\n }\n\n _showBackdrop(callback) {\n if (this._isNonInvasive) {\n if (typeof callback === 'function') {\n callback();\n }\n } else {\n super._showBackdrop(callback);\n }\n }\n\n _adjustDialog() {\n super._adjustDialog();\n const isNonInvasiveModalOpen = document.body.classList.contains(NON_INVASIVE_CLASS);\n\n if (this._isNonInvasive || isNonInvasiveModalOpen) {\n this._isBodyOverflowing = false;\n }\n\n if (this._isNonInvasive) {\n this._resetAdjustments();\n scrollBarReset();\n }\n }\n\n _onModalHidden() {\n EventHandler.on(this._element, EVENT_HIDDEN_BS_MODAL, (e) => {\n // Prevent Bootstrap default behavior - focus the button after closing the modal. Users still can use this event\n e.stopImmediatePropagation();\n this._removeOpenClass();\n this._resetStyles();\n this._removeNonInvasiveClass();\n });\n }\n\n _addOpenClass() {\n this._element.classList.add(NON_INVASIVE_SHOW_CLASS);\n }\n\n _removeOpenClass() {\n this._element.classList.remove(NON_INVASIVE_SHOW_CLASS);\n }\n\n _addNonInvasiveClass() {\n document.body.classList.add(NON_INVASIVE_CLASS);\n }\n\n _removeNonInvasiveClass() {\n const isOtherModalOpen = SelectorEngine.findOne(\n `.${MODAL_CLASS}.${SHOW_CLASS}.${NON_INVASIVE_SHOW_CLASS}`,\n document.body\n );\n\n if (!isOtherModalOpen) {\n document.body.classList.remove(NON_INVASIVE_CLASS);\n } else {\n // if other modal open add bootstrap modal open class back\n document.body.classList.add(MODAL_OPEN_CLASS);\n }\n }\n\n _setStyles(leftOffset = 0, topOffset = 0) {\n const isAboveBreakpoint = window.innerWidth >= MODAL_CSS_BREAKPOINT;\n this._element.style.left = `${this._modalContentRect.left + leftOffset}px`;\n this._element.style.width = this._modalContentComputedStyles.width;\n\n if (!this._isScrollable) {\n this._element.style.height = this._modalContentComputedStyles.height;\n this._element.style.display = '';\n }\n\n if (isAboveBreakpoint) {\n if (this._isSideBottomModal || this._isModalBottom) {\n this._element.style.top = `${this._modalContentRect.top + topOffset}px`;\n }\n\n if (this._isSideModal) {\n this._element.style.overflowX = 'auto';\n }\n }\n\n if (!isAboveBreakpoint) {\n this._element.style.height = '';\n }\n }\n\n _resetStyles() {\n this._element.style.left = '';\n this._element.style.top = '';\n this._element.style.height = '';\n this._element.style.width = '';\n\n if (!this._isScrollable) {\n this._element.style.display = '';\n }\n\n if (this._isSideModal) {\n this._element.style.overflowX = '';\n }\n }\n\n _getConfig(options) {\n let target;\n if (this._element) {\n target = getElementFromSelector(this._element);\n }\n\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...Manipulator.getDataAttributes(target),\n ...options,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n // Private\n _bindMdbEvents() {\n EventHandler.extend(this._element, EXTENDED_EVENTS, NAME);\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n // eslint-disable-next-line no-extra-parens\n ...(typeof config === 'object' && config ? config : {}),\n };\n\n if (!data) {\n data = new Modal(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n }\n });\n }\n}\n\nexport default Modal;\n","import { typeCheckConfig, element } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb/dom/manipulator';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport BaseComponent from '../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'clipboard';\nconst DATA_KEY = 'mdb.clipboard';\nconst EVENT_KEY = `.${DATA_KEY}`;\n\nconst DEFAULT_OPTIONS = {\n clipboardTarget: null,\n};\n\nconst OPTIONS_TYPE = {\n clipboardTarget: 'null|string',\n};\n\nconst EVENT_COPIED = `copied${EVENT_KEY}`;\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Clipboard extends BaseComponent {\n constructor(element, options = {}) {\n super(element);\n\n this._options = options;\n\n if (this._element) {\n this._initCopyHandler = this._initCopy.bind(this);\n\n this._setup();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get options() {\n const config = {\n ...DEFAULT_OPTIONS,\n ...Manipulator.getDataAttributes(this._element),\n ...this._options,\n };\n\n typeCheckConfig(NAME, config, OPTIONS_TYPE);\n\n return config;\n }\n\n get clipboardTarget() {\n return SelectorEngine.findOne(this.options.clipboardTarget);\n }\n\n get copyText() {\n const clipboardTextExist = this.clipboardTarget.hasAttribute('data-mdb-clipboard-text');\n const inputValue = this.clipboardTarget.value;\n const targetText = this.clipboardTarget.textContent;\n\n if (clipboardTextExist) {\n return this.clipboardTarget.getAttribute('data-mdb-clipboard-text');\n }\n\n if (inputValue) {\n return inputValue;\n }\n\n return targetText;\n }\n\n // Public\n\n dispose() {\n EventHandler.off(this._element, 'click', this._initCopyHandler);\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n _setup() {\n EventHandler.on(this._element, 'click', this._initCopyHandler);\n }\n\n _initCopy() {\n const inputToCopy = this._createNewInput();\n document.body.appendChild(inputToCopy);\n this._selectInput(inputToCopy);\n EventHandler.trigger(this._element, EVENT_COPIED, { copyText: this.copyText });\n\n inputToCopy.remove();\n }\n\n _createNewInput() {\n const tag = this.clipboardTarget.tagName === 'TEXTAREA' ? 'textarea' : 'input';\n const newInput = element(tag);\n newInput.value = this.copyText;\n Manipulator.style(newInput, { left: '-9999px', position: 'absolute' });\n\n return newInput;\n }\n\n _selectInput(input) {\n input.select();\n input.focus();\n input.setSelectionRange(0, 99999);\n\n document.execCommand('copy');\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Clipboard(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\nexport default Clipboard;\n","/* eslint-disable import/prefer-default-export */\nexport const getInputField = ({ inputID, labelText }) => {\n return `<div class=\"form-outline chips-input-wrapper\">\n <input type=\"text\" id=\"${inputID}\" class=\"form-control chips-input\" />\n <label class=\"form-label\" for=\"${inputID}\">\n ${labelText}\n </label>\n </div>`;\n};\n\nexport const getChip = ({ text }) => {\n return `<div class=\"chip btn\"><span class=\"text-chip\">${text}</span> <i class=\"close fas fa-times\"></i></div>`;\n};\n","import { element, typeCheckConfig } from '../../mdb/util/index';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport Data from '../../mdb/dom/data';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport { getChip } from './templates';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\n/**\n *\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'chip';\nconst DATA_KEY = `mdb.${NAME}`;\nconst SELECTOR_CLOSE = '.close';\nconst EVENT_DELETE = 'delete.mdb.chips';\nconst EVENT_SELECT = 'select.mdb.chip';\n\nconst DefaultType = { text: 'string', closeIcon: 'boolean', img: 'object' };\n\nconst Default = { text: '', closeIcon: false, img: { path: '', alt: '' } };\n\nclass Chip extends BaseComponent {\n constructor(element, data = {}) {\n super(element, data);\n this._options = this._getConfig(data);\n\n if (this._element) {\n Data.setData(element, DATA_KEY, this);\n }\n\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n // Public\n\n init() {\n this._appendCloseIcon();\n this._handleDelete();\n this._handleTextChip();\n this._handleClickOnChip();\n }\n\n dispose() {\n EventHandler.off(this._element, 'click');\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n appendChip() {\n const { text, closeIcon } = this._options;\n const chip = getChip({ text, closeIcon });\n\n return chip;\n }\n\n // Private\n\n _appendCloseIcon(el = this._element) {\n if (SelectorEngine.find(SELECTOR_CLOSE, this._element).length > 0) return;\n\n if (this._options.closeIcon) {\n const createIcon = element('i');\n createIcon.classList = 'close fas fa-times';\n\n el.insertAdjacentElement('beforeend', createIcon);\n }\n }\n\n _handleClickOnChip() {\n EventHandler.on(this._element, 'click', (event) => {\n const { textContent } = event.target;\n const obj = {};\n\n obj.tag = textContent.trim();\n\n EventHandler.trigger(EVENT_SELECT, { event, obj });\n });\n }\n\n _handleDelete() {\n const deleteElement = SelectorEngine.find(SELECTOR_CLOSE, this._element);\n if (deleteElement.length === 0) return;\n\n EventHandler.on(this._element, 'click', SELECTOR_CLOSE, () => {\n EventHandler.trigger(this._element, EVENT_DELETE);\n this._element.remove();\n });\n }\n\n _handleTextChip() {\n if (this._element.innerText !== '') return;\n\n this._element.innerText = this._options.text;\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Chip(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n}\n\nexport default Chip;\n","import { typeCheckConfig, element } from '../../mdb/util/index';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport Chip from './chip';\nimport Input from '../../free/input';\nimport Data from '../../mdb/dom/data';\nimport { getInputField } from './templates';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport {\n LEFT_ARROW,\n RIGHT_ARROW,\n ENTER,\n BACKSPACE,\n UP_ARROW,\n DOWN_ARROW,\n DELETE,\n} from '../../mdb/util/keycodes';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\n// import FocusTrap from '../../mdb/util/focusTrap';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'chips';\n\nconst DATA_KEY = `mdb.${NAME}`;\n\nconst CLASSNAME_ACTIVE = 'active';\nconst CLASSNAME_CHIPS_INITIAL = `${NAME}-initial`;\nconst CLASSNAME_CHIPS_PLACEHOLDER = `${NAME}-placeholder`;\nconst CLASSNAME_CLOSE_OPACITY = 'close-opacity';\nconst CLASSNAME_CHIP_OPACITY = 'chip-opacity';\nconst CLASSNAME_CHIPS_PADDING = `${NAME}-padding`;\nconst CLASSNAME_CHIPS_TANSITION = `${NAME}-transition`;\nconst CLASSNAME_CHIPS_WRAPPER = `${NAME}-input-wrapper`;\n\nconst SELECTOR_CHIP = '.chip';\nconst SELECTOR_CHIP_ACTIVE = `${SELECTOR_CHIP}.${CLASSNAME_ACTIVE}`;\nconst SELECTOR_CLOSE = '.close';\n\nconst EVENT_ADD = 'add.mdb.chips';\nconst EVENT_ADDED = 'added.mdb.chips';\nconst EVENT_ARROW_DOWN = 'arrowDown.mdb.chips';\nconst EVENT_ARROW_LEFT = 'arrowLeft.mdb.chips';\nconst EVENT_ARROW_RIGHT = 'arrowRight.mdb.chips';\nconst EVENT_ARROW_UP = 'arrowUp.mdb.chips';\nconst EVENT_DELETE = 'delete.mdb.chips';\nconst EVENT_SELECT = 'select.mdb.chips';\n\nconst DefaultType = {\n inputID: 'string',\n parentSelector: 'string',\n initialValues: 'array',\n editable: 'boolean',\n labelText: 'string',\n};\n\nconst Default = {\n inputID: '',\n parentSelector: '',\n initialValues: [{ tag: 'init1' }, { tag: 'init2' }],\n editable: false,\n labelText: 'Example label',\n};\n\nclass ChipsInput extends Chip {\n constructor(element, data = {}) {\n super(element, data);\n this._options = this._getConfig(data);\n this.numberClicks = 0;\n this._inputInstance = null;\n\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get activeChip() {\n return SelectorEngine.findOne(SELECTOR_CHIP_ACTIVE, this._element);\n }\n\n get input() {\n return SelectorEngine.findOne('input', this._element);\n }\n\n get allChips() {\n return SelectorEngine.find(SELECTOR_CHIP, this._element);\n }\n\n get chipsInputWrapper() {\n return SelectorEngine.findOne(`.${CLASSNAME_CHIPS_WRAPPER}`, this._element);\n }\n\n // Public\n\n init() {\n this._setChipsClass();\n this._appendInputToElement(CLASSNAME_CHIPS_PLACEHOLDER);\n this._handleInitialValue();\n this._initializeInput();\n this._handleInputText();\n this._handleKeyboard();\n this._handleChipsOnSelect();\n this._handleEditable();\n this._handleChipsFocus();\n this._handleClicksOnChips();\n }\n\n dispose() {\n Manipulator.removeClass(this._element, 'chips');\n this.allChips.forEach((chip) => {\n const instance = Chip.getInstance(chip);\n if (instance) {\n chip.remove();\n EventHandler.off(chip, 'dblclick');\n instance.dispose();\n }\n });\n if (this._inputInstance) {\n this._inputInstance.dispose();\n }\n this.chipsInputWrapper.remove();\n EventHandler.off(this._element, 'click');\n EventHandler.off(this._element, 'keypress');\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n\n _initializeInput() {\n const formOutline = this._element.querySelector('.form-outline');\n\n this._inputInstance = new Input(formOutline).init();\n }\n\n _setChipsClass() {\n Manipulator.addClass(this._element, 'chips');\n }\n\n _handleDeleteEvents(event) {\n const [last] = this.allChips.slice(-1);\n\n if (this.activeChip === null) {\n last.remove();\n\n this._handleEvents(event, EVENT_DELETE);\n } else {\n const index = this.allChips.findIndex((chip) => chip === this.activeChip);\n const activeChipAfter = this._handleActiveChipAfterRemove(index);\n const arr = [];\n\n if (this.activeChip === null) return;\n\n this.activeChip.remove();\n this._handleEvents(event, EVENT_DELETE);\n\n this.numberClicks = index;\n\n Manipulator.addClass(activeChipAfter, CLASSNAME_ACTIVE);\n\n this.allChips.forEach((chip) => {\n if (Manipulator.hasClass(chip, CLASSNAME_ACTIVE)) {\n arr.push(chip);\n\n if (arr.length > 1) {\n this.allChips.forEach((chip) => chip.remove());\n }\n }\n });\n }\n }\n\n _handleUpEvents(event) {\n this.numberClicks += 1;\n\n if (this.numberClicks === this.allChips.length + 1) this.numberClicks = 0;\n\n this._handleRightKeyboardArrow(this.numberClicks);\n\n this._handleEvents(event, EVENT_ARROW_RIGHT);\n this._handleEvents(event, EVENT_ARROW_UP);\n }\n\n _handleDownEvents(event) {\n this.numberClicks -= 1;\n\n if (this.numberClicks <= 0) this.numberClicks = this.allChips.length;\n\n this._handleLeftKeyboardArrow(this.numberClicks);\n\n this._handleEvents(event, EVENT_ARROW_LEFT);\n this._handleEvents(event, EVENT_ARROW_DOWN);\n }\n\n _keyboardEvents(event) {\n const { target, keyCode, ctrlKey } = event;\n\n if (target.value.length > 0 || this.allChips.length === 0) return;\n\n if (keyCode === BACKSPACE || keyCode === DELETE) {\n this._handleDeleteEvents(event);\n } else if (keyCode === RIGHT_ARROW || keyCode === UP_ARROW) {\n this._handleUpEvents(event);\n } else if (keyCode === LEFT_ARROW || keyCode === DOWN_ARROW) {\n this._handleDownEvents(event);\n } else if (keyCode === 65 && ctrlKey) {\n this._handleAddActiveClass();\n }\n }\n\n _handleKeyboard() {\n EventHandler.on(this.input, 'keydown', (event) => this._keyboardEvents(event));\n }\n\n _handleEditable() {\n const { editable } = this._options;\n\n if (!editable) return;\n\n this.allChips.forEach((chip) => {\n EventHandler.on(chip, 'dblclick', (e) => {\n const close = SelectorEngine.findOne('.close', chip);\n\n chip.contentEditable = true;\n chip.focus();\n\n setTimeout(() => {\n Manipulator.addStyle(close, { display: 'none' });\n }, 200);\n Manipulator.addClass(close, 'close-opacity');\n\n const obj = {};\n\n obj.tag = e.target.textContent;\n\n EventHandler.trigger(chip, EVENT_SELECT, { event: e, allChips: this.allChips });\n });\n\n EventHandler.on(document, 'click', ({ target }) => {\n const close = SelectorEngine.findOne('.close', chip);\n const chipText = SelectorEngine.findOne('.text-chip', chip);\n\n const isContainer = target === chip;\n const isContainerContent = chip && chip.contains(target);\n\n if (!isContainer && !isContainerContent) {\n chip.contentEditable = false;\n if (chipText.textContent !== '') {\n setTimeout(() => {\n Manipulator.addStyle(close, { display: 'block' });\n Manipulator.removeClass(close, 'close-opacity');\n }, 160);\n }\n }\n\n if (chipText.textContent === '') {\n setTimeout(() => {\n Manipulator.addClass(chip, CLASSNAME_CHIP_OPACITY);\n }, 200);\n\n setTimeout(() => {\n chip.remove();\n }, 300);\n }\n });\n });\n }\n\n _handleRemoveActiveClass() {\n this.allChips.forEach((chip) => Manipulator.removeClass(chip, CLASSNAME_ACTIVE));\n }\n\n _handleAddActiveClass() {\n this.allChips.forEach((chip) => Manipulator.addClass(chip, CLASSNAME_ACTIVE));\n }\n\n _handleRightKeyboardArrow(num) {\n this._handleRemoveActiveClass();\n\n if (num === 0) num = 1;\n\n this._handleAddActiveClassWithKeyboard(num);\n }\n\n _handleLeftKeyboardArrow(num) {\n this._handleRemoveActiveClass();\n this._handleAddActiveClassWithKeyboard(num);\n }\n\n _handleActiveChipAfterRemove(index) {\n const chipIndex = index === 0 ? 1 : index - 1;\n\n return this.allChips[chipIndex];\n }\n\n _handleClicksOnChips() {\n EventHandler.on(this._element, 'click', () => {\n if (this.allChips.length === 0) {\n Manipulator.removeClass(this.chipsInputWrapper, CLASSNAME_CHIPS_PADDING);\n Manipulator.removeClass(this.input, CLASSNAME_ACTIVE);\n }\n });\n }\n\n _handleTextContent() {\n const arr = [];\n\n this.allChips.forEach((chip) => arr.push({ tag: chip.textContent.trim() }));\n\n return arr;\n }\n\n _handleEvents(event, eventName) {\n const arr = this._handleTextContent();\n\n const filterActive = this.allChips.filter(\n (chip) => Manipulator.hasClass(chip, CLASSNAME_ACTIVE) && chip\n );\n\n EventHandler.trigger(this._element, eventName, {\n event,\n allChips: this.allChips,\n arrOfObjects: arr,\n active: filterActive,\n activeObj: {\n tag: filterActive.length <= 0 ? '' : filterActive[0].textContent.trim(),\n },\n });\n }\n\n _handleChipsFocus() {\n EventHandler.on(this._element, 'click', ({ target: { classList } }) => {\n if (\n classList.contains('chip') ||\n classList.contains('close') ||\n classList.contains('text-chip')\n ) {\n return;\n }\n\n this.input.focus();\n });\n }\n\n _handleInitialValue() {\n this._appendInputToElement(CLASSNAME_CHIPS_INITIAL);\n\n if (Manipulator.hasClass(this._element, CLASSNAME_CHIPS_INITIAL)) {\n const { initialValues } = this._options;\n\n initialValues.forEach(({ tag }) => this._handleCreateChip(this.input, tag));\n\n Manipulator.addClass(this.input, CLASSNAME_ACTIVE);\n }\n\n if (this.allChips.length > 0) {\n Manipulator.addClass(this.chipsInputWrapper, CLASSNAME_CHIPS_PADDING);\n Manipulator.addClass(this.chipsInputWrapper, CLASSNAME_CHIPS_TANSITION);\n }\n }\n\n _handleKeysInputToElement(event) {\n const { keyCode, target } = event;\n\n if (Manipulator.hasClass(target, 'chip')) {\n const close = SelectorEngine.findOne(SELECTOR_CLOSE, target);\n\n if (keyCode === ENTER) {\n target.contentEditable = false;\n\n if (target.textContent !== '') {\n setTimeout(() => {\n Manipulator.addStyle(close, { display: 'block' });\n Manipulator.removeClass(close, CLASSNAME_CLOSE_OPACITY);\n }, 160);\n } else if (target.textContent === '') {\n setTimeout(() => {\n Manipulator.addClass(target, CLASSNAME_CHIP_OPACITY);\n }, 200);\n\n setTimeout(() => {\n target.remove();\n }, 300);\n }\n }\n\n return;\n }\n\n if (keyCode === ENTER) {\n if (target.value === '') return;\n event.preventDefault();\n\n this._handleCreateChip(target, target.value);\n\n this._handleRemoveActiveClass();\n this.numberClicks = this.allChips.length + 1;\n }\n\n if (this.allChips.length > 0) {\n Manipulator.addClass(this.chipsInputWrapper, CLASSNAME_CHIPS_PADDING);\n Manipulator.addClass(this.chipsInputWrapper, CLASSNAME_CHIPS_TANSITION);\n } else {\n Manipulator.removeClass(this.chipsInputWrapper, CLASSNAME_CHIPS_PADDING);\n }\n }\n\n _handleBlurInput(event) {\n const { target } = event;\n if (target.value.length > 0) {\n this._handleCreateChip(target, target.value);\n }\n\n if (this.allChips.length > 0) {\n Manipulator.addClass(target, CLASSNAME_ACTIVE);\n Manipulator.addClass(this.chipsInputWrapper, CLASSNAME_CHIPS_PADDING);\n } else {\n Manipulator.removeClass(target, CLASSNAME_ACTIVE);\n Manipulator.removeClass(this.chipsInputWrapper, CLASSNAME_CHIPS_PADDING);\n }\n\n this.allChips.forEach((chip) => Manipulator.removeClass(chip, CLASSNAME_ACTIVE));\n }\n\n _handleInputText() {\n const placeholder = SelectorEngine.findOne(CLASSNAME_CHIPS_PLACEHOLDER, this._element);\n\n EventHandler.on(this._element, 'keypress', placeholder, (e) =>\n this._handleKeysInputToElement(e)\n );\n EventHandler.on(this.input, 'blur', (e) => this._handleBlurInput(e));\n }\n\n _appendInputToElement(selector) {\n if (!Manipulator.hasClass(this._element, selector)) return;\n\n const inputField = getInputField(this._options);\n\n this._element.insertAdjacentHTML('beforeend', inputField);\n }\n\n _handleCreateChip(target, value) {\n const addEvent = EventHandler.trigger(this._element, EVENT_ADD, { value });\n\n if (addEvent.defaultPrevented) {\n return;\n }\n\n const divElement = element('div');\n const divWithChips = new Chip(divElement, { text: value });\n\n let chipsContainer;\n\n if (this._options.parentSelector !== '') {\n const parent = document.querySelector(this._options.parentSelector);\n parent.insertAdjacentHTML('beforeend', divWithChips.appendChip());\n chipsContainer = parent;\n } else {\n target.insertAdjacentHTML('beforebegin', divWithChips.appendChip());\n chipsContainer = target.parentNode;\n }\n\n target.value = '';\n\n SelectorEngine.find(SELECTOR_CHIP, chipsContainer).forEach((chip) => {\n let instance = Chip.getInstance(chip);\n if (!instance) {\n instance = new Chip(chip);\n instance.init();\n }\n });\n\n this._handleEditable();\n\n EventHandler.trigger(this._element, EVENT_ADDED, { value });\n }\n\n _handleChipsOnSelect() {\n this.allChips.forEach((chip) => {\n EventHandler.on(this._element, 'click', (e) => {\n EventHandler.trigger(chip, EVENT_SELECT, { event: e, allChips: this.allChips });\n });\n });\n }\n\n _handleAddActiveClassWithKeyboard(num) {\n let chip;\n\n if (this.allChips[num - 1] === undefined) {\n chip = this.allChips[num - 2];\n } else {\n chip = this.allChips[num - 1];\n }\n\n Manipulator.addClass(chip, CLASSNAME_ACTIVE);\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new ChipsInput(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n}\n\nexport default ChipsInput;\n","/* eslint-disable import/prefer-default-export */\n\nconst getConnectsTemplate = () => {\n return `<div class=\"multi-range-slider-connects\">\n<div class=\"multi-range-slider-connect\"></div>\n</div>`;\n};\n\nconst getHandleTemplate = () => {\n return `<div class=\"multi-range-slider-hand\">\n <div class=\"multi-range-slider-handle\"></div>\n</div>`;\n};\n\nconst getTooltipTemplate = (value) => {\n return `\n <span class=\"multi-range-slider-tooltip\">\n <span class=\"multi-range-slider-tooltip-value\">${value}</span>\n </span>\n `;\n};\n\nexport { getConnectsTemplate, getHandleTemplate, getTooltipTemplate };\n","// eslint-disable-next-line import/prefer-default-export\nexport const getEventTypeClientX = (ev) => {\n const event = ev.type === 'touchmove' ? ev.touches[0].clientX : ev.clientX;\n\n return event;\n};\n","import { typeCheckConfig } from '../../mdb/util/index';\nimport EventHandler, { EventHandlerMulti } from '../../mdb/dom/event-handler';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport Data from '../../mdb/dom/data';\nimport { getConnectsTemplate, getHandleTemplate, getTooltipTemplate } from './template';\nimport { getEventTypeClientX } from './utils';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'multiRangeSlider';\nconst DATA_KEY = `mdb.${NAME}`;\nconst SELECTOR_MULTI = 'multi-range-slider';\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_VALUE_CHANGED = `valueChanged${EVENT_KEY}`;\nconst EVENT_START = `start${EVENT_KEY}`;\nconst EVENT_END = `end${EVENT_KEY}`;\n\nconst CLASSNAME_HAND = '.multi-range-slider-hand';\nconst CLASSNAME_CONNECT = '.multi-range-slider-connect';\nconst CLASSNAME_TOOLTIP = '.multi-range-slider-tooltip';\nconst CLASSNAME_TOOLTIP_VALUE = '.multi-range-slider-tooltip-value';\n\nconst SELECTOR_ACTIVE = 'active';\nconst SELECTOR_HORIZONTAL = 'multi-range-slider-horizontal';\n\nconst DefaultType = {\n max: 'number',\n min: 'number',\n numberOfRanges: 'number',\n startValues: 'array',\n step: '(string||null||number)',\n tooltip: 'boolean',\n};\n\nconst Default = {\n max: 100,\n min: 0,\n numberOfRanges: 2,\n startValues: [0, 100],\n step: null,\n tooltip: false,\n};\n\nclass MultiRangeSlider extends BaseComponent {\n constructor(element, data = {}) {\n super(element);\n this._options = this._getConfig(data);\n this._mousemove = false;\n this._movingHand = null;\n\n this.init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get hands() {\n return SelectorEngine.find(CLASSNAME_HAND, this._element);\n }\n\n get connect() {\n return SelectorEngine.findOne(CLASSNAME_CONNECT, this._element);\n }\n\n get leftConnectRect() {\n return this.connect.getBoundingClientRect().left;\n }\n\n get handsNoActive() {\n return this.hands.filter((hand) => !Manipulator.hasClass(hand, 'active'));\n }\n\n get handActive() {\n return SelectorEngine.findOne(`${CLASSNAME_HAND}.active`, this._element);\n }\n\n get activeTooltip() {\n return SelectorEngine.findOne(CLASSNAME_TOOLTIP, this._element);\n }\n\n get activeTooltipValue() {\n const handTooltip = SelectorEngine.findOne(`${CLASSNAME_HAND}.active`, this._element);\n return SelectorEngine.findOne(`${CLASSNAME_TOOLTIP_VALUE}`, handTooltip);\n }\n\n // Public\n\n init() {\n this._setClassHorizontalOrVertical();\n this._setRangeConnectsElement();\n this._setRangeHandleElements();\n this._setTransformationOnStart();\n this._setTooltipToHand();\n this._addEventListeners();\n }\n\n dispose() {\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n Manipulator.removeClass(this._element, SELECTOR_HORIZONTAL);\n\n this._removeEventListeners();\n\n this._removeSliderElements();\n\n super.dispose();\n }\n\n // Private\n _removeSliderElements() {\n this.hands.forEach((hand) => {\n hand.remove();\n });\n\n this.connect.parentNode.remove();\n }\n\n _addEventListeners() {\n this._onWindowResize = this._handleWindowResize.bind(this);\n\n this._onConnectMousedown = this._handleClickOnRange.bind(this);\n this._onHandMouseDown = this._handleClickEventOnHand.bind(this);\n this._onDocumentMouseUp = this._handleEndMoveEventDocument.bind(this);\n\n EventHandlerMulti.on(this.connect, 'mousedown touchstart', this._onConnectMousedown);\n EventHandlerMulti.on(document, 'mouseup touchend', this._onDocumentMouseUp);\n this.hands.forEach((hand) => {\n EventHandlerMulti.on(hand, 'mousedown touchstart', this._onHandMouseDown);\n });\n\n EventHandler.on(window, 'resize', this._onWindowResize);\n }\n\n _removeEventListeners() {\n EventHandlerMulti.off(this.connect, 'mousedown touchstart', this._onConnectMousedown);\n EventHandlerMulti.off(document, 'mouseup touchend', this._onDocumentMouseUp);\n this.hands.forEach((hand) => {\n EventHandlerMulti.off(hand, 'mousedown touchstart', this._onHandMouseDown);\n });\n EventHandler.off(window, 'resize', this._onWindowResize);\n }\n\n _handleWindowResize() {\n this._setTransformationOnStart();\n }\n\n _setTransformationOnStart() {\n const { startValues, max, min } = this._options;\n\n if (startValues.length === 0) {\n this.hands.forEach((hand) => {\n const translation = -hand.offsetWidth;\n\n Manipulator.setDataAttribute(hand, 'translation', Math.round(translation));\n\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n });\n } else {\n this.hands.forEach((hand, i) => {\n if (startValues[i] > max || startValues[i] < min) return;\n const normalizedValue = (startValues[i] - min) / (max - min);\n const translation = normalizedValue * this.connect.offsetWidth - hand.offsetWidth / 2;\n\n Manipulator.setDataAttribute(hand, 'translation', Math.round(translation));\n\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n });\n }\n }\n\n _handleClickEventOnHand(ev) {\n const hand = ev.target.closest(CLASSNAME_HAND);\n\n const { max, min } = this._options;\n\n this._mousemove = true;\n const translation = getEventTypeClientX(ev) - this.leftConnectRect - hand.offsetWidth / 2;\n\n const value =\n ((getEventTypeClientX(ev) - this.leftConnectRect) /\n (this.connect.offsetWidth / (max - min))) %\n (max - min);\n\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n Manipulator.setDataAttribute(hand, 'translation', translation);\n\n Manipulator.addClass(hand, SELECTOR_ACTIVE);\n\n if (this._options.tooltip) {\n Manipulator.addClass(hand.children[1], 'active');\n this.activeTooltipValue.innerText = Math.round(value);\n }\n\n this._movingHand = hand;\n\n this._onDocumentMouseMove = this._handleMouseMoveEventDocument.bind(this);\n this._onHandMouseUp = this._handleEndMoveEvent.bind(this);\n\n EventHandlerMulti.on(document, 'mousemove touchmove', this._onDocumentMouseMove);\n EventHandlerMulti.on(hand, 'mouseup touchend', this._onHandMouseUp);\n\n EventHandler.trigger(hand, EVENT_START, { hand });\n }\n\n _setClassHorizontalOrVertical() {\n if (this._element) {\n Manipulator.addClass(this._element, SELECTOR_MULTI);\n }\n\n Manipulator.addClass(this._element, SELECTOR_HORIZONTAL);\n }\n\n _setRangeConnectsElement() {\n this._element.insertAdjacentHTML('afterbegin', getConnectsTemplate());\n }\n\n _setRangeHandleElements() {\n for (let i = 0; i < this._options.numberOfRanges; i++) {\n this._element.insertAdjacentHTML('beforeend', getHandleTemplate());\n }\n\n this.hands.forEach((hand, i) => {\n hand.setAttribute('aria-orientation', 'horizontal');\n hand.setAttribute('role', 'slider');\n\n Manipulator.setDataAttribute(hand, 'handle', i);\n });\n }\n\n _setTooltipToHand() {\n if (this._options.tooltip) {\n this.hands.forEach((hand) => {\n return hand.insertAdjacentHTML('beforeend', getTooltipTemplate());\n });\n }\n }\n\n _handleMouseMoveEventDocument(ev) {\n const { tooltip, step } = this._options;\n\n const hand = this._movingHand;\n\n if (ev.type === 'mousemove') ev.preventDefault();\n\n const { max, min, numberOfRanges } = this._options;\n\n if (Manipulator.hasClass(hand, SELECTOR_ACTIVE)) {\n const maxValue =\n ((getEventTypeClientX(ev) - this.leftConnectRect) / this.connect.offsetWidth) * max;\n let value =\n (((getEventTypeClientX(ev) - this.leftConnectRect) /\n (this.connect.offsetWidth / (max - min))) %\n (max - min)) +\n min;\n\n let translation = getEventTypeClientX(ev) - this.leftConnectRect - hand.offsetWidth / 2;\n\n const handActiveHandle = Manipulator.getDataAttribute(this.handActive, 'handle');\n const handActiveTranslation = Manipulator.getDataAttribute(this.handActive, 'translation');\n if (value < min) {\n translation = min - hand.offsetWidth / 2;\n value = min;\n } else if (maxValue >= max) {\n return;\n }\n\n const handleDataHandle = this.handsNoActive.map((hand) =>\n Manipulator.getDataAttribute(hand, 'handle')\n );\n const handleDataTranslate = this.handsNoActive.map((hand) =>\n Manipulator.getDataAttribute(hand, 'translation')\n );\n\n if (handActiveHandle < handleDataHandle && handActiveTranslation <= handleDataTranslate) {\n if (Math.round(value) % step === 0 && step !== null) {\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n if (tooltip) this.activeTooltipValue.innerText = Math.round(value);\n } else if (step === null) {\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n if (tooltip) this.activeTooltipValue.innerText = Math.round(value);\n }\n } else if (\n handActiveHandle > handleDataHandle &&\n handActiveTranslation >= handleDataTranslate\n ) {\n if (Math.round(value) % step === 0 && step !== null) {\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n if (tooltip) this.activeTooltipValue.innerText = Math.round(value);\n } else if (step === null) {\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n if (tooltip) this.activeTooltipValue.innerText = Math.round(value);\n }\n }\n\n if (numberOfRanges < 2) {\n if (Math.round(value) % step === 0 && step !== null) {\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n if (tooltip) this.activeTooltipValue.innerText = Math.round(value);\n } else if (step === null) {\n Manipulator.addStyle(hand, {\n transform: `translate(${translation}px,-25%)`,\n });\n\n if (tooltip) this.activeTooltipValue.innerText = Math.round(value);\n }\n }\n\n Manipulator.setDataAttribute(hand, 'translation', translation);\n\n if (numberOfRanges < 2) {\n EventHandler.trigger(this._element, EVENT_VALUE_CHANGED, {\n values: { value: value + min, rounded: Math.round(value + min) },\n });\n } else {\n this._handleMultiValuesOnRange();\n }\n }\n }\n\n _handleMultiValuesOnRange() {\n const { max, min } = this._options;\n const arr = [];\n\n this.hands.forEach((hand) => {\n const translation =\n hand.getBoundingClientRect().left - this.leftConnectRect + hand.offsetWidth / 2;\n\n let value = (translation / (this.connect.offsetWidth / (max - min))) % (max - min);\n\n if (translation === this.connect.offsetWidth) {\n value = max;\n } else {\n value += min;\n }\n\n Manipulator.setDataAttribute(hand, 'value', Math.round(value * 10) / 10);\n\n arr.push({ value });\n });\n\n EventHandler.trigger(this._element, EVENT_VALUE_CHANGED, {\n values: {\n value: arr.map(({ value }) => value),\n rounded: arr.map(({ value }) => Math.round(value)),\n },\n });\n }\n\n _handleEndMoveEventDocument() {\n const hand = this._movingHand;\n\n if (this._mousemove) {\n this.hands.forEach((hand) => {\n EventHandler.off(hand, 'mousemove');\n Manipulator.removeClass(hand, SELECTOR_ACTIVE);\n\n if (this._options.tooltip) Manipulator.removeClass(hand.children[1], 'active');\n });\n\n this._mousemove = false;\n }\n\n EventHandler.trigger(hand, EVENT_END, { hand });\n this._movingHand = null;\n\n EventHandlerMulti.off(document, 'mousemove touchmove', this._onDocumentMouseMove);\n }\n\n _handleEndMoveEvent(ev) {\n const hand = ev.target.closest(CLASSNAME_HAND);\n\n EventHandler.off(hand, 'mousemove');\n Manipulator.removeClass(hand, SELECTOR_ACTIVE);\n\n if (this._options.tooltip) Manipulator.removeClass(hand.children[1], 'active');\n\n this._mousemove = false;\n }\n\n _handleClickOnRange(ev) {\n this.hands.forEach((hand) => {\n Manipulator.addClass(hand, SELECTOR_ACTIVE);\n this._mousemove = true;\n if (this._options.numberOfRanges < 2) {\n Manipulator.addStyle(hand, {\n transform: `translate(${\n getEventTypeClientX(ev) - this.leftConnectRect - hand.offsetWidth / 2\n }px,-25%)`,\n });\n } else {\n Manipulator.addStyle(this.hands[0], {\n transform: `translate(${\n getEventTypeClientX(ev) - this.leftConnectRect - hand.offsetWidth / 2\n }px,-25%)`,\n });\n }\n });\n }\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new MultiRangeSlider(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n\n _getConfig(options) {\n const config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...options,\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n}\n\nexport default MultiRangeSlider;\n","import { createDate } from '../datepicker/date-utils';\n\nconst isValidTime = (time) => {\n const AmPmReg = /^(0?[1-9]|1[012])(:[0-5]\\d) [APap][mM]$/;\n const timeReg = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/;\n return time.match(AmPmReg) || time.match(timeReg);\n};\n\nconst isValidDate = (date) => {\n // eslint-disable-next-line no-restricted-globals\n return date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date);\n};\n\nconst getMonth = (date) => {\n return date.getMonth();\n};\n\nconst getYear = (date) => {\n return date.getFullYear();\n};\n\nconst getDelimeters = (format) => {\n return format.match(/[^(dmy)]{1,}/g);\n};\n\nconst parseDate = (dateString, format, delimeters, options) => {\n let delimeterPattern;\n\n if (delimeters[0] !== delimeters[1]) {\n delimeterPattern = delimeters[0] + delimeters[1];\n } else {\n delimeterPattern = delimeters[0];\n }\n\n const regExp = new RegExp(`[${delimeterPattern}]`);\n const dateParts = dateString.split(regExp);\n const formatParts = format.split(regExp);\n const isMonthString = format.indexOf('mmm') !== -1;\n\n const datesArray = [];\n\n for (let i = 0; i < formatParts.length; i++) {\n if (formatParts[i].indexOf('yy') !== -1) {\n datesArray[0] = { value: dateParts[i], format: formatParts[i] };\n }\n if (formatParts[i].indexOf('m') !== -1) {\n datesArray[1] = { value: dateParts[i], format: formatParts[i] };\n }\n if (formatParts[i].indexOf('d') !== -1 && formatParts[i].length <= 2) {\n datesArray[2] = { value: dateParts[i], format: formatParts[i] };\n }\n }\n\n let monthsNames;\n\n if (format.indexOf('mmmm') !== -1) {\n monthsNames = options.monthsFull;\n } else {\n monthsNames = options.monthsShort;\n }\n\n const year = Number(datesArray[0].value);\n const month = isMonthString\n ? getMonthNumberByMonthName(datesArray[1].value, monthsNames)\n : Number(datesArray[1].value) - 1;\n const day = Number(datesArray[2].value);\n\n const parsedDate = createDate(year, month, day);\n return parsedDate;\n};\n\nconst getMonthNumberByMonthName = (monthValue, monthLabels) => {\n return monthLabels.findIndex((monthLabel) => monthLabel === monthValue);\n};\n\nexport {\n getDelimeters,\n parseDate,\n getMonth,\n getYear,\n getMonthNumberByMonthName,\n isValidDate,\n isValidTime,\n};\n","import { element, getUID, typeCheckConfig } from '../../mdb/util/index';\nimport { getDelimeters, parseDate, getMonth, getYear, isValidDate, isValidTime } from './utils';\nimport { ICON_BUTTONS, TOGGLE_BUTTON } from './templates';\nimport ScrollBarHelper from '../../bootstrap/mdb-prefix/util/scrollbar';\nimport Data from '../../mdb/dom/data';\nimport EventHandler from '../../mdb/dom/event-handler';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport Datepicker from '../datepicker/index';\nimport Timepicker from '../timepicker';\nimport BaseComponent from '../../free/base-component';\nimport { bindCallbackEventsIfNeeded } from '../../autoinit/init';\n\nconst NAME = 'datetimepicker';\nconst DATA_KEY = `mdb.${NAME}`;\n\nconst CLASSNAME_DATEPICKER = 'datepicker';\nconst CLASSNAME_TIMEPICKER = 'timepicker';\nconst CLASSNAME_TOGGLE_BUTTON = `${NAME}-toggle-button`;\n\nconst SELECTOR_TIMEPICKER = `.${CLASSNAME_TIMEPICKER}`;\nconst SELECTOR_DATEPICKER = `.${CLASSNAME_DATEPICKER}`;\nconst SELECTOR_DATA_TOGGLE = `[data-mdb-toggle=\"${NAME}\"]`;\nconst SELECTOR_TOGGLE_BUTTON = `.${CLASSNAME_TOGGLE_BUTTON}`;\n\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_OPEN = `open${EVENT_KEY}`;\nconst EVENT_CLOSE = `close${EVENT_KEY}`;\nconst EVENT_VALUE_CHANGED = `valueChanged${EVENT_KEY}`;\n\nconst EVENT_CLOSE_DATEPICKER = 'close.mdb.datepicker';\nconst EVENT_VALUE_CHANGED_DATEPICKER = 'valueChanged.mdb.datepicker';\nconst EVENT_VALUE_CHANGED_TIMEPICKER = 'valueChanged.mdb.timepicker';\n\nconst BUTTONS_WRAPPER = element('div');\n\nconst Default = {\n inline: false,\n toggleButton: true,\n container: 'body',\n disabled: false,\n disablePast: false,\n disableFuture: false,\n defaultTime: '',\n defaultDate: '',\n timepicker: {},\n datepicker: {},\n showFormat: false,\n};\n\nconst DefaultType = {\n inline: 'boolean',\n toggleButton: 'boolean',\n container: 'string',\n disabled: 'boolean',\n disablePast: 'boolean',\n disableFuture: 'boolean',\n defaultTime: '(string|date|number)',\n defaultDate: '(string|date|number)',\n timepicker: 'object',\n datepicker: 'object',\n showFormat: 'boolean',\n};\n\nclass Datetimepicker extends BaseComponent {\n constructor(element, options) {\n super(element);\n\n this._input = SelectorEngine.findOne('input', this._element);\n this._options = this._getConfig(options);\n this._timepicker = null;\n this._datepicker = null;\n this._dateValue = this._options.defaultDate ? this._options.defaultDate : '';\n this._timeValue = this._options.defaultTime ? this._options.defaultTime : '';\n this._isInvalidTimeFormat = false;\n this._format = this._options.datepicker.format ? this._options.datepicker.format : 'dd/mm/yyyy';\n this._cancel = false;\n\n this._scrollBar = new ScrollBarHelper();\n\n this._init();\n Manipulator.setDataAttribute(this._element, `${this.constructor.NAME}-initialized`, true);\n bindCallbackEventsIfNeeded(this.constructor);\n }\n\n // Getters\n\n static get NAME() {\n return NAME;\n }\n\n get toggleButton() {\n return SelectorEngine.findOne(SELECTOR_TOGGLE_BUTTON, this._element);\n }\n\n dispose() {\n EventHandler.off(this._element, 'click', this._openDatePicker);\n EventHandler.off(this._input, 'input', this._handleInput);\n EventHandler.off(this._element, 'click');\n\n this._removeTimePicker();\n this._removeDatepicker();\n const toggleButton = this.toggleButton;\n if (toggleButton) {\n this.toggleButton.remove();\n }\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n update(options = {}) {\n const tempOptions = this._getConfig({ ...this._options, ...options });\n\n EventHandler.off(this._element, 'click', this._openDatePicker);\n EventHandler.off(this._input, 'input', this._handleInput);\n EventHandler.off(this._element, 'click');\n\n this._removeTimePicker();\n this._removeDatepicker();\n const toggleButton = this.toggleButton;\n if (toggleButton) {\n this.toggleButton.remove();\n }\n\n this._options = Default;\n this._timepicker = null;\n this._datepicker = null;\n this._dateValue = null;\n this._timeValue = null;\n this._isInvalidTimeFormat = null;\n\n this._options = tempOptions;\n\n this._init();\n }\n\n // Private\n\n _init() {\n this._addDatepicker();\n this._addTimePicker();\n this._appendToggleButton();\n this._listenToToggleClick();\n this._listenToUserInput();\n this._disableInput();\n this._setInitialDefaultInput();\n this._applyFormatPlaceholder();\n\n if (this._options.disablePast) {\n this._handleTimepickerDisablePast();\n }\n if (this._options.disableFuture) {\n this._handleTimepickerDisableFuture();\n }\n\n if (this._input.value) {\n this._handleInput(this._input.value);\n }\n }\n\n _removeDatepicker() {\n const datepicker = this._element.querySelector('.datepicker');\n if (datepicker) {\n datepicker.remove();\n }\n }\n\n _addDatepicker() {\n const DATEPICKER_WRAPPER = element('div');\n DATEPICKER_WRAPPER.id = this._element.id\n ? `datepicker-${this._element.id}`\n : getUID('datepicker-');\n\n const DATEPICKER_INPUT = '<input type=\"text\" class=\"form-control\">';\n DATEPICKER_WRAPPER.innerHTML = DATEPICKER_INPUT;\n\n Manipulator.addClass(DATEPICKER_WRAPPER, CLASSNAME_DATEPICKER);\n this._element.appendChild(DATEPICKER_WRAPPER);\n Manipulator.style(DATEPICKER_WRAPPER, { display: 'none' });\n\n let datepickerOptions = {\n ...this._options.datepicker,\n ...{\n container: this._options.container,\n disablePast: this._options.disablePast,\n disableFuture: this._options.disableFuture,\n },\n };\n\n if (this._options.inline || this._options.datepicker.inline) {\n datepickerOptions = { ...datepickerOptions, inline: true };\n }\n this._datepicker = new Datepicker(DATEPICKER_WRAPPER, datepickerOptions);\n this._datepicker._input.value = this._dateValue;\n }\n\n _removeTimePicker() {\n const timepicker = this._element.querySelector('.timepicker');\n if (timepicker) {\n timepicker.remove();\n this._scrollBar.reset();\n }\n }\n\n _addTimePicker() {\n const TIMEPICKER_WRAPPER = element('div');\n TIMEPICKER_WRAPPER.id = this._element.id\n ? `timepicker-${this._element.id}`\n : getUID('timepicker-');\n\n const TIMEPICKER_INPUT = '<input type=\"text\" class=\"form-control\">';\n TIMEPICKER_WRAPPER.innerHTML = TIMEPICKER_INPUT;\n\n Manipulator.addClass(TIMEPICKER_WRAPPER, CLASSNAME_TIMEPICKER);\n this._element.appendChild(TIMEPICKER_WRAPPER);\n Manipulator.style(TIMEPICKER_WRAPPER, { display: 'none' });\n\n let timepickerOptions = {\n ...this._options.timepicker,\n ...{ container: this._options.container },\n };\n\n if (this._options.inline || this._options.timepicker.inline) {\n timepickerOptions = { ...timepickerOptions, inline: true };\n }\n\n this._timepicker = new Timepicker(TIMEPICKER_WRAPPER, timepickerOptions);\n this._timepicker._input.value = this._timeValue;\n }\n\n _addIconButtons() {\n Manipulator.addClass(BUTTONS_WRAPPER, 'buttons-container');\n BUTTONS_WRAPPER.innerHTML = ICON_BUTTONS;\n\n if (this._options.inline || this._options.datepicker.inline) {\n return;\n }\n\n this._scrollBar.hide();\n\n if (this._datepicker._isOpen) {\n const headerDate = SelectorEngine.findOne(`${SELECTOR_DATEPICKER}-header`, document.body);\n headerDate.appendChild(BUTTONS_WRAPPER);\n } else if (this._timepicker._modal && !this._options.timepicker.inline) {\n const header = SelectorEngine.findOne(`${SELECTOR_TIMEPICKER}-elements`, document.body);\n const headerTime = SelectorEngine.findOne(\n `${SELECTOR_TIMEPICKER}-clock-wrapper`,\n document.body\n );\n header.insertBefore(BUTTONS_WRAPPER, headerTime);\n }\n }\n\n _enableOrDisableToggleButton() {\n if (this._options.disabled) {\n this.toggleButton.disabled = true;\n this.toggleButton.style.pointerEvents = 'none';\n } else {\n this.toggleButton.disabled = false;\n this.toggleButton.style.pointerEvents = 'pointer';\n }\n }\n\n _appendToggleButton() {\n if (!this._options.toggleButton) {\n return;\n }\n this._element.insertAdjacentHTML('beforeend', TOGGLE_BUTTON);\n\n this._enableOrDisableToggleButton();\n }\n\n _applyFormatPlaceholder() {\n if (this._options.showFormat) {\n this._input.placeholder = this._format;\n }\n }\n\n _listenToCancelClick() {\n const DATEPICKER_CANCEL_BTN = SelectorEngine.findOne(\n `${SELECTOR_DATEPICKER}-cancel-btn`,\n document.body\n );\n\n EventHandler.one(DATEPICKER_CANCEL_BTN, 'mousedown', () => {\n this._cancel = true;\n this._scrollBar.reset();\n EventHandler.off(DATEPICKER_CANCEL_BTN, 'mousedown');\n });\n }\n\n _listenToToggleClick() {\n EventHandler.on(this._element, 'click', SELECTOR_DATA_TOGGLE, (event) => {\n event.preventDefault();\n this._openDatePicker();\n });\n }\n\n _listenToUserInput() {\n EventHandler.on(this._input, 'input', (event) => {\n this._handleInput(event.target.value);\n });\n }\n\n _disableInput() {\n if (this._options.disabled) {\n this._input.disabled = 'true';\n }\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n config = {\n ...Default,\n ...dataAttributes,\n ...config,\n };\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _handleInput(input) {\n const dateTimeSplited = input.split(', ');\n const dateDelimeters = getDelimeters(this._format);\n\n const inputFirstValue = dateTimeSplited[0];\n const inputSecondValue = dateTimeSplited[1] || '';\n\n const date = parseDate(\n inputFirstValue,\n this._format,\n dateDelimeters,\n this._datepicker._options\n );\n\n if (dateTimeSplited.length === 2) {\n const isInputValid = isValidDate(date) && isValidTime(inputSecondValue);\n\n if (isInputValid) {\n this._dateValue = inputFirstValue;\n this._timeValue = inputSecondValue;\n this._datepicker._input.value = this._dateValue;\n this._datepicker._activeDate = this._dateValue;\n this._datepicker._selectedYear = getYear(date);\n this._datepicker._selectedMonth = getMonth(date);\n this._datepicker._headerDate = date;\n this._timepicker._input.value = this._timeValue;\n this._timepicker._isInvalidTimeFormat = false;\n } else {\n this._datepicker._activeDate = new Date();\n this._datepicker._selectedDate = null;\n this._datepicker._selectedMonth = null;\n this._datepicker._selectedYear = null;\n this._datepicker._headerDate = null;\n this._datepicker._headerMonth = null;\n this._datepicker._headerYear = null;\n this._timepicker._isInvalidTimeFormat = true;\n }\n }\n }\n\n _openDatePicker() {\n const openEvent = EventHandler.trigger(this._element, EVENT_OPEN);\n\n if (openEvent.defaultPrevented) {\n return;\n }\n\n this._datepicker.open();\n\n if (!this._options.inline) {\n this._scrollBar.hide();\n }\n\n if (this._options.inline || this._options.datepicker.inline) {\n this._openDropdownDate();\n }\n this._addIconButtons();\n\n this._listenToCancelClick();\n\n if (this._options.inline && this._datepicker._isOpen) {\n this.toggleButton.style.pointerEvents = 'none';\n }\n\n EventHandler.one(this._datepicker._element, EVENT_CLOSE_DATEPICKER, () => {\n this._dateValue = this._datepicker._input.value;\n this._updateInputValue();\n\n if (this._cancel) {\n this._cancel = false;\n return;\n }\n\n EventHandler.on(this._datepicker.container, 'click', (e) => {\n if (!this._datepicker._selectedDate && e.target.classList.contains('datepicker-ok-btn')) {\n return;\n }\n this._openTimePicker();\n });\n setTimeout(() => {\n const timepicker = SelectorEngine.findOne(`${SELECTOR_TIMEPICKER}-wrapper`, document.body);\n if (!timepicker) {\n this._scrollBar.reset();\n }\n }, 10);\n if (this._options.inline) {\n this.toggleButton.style.pointerEvents = 'auto';\n }\n });\n\n const CLOCK_BTN = SelectorEngine.findOne(`${SELECTOR_TIMEPICKER}-button-toggle`, document.body);\n EventHandler.on(CLOCK_BTN, 'click', () => {\n this._datepicker._confirmSelection(this._datepicker._headerDate);\n this._datepicker.close();\n this._scrollBar.hide();\n EventHandler.trigger(this._datepicker._element, EVENT_CLOSE_DATEPICKER);\n });\n }\n\n _handleTimepickerDisablePast() {\n const currentDate = new Date();\n currentDate.setHours(0, 0, 0, 0);\n\n EventHandler.on(this._datepicker._element, EVENT_VALUE_CHANGED_DATEPICKER, () => {\n if (this._datepicker._selectedDate.getTime() === currentDate.getTime()) {\n this._timepicker.update({ disablePast: true });\n } else {\n this._timepicker.update({ disablePast: false });\n }\n });\n }\n\n _handleTimepickerDisableFuture() {\n const currentDate = new Date();\n currentDate.setHours(0, 0, 0, 0);\n\n EventHandler.on(this._datepicker._element, EVENT_VALUE_CHANGED_DATEPICKER, () => {\n if (this._datepicker._selectedDate.getTime() === currentDate.getTime()) {\n this._timepicker.update({ disableFuture: true });\n } else {\n this._timepicker.update({ disableFuture: false });\n }\n });\n }\n\n _openDropdownDate() {\n const datePopper = this._datepicker._popper;\n datePopper.state.elements.reference = this._input;\n this._scrollBar.reset();\n }\n\n _openTimePicker() {\n EventHandler.trigger(this._timepicker.toggleButton, 'click');\n setTimeout(() => {\n this._addIconButtons();\n\n if (this._options.inline || this._options.timepicker.inline) {\n this._openDropdownTime();\n }\n if (this._timepicker._modal) {\n const CANCEL_BTN = SelectorEngine.findOne(`${SELECTOR_TIMEPICKER}-cancel`, document.body);\n EventHandler.on(this._timepicker._modal, 'click', (e) => {\n if (\n e.target.classList.contains(`${CLASSNAME_TIMEPICKER}-wrapper`) ||\n e.target.classList.contains(`${CLASSNAME_TIMEPICKER}-submit`)\n ) {\n setTimeout(() => {\n this._scrollBar.reset();\n }, 200);\n }\n if (e.target.classList.contains(`${CLASSNAME_TIMEPICKER}-clear`)) {\n EventHandler.trigger(this._timepicker._element, EVENT_VALUE_CHANGED_TIMEPICKER);\n }\n if (e.target.classList.contains(`${CLASSNAME_DATEPICKER}-button-toggle`)) {\n EventHandler.trigger(CANCEL_BTN, 'click');\n setTimeout(() => {\n this._openDatePicker();\n this._scrollBar.hide();\n }, 200);\n }\n });\n }\n });\n\n EventHandler.one(this._timepicker._element, EVENT_VALUE_CHANGED_TIMEPICKER, () => {\n this._timeValue = this._timepicker._input.value;\n this._updateInputValue();\n EventHandler.trigger(this._element, EVENT_CLOSE);\n });\n }\n\n _openDropdownTime() {\n const timePopper = this._timepicker._popper;\n timePopper.state.elements.reference = this._input;\n timePopper.update();\n this._scrollBar.reset();\n }\n\n _setInitialDefaultInput() {\n const shouldUpdate = this._options.defaultDate || this._options.defaultTime;\n\n if (shouldUpdate) {\n this._updateInputValue();\n }\n }\n\n _updateInputValue() {\n const isDateTimeFilled = this._timeValue && this._dateValue;\n\n if (isDateTimeFilled) {\n this._input.value = `${this._dateValue}, ${this._timeValue}`;\n\n const changeEvent = EventHandler.trigger(this._element, EVENT_VALUE_CHANGED, {\n value: this._input.value,\n });\n\n if (changeEvent.defaultPrevented) {\n return;\n }\n }\n\n EventHandler.trigger(this._input, 'focus');\n }\n\n // static\n\n static jQueryInterface(config, options) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY);\n const _config = typeof config === 'object' && config;\n\n if (!data && /dispose/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Datetimepicker(this, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](options);\n }\n });\n }\n}\n\nexport default Datetimepicker;\n","export const ICON_BUTTONS = `\n <button type=\"button\" class=\"datepicker-button-toggle\" data-mdb-toggle=\"datepicker\">\n <i class=\"fa fa-calendar datepicker-toggle-icon\"></i>\n </button>\n <button type=\"button\" class=\"timepicker-button-toggle\" data-mdb-toggle=\"timepicker\">\n <i class=\"far fa-clock fa-sm timepicker-icon\"></i>\n </button>\n`;\n\nexport const TOGGLE_BUTTON = `\n <button type=\"button\" class=\"datetimepicker-toggle-button\" data-mdb-toggle=\"datetimepicker\">\n <i class=\"fa fa-calendar datepicker-toggle-icon\"></i>\n </button>\n`;\n","import EventHandler from '../../mdb/dom/event-handler';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport Manipulator from '../../mdb/dom/manipulator';\nimport {\n isDisabled,\n getElementFromSelector,\n isVisible,\n getSelectorFromElement,\n} from '../../mdb/util';\nimport { enableDismissTrigger } from '../../bootstrap/mdb-prefix/util/component-functions';\n\nconst callbackInitState = new Map();\n\nconst alertCallback = (component, initSelector) => {\n const Alert = component;\n\n if (!callbackInitState.has(component.name)) {\n enableDismissTrigger(Alert);\n callbackInitState.set(component.name, true);\n }\n\n // MDB init\n SelectorEngine.find(initSelector).forEach((element) => {\n return Alert.getOrCreateInstance(element);\n });\n};\n\nconst buttonCallback = (component, initSelector) => {\n const Button = component;\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n\n if (!callbackInitState.has(component.name)) {\n // BS init\n EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, (event) => {\n event.preventDefault();\n\n const button = event.target.closest(initSelector);\n const data = Button.getOrCreateInstance(button);\n\n data.toggle();\n });\n callbackInitState.set(component.name, true);\n }\n\n // MDB init\n SelectorEngine.find(initSelector).forEach((element) => {\n return Button.getOrCreateInstance(element);\n });\n};\n\nconst carouselCallback = (component, initSelector) => {\n if (callbackInitState.has(component.name)) {\n return;\n }\n\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const SELECTOR_DATA_SLIDE = '[data-mdb-slide], [data-mdb-slide-to]';\n const CLASS_NAME_CAROUSEL = 'carousel';\n const Carousel = component;\n const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;\n const SELECTOR_DATA_RIDE = initSelector;\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-mdb-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n\n carousel.prev();\n carousel._maybeEnableCycle();\n });\n\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n carousels.forEach((carousel) => {\n Carousel.getOrCreateInstance(carousel);\n });\n });\n\n callbackInitState.set(component.name, true);\n};\n\nconst collapseCallback = (component, initSelector) => {\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const SELECTOR_DATA_TOGGLE = initSelector;\n const Collapse = component;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (\n event.target.tagName === 'A' ||\n (event.delegateTarget && event.delegateTarget.tagName === 'A')\n ) {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n selectorElements.forEach((element) => {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle();\n });\n });\n\n callbackInitState.set(component.name, true);\n }\n\n SelectorEngine.find(SELECTOR_DATA_TOGGLE).forEach((el) => {\n const selector = getSelectorFromElement(el);\n const selectorElements = SelectorEngine.find(selector);\n\n selectorElements.forEach((element) => {\n Collapse.getOrCreateInstance(element, { toggle: false });\n });\n });\n};\n\nconst dropdownCallback = (component, initSelector) => {\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const EVENT_KEYDOWN_DATA_API = `keydown.bs.${component.name}.data-api`;\n const EVENT_KEYUP_DATA_API = `keyup.bs.${component.name}.data-api`;\n const SELECTOR_MENU = '.dropdown-menu';\n const SELECTOR_DATA_TOGGLE = `[data-mdb-${component.NAME}-initialized]`;\n const Dropdown = component;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(\n document,\n EVENT_KEYDOWN_DATA_API,\n SELECTOR_DATA_TOGGLE,\n Dropdown.dataApiKeydownHandler\n );\n EventHandler.on(\n document,\n EVENT_KEYDOWN_DATA_API,\n SELECTOR_MENU,\n Dropdown.dataApiKeydownHandler\n );\n EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);\n EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n });\n }\n\n callbackInitState.set(component.name, true);\n\n SelectorEngine.find(initSelector).forEach((el) => {\n Dropdown.getOrCreateInstance(el);\n });\n};\n\nconst inputCallback = (component, initSelector) => {\n const SELECTOR_DATA_INIT = initSelector;\n const SELECTOR_OUTLINE_INPUT = `${SELECTOR_DATA_INIT} input`;\n const SELECTOR_OUTLINE_TEXTAREA = `${SELECTOR_DATA_INIT} textarea`;\n const Input = component;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(document, 'focus', SELECTOR_OUTLINE_INPUT, Input.activate(new Input()));\n EventHandler.on(document, 'input', SELECTOR_OUTLINE_INPUT, Input.activate(new Input()));\n EventHandler.on(document, 'blur', SELECTOR_OUTLINE_INPUT, Input.deactivate(new Input()));\n\n EventHandler.on(document, 'focus', SELECTOR_OUTLINE_TEXTAREA, Input.activate(new Input()));\n EventHandler.on(document, 'input', SELECTOR_OUTLINE_TEXTAREA, Input.activate(new Input()));\n EventHandler.on(document, 'blur', SELECTOR_OUTLINE_TEXTAREA, Input.deactivate(new Input()));\n\n EventHandler.on(window, 'shown.bs.modal', (e) => {\n SelectorEngine.find(SELECTOR_OUTLINE_INPUT, e.target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.update();\n });\n SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, e.target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.update();\n });\n });\n\n EventHandler.on(window, 'shown.bs.dropdown', (e) => {\n const target = e.target.parentNode.querySelector('.dropdown-menu');\n if (target) {\n SelectorEngine.find(SELECTOR_OUTLINE_INPUT, target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.update();\n });\n SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.update();\n });\n }\n });\n\n EventHandler.on(window, 'shown.bs.tab', (e) => {\n let targetId;\n\n if (e.target.href) {\n targetId = e.target.href.split('#')[1];\n } else {\n targetId = Manipulator.getDataAttribute(e.target, 'target').split('#')[1];\n }\n\n const target = SelectorEngine.findOne(`#${targetId}`);\n SelectorEngine.find(SELECTOR_OUTLINE_INPUT, target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.update();\n });\n SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.update();\n });\n });\n\n // form reset handler\n EventHandler.on(window, 'reset', (e) => {\n SelectorEngine.find(SELECTOR_OUTLINE_INPUT, e.target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.forceInactive();\n });\n SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, e.target).forEach((element) => {\n const instance = Input.getInstance(element.parentNode);\n if (!instance) {\n return;\n }\n instance.forceInactive();\n });\n });\n\n // auto-fill\n EventHandler.on(window, 'onautocomplete', (e) => {\n const instance = Input.getInstance(e.target.parentNode);\n if (!instance || !e.cancelable) {\n return;\n }\n instance.forceActive();\n });\n\n callbackInitState.set(component.name, true);\n }\n\n // auto-init\n SelectorEngine.find(SELECTOR_DATA_INIT).map((element) => Input.getOrCreateInstance(element));\n};\n\nconst modalCallback = (component, initSelector) => {\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const OPEN_SELECTOR = '.modal.show';\n const Modal = component;\n const EVENT_SHOW = `show.bs.${component.name}`;\n const EVENT_HIDDEN = `hidden.bs.${component.name}`;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW, (showEvent) => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpenedModals = SelectorEngine.find(OPEN_SELECTOR);\n alreadyOpenedModals.forEach((modal) => {\n if (!modal.classList.contains('modal-non-invasive-show')) {\n Modal.getInstance(modal).hide();\n }\n });\n\n const data = Modal.getOrCreateInstance(target);\n\n data.toggle(this);\n });\n\n enableDismissTrigger(Modal);\n callbackInitState.set(component.name, true);\n }\n\n SelectorEngine.find(initSelector).forEach((el) => {\n const selector = getSelectorFromElement(el);\n const selectorElement = SelectorEngine.findOne(selector);\n\n Modal.getOrCreateInstance(selectorElement);\n });\n};\n\nconst popoverCallback = (component, initSelector) => {\n const Popover = component;\n const SELECTOR_DATA_TOGGLE = initSelector;\n\n SelectorEngine.find(SELECTOR_DATA_TOGGLE).forEach((el) => {\n Popover.getOrCreateInstance(el);\n });\n};\n\nconst offcanvasCallback = (component, initSelector) => {\n if (callbackInitState.has(component.name)) {\n return;\n }\n\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const OPEN_SELECTOR = '.offcanvas.show';\n const Offcanvas = component;\n const EVENT_HIDDEN = `hidden.bs.${component.name}`;\n const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;\n const EVENT_RESIZE = `resize.bs.${component.name}`;\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n });\n\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(OPEN_SELECTOR).forEach((selector) => {\n Offcanvas.getOrCreateInstance(selector).show();\n });\n });\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]').forEach((element) => {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n });\n });\n\n enableDismissTrigger(Offcanvas);\n callbackInitState.set(component.name, true);\n};\n\nconst scrollspyCallback = (component, initSelector) => {\n if (callbackInitState.has(component.name)) {\n return;\n }\n\n const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;\n const ScrollSpy = component;\n\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(initSelector).forEach((el) => {\n ScrollSpy.getOrCreateInstance(el);\n });\n });\n\n callbackInitState.set(component.name, true);\n};\n\nconst tabCallback = (component, initSelector) => {\n const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const CLASS_NAME_ACTIVE = 'active';\n const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-mdb-tab-init], .${CLASS_NAME_ACTIVE}[data-mdb-pill-init], .${CLASS_NAME_ACTIVE}[data-mdb-toggle=\"list\"]`;\n const Tab = component;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n Tab.getOrCreateInstance(this).show();\n });\n\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE).forEach((element) => {\n Tab.getOrCreateInstance(element);\n });\n });\n\n callbackInitState.set(component.name, true);\n }\n};\n\nconst toastCallback = (component, initSelector) => {\n const Toast = component;\n\n if (!callbackInitState.has(component.name)) {\n enableDismissTrigger(Toast);\n callbackInitState.set(component.name, true);\n }\n\n // MDB init\n SelectorEngine.find(initSelector).forEach((element) => {\n return Toast.getOrCreateInstance(element);\n });\n};\n\nconst rippleCallback = (component, initSelector) => {\n const Ripple = component;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.one(document, 'mousedown', initSelector, Ripple.autoInitial(new Ripple()));\n callbackInitState.set(component.name, true);\n }\n};\n\nexport {\n alertCallback,\n buttonCallback,\n carouselCallback,\n collapseCallback,\n dropdownCallback,\n inputCallback,\n modalCallback,\n offcanvasCallback,\n tabCallback,\n toastCallback,\n popoverCallback,\n rippleCallback,\n scrollspyCallback,\n};\n","import EventHandler from '../../mdb/dom/event-handler';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport { getElementFromSelector, isVisible, getSelectorFromElement } from '../../mdb/util';\nimport { enableDismissTrigger } from '../../bootstrap/mdb-prefix/util/component-functions';\nimport {\n buttonCallback,\n carouselCallback,\n collapseCallback,\n dropdownCallback,\n offcanvasCallback,\n scrollspyCallback,\n tabCallback,\n} from './free';\n\nconst callbackInitState = new Map();\n\nconst alertCallback = (component, initSelector) => {\n const Alert = component;\n\n if (!callbackInitState.has(component.name)) {\n enableDismissTrigger(Alert);\n callbackInitState.set(component.name, true);\n }\n // MDB init\n SelectorEngine.find(initSelector).forEach((element) => {\n return Alert.getOrCreateInstance(element);\n });\n};\n\nconst lightboxCallback = (component, initSelector) => {\n const EVENT_CLICK_DATA_API = `click.mdb.${component.name}.data-api`;\n const SELECTOR_DATA_TOGGLE = `[data-mdb-${component.NAME}-initialized]`;\n const SELECTOR_TOGGLE = `${SELECTOR_DATA_TOGGLE} img:not(.lightbox-disabled)`;\n const Lightbox = component;\n\n SelectorEngine.find(initSelector).forEach((element) => {\n return Lightbox.getOrCreateInstance(element);\n });\n\n\n if (callbackInitState.has(component.name)) {\n return;\n }\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_TOGGLE, (event) => {\n event.preventDefault();\n Lightbox.toggle(event);\n });\n callbackInitState.set(component.name, true);\n};\n\nconst modalCallback = (component, initSelector) => {\n const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;\n const OPEN_SELECTOR = '.modal.show';\n const Modal = component;\n const EVENT_SHOW = `show.bs.${component.name}`;\n const EVENT_HIDDEN = `hidden.bs.${component.name}`;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW, (showEvent) => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpenedModals = SelectorEngine.find(OPEN_SELECTOR);\n alreadyOpenedModals.forEach((modal) => {\n if (!modal.classList.contains('modal-non-invasive-show')) {\n Modal.getInstance(modal).hide();\n }\n });\n\n const data = Modal.getOrCreateInstance(target);\n\n data.toggle(this);\n });\n\n enableDismissTrigger(Modal);\n\n callbackInitState.set(component.name, true);\n }\n\n SelectorEngine.find(initSelector).forEach((el) => {\n const selector = getSelectorFromElement(el);\n const selectorElement = SelectorEngine.findOne(selector);\n\n Modal.getOrCreateInstance(selectorElement);\n });\n};\n\nconst sidenavCallback = (component, initSelector) => {\n const SELECTOR_DATA_INIT = initSelector;\n const SELECTOR_TOGGLE = '[data-mdb-toggle=\"sidenav\"]';\n const Sidenav = component;\n\n if (!callbackInitState.has(component.name)) {\n EventHandler.on(document, 'click', SELECTOR_TOGGLE, Sidenav.toggleSidenav());\n callbackInitState.set(component.name, true);\n }\n\n SelectorEngine.find(SELECTOR_DATA_INIT).forEach((sidenav) => {\n return Sidenav.getOrCreateInstance(sidenav);\n });\n};\n\nconst toastCallback = (component, initSelector) => {\n const SELECTOR_DATA_INIT = initSelector;\n const Toast = component;\n\n if (!callbackInitState.has(component.name)) {\n enableDismissTrigger(Toast);\n callbackInitState.set(component.name, true);\n }\n\n SelectorEngine.find(SELECTOR_DATA_INIT).forEach((toast) => {\n return Toast.getOrCreateInstance(toast);\n });\n};\n\nexport {\n alertCallback,\n lightboxCallback,\n buttonCallback,\n carouselCallback,\n collapseCallback,\n dropdownCallback,\n modalCallback,\n offcanvasCallback,\n scrollspyCallback,\n sidenavCallback,\n tabCallback,\n toastCallback,\n};\n","import {\n alertCallback,\n lightboxCallback,\n sidenavCallback,\n modalCallback,\n toastCallback,\n} from '../callbacks/pro';\nimport * as freeSelectors from './free';\nimport chartsCallback from '../callbacks/charts';\n\nconst defaultInitSelectors = {\n ...freeSelectors.default,\n chart: {\n name: 'Chart',\n selector: '[data-mdb-chart-init]',\n isToggler: false,\n advanced: chartsCallback,\n },\n chips: {\n name: 'ChipsInput',\n selector: '[data-mdb-chips-input-init]',\n isToggler: false,\n },\n chip: {\n name: 'Chip',\n selector: '[data-mdb-chip-init]',\n isToggler: false,\n onInit: 'init',\n },\n datatable: {\n name: 'Datatable',\n selector: '[data-mdb-datatable-init]',\n isToggler: false,\n },\n select: {\n name: 'Select',\n selector: '[data-mdb-select-init]',\n isToggler: false,\n },\n datetimepicker: {\n name: 'Datetimepicker',\n selector: '[data-mdb-datetimepicker-init]',\n isToggler: false,\n },\n datepicker: {\n name: 'Datepicker',\n selector: '[data-mdb-datepicker-init]',\n isToggler: false,\n },\n loading: {\n name: 'Loading',\n selector: '[data-mdb-loading-init]',\n isToggler: false,\n },\n multiRangeSlider: {\n name: 'MultiRangeSlider',\n selector: '[data-mdb-multi-range-slider-init]',\n isToggler: false,\n },\n timepicker: {\n name: 'Timepicker',\n selector: '[data-mdb-timepicker-init]',\n isToggler: false,\n },\n touch: {\n name: 'Touch',\n selector: '[data-mdb-touch-init]',\n isToggler: false,\n },\n alert: {\n name: 'Alert',\n selector: '[data-mdb-alert-init]',\n isToggler: true,\n callback: alertCallback,\n },\n animation: {\n name: 'Animate',\n selector: '[data-mdb-animation-init]',\n isToggler: false,\n onInit: 'init',\n },\n clipboard: {\n name: 'Clipboard',\n selector: '[data-mdb-clipboard-init]',\n isToggler: false,\n },\n infiniteScroll: {\n name: 'InfiniteScroll',\n selector: '[data-mdb-infinite-scroll-init]',\n isToggler: false,\n },\n lazyLoad: {\n name: 'LazyLoad',\n selector: '[data-mdb-lazy-load-init]',\n isToggler: false,\n },\n lightbox: {\n name: 'Lightbox',\n selector: '[data-mdb-lightbox-init]',\n isToggler: true,\n callback: lightboxCallback,\n },\n modal: {\n name: 'Modal',\n selector: '[data-mdb-modal-init]',\n isToggler: true,\n callback: modalCallback,\n },\n navbar: {\n name: 'Navbar',\n selector: '[data-mdb-navbar-init]',\n isToggler: false,\n onInit: 'init',\n },\n perfectScrollbar: {\n name: 'PerfectScrollbar',\n selector: '[data-mdb-perfect-scrollbar-init]',\n isToggler: false,\n },\n popconfirm: {\n name: 'Popconfirm',\n selector: '[data-mdb-popconfirm-init]',\n isToggler: false,\n },\n rating: {\n name: 'Rating',\n selector: '[data-mdb-rating-init]',\n isToggler: false,\n },\n sidenav: {\n name: 'Sidenav',\n selector: '[data-mdb-sidenav-init]',\n isToggler: true,\n callback: sidenavCallback,\n },\n smoothScroll: {\n name: 'SmoothScroll',\n selector: '[data-mdb-smooth-scroll-init]',\n isToggler: false,\n },\n stepper: {\n name: 'Stepper',\n selector: '[data-mdb-stepper-init]',\n isToggler: false,\n },\n sticky: {\n name: 'Sticky',\n selector: '[data-mdb-sticky-init]',\n isToggler: false,\n },\n toast: {\n name: 'Toast',\n selector: '[data-mdb-toast-init]',\n isToggler: true,\n callback: toastCallback,\n },\n};\n\nexport default defaultInitSelectors;\n","import {\n alertCallback,\n dropdownCallback,\n offcanvasCallback,\n tabCallback,\n buttonCallback,\n modalCallback,\n rippleCallback,\n collapseCallback,\n carouselCallback,\n scrollspyCallback,\n toastCallback,\n inputCallback,\n} from '../callbacks/free';\n\nconst defaultInitSelectors = {\n // Bootstrap Components\n alert: {\n name: 'Alert',\n selector: '[data-mdb-alert-init]',\n isToggler: true,\n callback: alertCallback,\n },\n button: {\n name: 'Button',\n selector: '[data-mdb-button-init]',\n isToggler: true,\n callback: buttonCallback,\n },\n carousel: {\n name: 'Carousel',\n selector: '[data-mdb-carousel-init]',\n isToggler: true,\n callback: carouselCallback,\n },\n collapse: {\n name: 'Collapse',\n selector: '[data-mdb-collapse-init]',\n isToggler: true,\n callback: collapseCallback,\n },\n dropdown: {\n name: 'Dropdown',\n selector: '[data-mdb-dropdown-init]',\n isToggler: true,\n callback: dropdownCallback,\n },\n modal: {\n name: 'Modal',\n selector: '[data-mdb-modal-init]',\n isToggler: true,\n callback: modalCallback,\n },\n offcanvas: {\n name: 'Offcanvas',\n selector: '[data-mdb-offcanvas-init]',\n isToggler: true,\n callback: offcanvasCallback,\n },\n scrollspy: {\n name: 'ScrollSpy',\n selector: '[data-mdb-scrollspy-init]',\n isToggler: true,\n callback: scrollspyCallback,\n },\n tab: {\n name: 'Tab',\n selector: '[data-mdb-tab-init], [data-mdb-pill-init], [data-mdb-list-init]',\n isToggler: true,\n callback: tabCallback,\n },\n toast: {\n name: 'Toast',\n selector: '[data-mdb-toast-init]',\n isToggler: true,\n callback: toastCallback,\n },\n tooltip: {\n name: 'Tooltip',\n selector: '[data-mdb-tooltip-init]',\n isToggler: false,\n },\n input: {\n name: 'Input',\n selector: '[data-mdb-input-init]',\n isToggler: true,\n callback: inputCallback,\n },\n range: {\n name: 'Range',\n selector: '[data-mdb-range-init]',\n isToggler: false,\n },\n ripple: {\n name: 'Ripple',\n selector: '[data-mdb-ripple-init]',\n isToggler: true,\n callback: rippleCallback,\n },\n popover: {\n name: 'Popover',\n selector: '[data-mdb-popover-init]',\n isToggler: false,\n callback: rippleCallback,\n },\n};\n\nexport default defaultInitSelectors;\n","import Manipulator from '../../mdb/dom/manipulator';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimport DEFAULT_OPTIONS from '../../pro/charts/chartsDefaults';\n\nconst chartsCallback = (Component, initSelector) => {\n // eslint-disable-next-line consistent-return\n const IS_COMPLEX = (data) => {\n return (\n (data[0] === '{' && data[data.length - 1] === '}') ||\n (data[0] === '[' && data[data.length - 1] === ']')\n );\n };\n\n const CONVERT_DATA_TYPE = (data) => {\n if (typeof data !== 'string') return data;\n if (IS_COMPLEX(data)) {\n return JSON.parse(data.replace(/'/g, '\"'));\n }\n return data;\n };\n\n const PARSE_DATA = (data) => {\n const dataset = {};\n Object.keys(data).forEach((property) => {\n if (property.match(/dataset.*/)) {\n const chartProperty = property.slice(7, 8).toLowerCase().concat(property.slice(8));\n dataset[chartProperty] = CONVERT_DATA_TYPE(data[property]);\n }\n });\n return dataset;\n };\n\n SelectorEngine.find(initSelector).forEach((el) => {\n if (\n !Component.getInstance(el) &&\n Manipulator.getDataAttribute(el, 'chart') !== 'bubble' &&\n Manipulator.getDataAttribute(el, 'chart') !== 'scatter'\n ) {\n const dataSet = Manipulator.getDataAttributes(el);\n const dataAttr = {\n data: {\n datasets: [PARSE_DATA(dataSet)],\n },\n };\n if (dataSet.chart) {\n dataAttr.type = dataSet.chart;\n }\n if (dataSet.labels) {\n dataAttr.data.labels = JSON.parse(dataSet.labels.replace(/'/g, '\"'));\n }\n\n return new Component(el, {\n ...dataAttr,\n ...DEFAULT_OPTIONS[dataAttr.type],\n });\n }\n return null;\n });\n};\n\nexport default chartsCallback;\n","import defaultInitSelectors from './initSelectors/pro';\nimport { InitMDB } from './init';\n\nconst initMDBInstance = new InitMDB(defaultInitSelectors);\nconst initMDB = initMDBInstance.initMDB;\n\nexport default initMDB;\n","// BOOTSTRAP CORE COMPONENTS\nimport Button from './free/button';\nimport Offcanvas from './bootstrap/mdb-prefix/offcanvas';\nimport Carousel from './free/carousel';\nimport Popover from './free/popover';\nimport ScrollSpy from './free/scrollspy';\nimport Tab from './free/tab';\nimport Tooltip from './free/tooltip';\n\n// MDB FREE COMPONENTS\nimport Input from './free/input';\nimport Collapse from './free/collapse';\nimport Dropdown from './free/dropdown';\nimport Ripple from './free/ripple';\nimport Range from './free/range';\n\n// MDB PRO COMPONENTS\nimport Animate from './pro/animate';\nimport Chart from './pro/charts/charts';\nimport Lightbox from './pro/lightbox';\nimport Rating from './pro/rating';\nimport Sidenav from './pro/sidenav';\nimport Alert from './pro/alert';\nimport Toast from './pro/toast';\nimport Timepicker from './pro/timepicker';\nimport Navbar from './pro/navbar';\nimport InfiniteScroll from './pro/infinite-scroll';\nimport LazyLoad from './pro/lazy-load';\nimport Datepicker from './pro/datepicker';\nimport Popconfirm from './pro/popconfirm';\nimport Datatable from './pro/datatable';\nimport Stepper from './pro/stepper';\nimport Sticky from './pro/sticky';\nimport Select from './pro/select';\nimport Touch from './pro/touch';\nimport SmoothScroll from './pro/smooth-scroll';\nimport PerfectScrollbar from './pro/perfect-scrollbar';\nimport Loading from './pro/loading-management';\nimport Autocomplete from './pro/autocomplete';\nimport Modal from './pro/modal';\nimport Clipboard from './pro/clipboard';\nimport ChipsInput from './pro/chips';\nimport Chip from './pro/chips/chip';\nimport MultiRangeSlider from './pro/multi-range';\nimport Datetimepicker from './pro/date-time-picker';\n\nimport initMDB from './autoinit/index.pro';\n\nconst mdb = {\n // FREE\n Button,\n Carousel,\n Collapse,\n Offcanvas,\n Dropdown,\n Input,\n Modal,\n Popover,\n ScrollSpy,\n Ripple,\n Tab,\n Tooltip,\n Range,\n // PRO\n Alert,\n Animate,\n Chart,\n Datepicker,\n Datatable,\n Lightbox,\n Navbar,\n Popconfirm,\n Rating,\n Sidenav,\n SmoothScroll,\n Timepicker,\n Toast,\n InfiniteScroll,\n LazyLoad,\n Stepper,\n Sticky,\n Select,\n Touch,\n PerfectScrollbar,\n Loading,\n Autocomplete,\n Clipboard,\n ChipsInput,\n Chip,\n MultiRangeSlider,\n Datetimepicker,\n};\n\ninitMDB(mdb);\n\nexport {\n // FREE\n Button,\n Carousel,\n Collapse,\n Offcanvas,\n Dropdown,\n Input,\n Modal,\n Popover,\n ScrollSpy,\n Ripple,\n Tab,\n Tooltip,\n Range,\n // PRO\n Alert,\n Animate,\n Chart,\n Datepicker,\n Datatable,\n Lightbox,\n Navbar,\n Popconfirm,\n Rating,\n Sidenav,\n SmoothScroll,\n Timepicker,\n Toast,\n InfiniteScroll,\n LazyLoad,\n Stepper,\n Sticky,\n Select,\n Touch,\n PerfectScrollbar,\n Loading,\n Autocomplete,\n Clipboard,\n ChipsInput,\n Chip,\n MultiRangeSlider,\n Datetimepicker,\n initMDB,\n};\n"],"names":["mapData","storeData","id","set","element","key","data","get","keyProperties","Data","setData","instance","getData","removeData","delete","getUID","prefix","Math","floor","random","document","getElementById","getSelector","selector","getAttribute","hrefAttr","trim","getSelectorFromElement","querySelector","getElementFromSelector","isElement","obj","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","Error","toUpperCase","isVisible","style","parentNode","elementStyle","getComputedStyle","parentNodeStyle","display","visibility","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getjQuery","jQuery","window","body","onDOMContentLoaded","callback","readyState","addEventListener","isRTL","documentElement","dir","tag","createElement","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","indexOf","addHandler","oneOff","handlers","previousFn","bootstrapDelegationHandler","domElements","querySelectorAll","target","this","delegateTarget","EventHandler","off","type","apply","bootstrapHandler","removeHandler","removeEventListener","Boolean","on","one","extend","EventHandler$1","e","eventParameters","parametersToCopy","param","trigger","defaultPrevented","preventDefault","inNamespace","isNamespace","charAt","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","args","isNative","jQueryEvent","bubbles","nativeDispatch","evt","Event","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","dispatchEvent","EventHandlerMulti","eventsName","split","normalizeData","val","Number","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","startsWith","pureKey","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","assign","toggleClass","className","remove","add","addClass","addStyle","removeClass","hasClass","SelectorEngine","closest","matches","find","concat","Element","prototype","findOne","children","child","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","elementMap","Map","has","instanceMap","size","console","error","Array","from","TRANSITION_END","parseSelector","CSS","escape","triggerTransitionEnd","object","getClientRects","elementIsVisible","getPropertyValue","closedDetails","summary","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","execute","possibleCallback","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","max","min","Set","makeEventUid","getElementEvents","callable","values","normalizeParameters","delegationFunction","isDelegated","getTypeEvent","relatedTarget","wrapFunction","previousFunction","domElement","hydrateObj","entries","includes","meta","configurable","JSON","parse","decodeURIComponent","mdbKeys","Config$1","Default","DefaultType","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","TypeError","Config","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","Button","BaseComponent","toggle","each","mapComponentsData","componentsData","InitializedComponents","bindCallbackEventsIfNeeded","component","initComponent","manualInit","thisComponent","_defaultInitSelectors","isToggler","advanced","onInit","EVENT_CLICK","EVENT_TRANSITIONEND","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_ACTIVE","CLASS_NAME_FIXED_ACTION_BTN","BSButton","super","_fn","_init","Manipulator$1","options","_actionButton","_buttonListElements","_buttonList","_isTouchDevice","show","_bindListOpenTransitionEnd","height","_fullContainerHeight","_toggleVisibility","hide","_bindListHideTransitionEnd","_saveInitialHeights","_setInitialStyles","_bindInitialEvents","_bindMouseEnter","_bindMouseLeave","_bindClick","_initialContainerHeight","action","listTranslate","transform","el","_getHeight","computed","_initialListHeight","marginBottom","hrefAttribute","map","sel","join","focusableChildren","focusables","getMultipleElementsFromSelector","CLASS_NAME_SHOW","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","append","enableDismissTrigger","method","clickEvent","tagName","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","autofocus","trapElement","_isActive","_lastTabNavDirection","activate","focus","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","abs","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","EVENT_HIDE_PREVENTED","EVENT_KEYDOWN_DISMISS","keyboard","scroll","Offcanvas","_isShown","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_addEventListeners","blur","FocusTrap","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","direction","pointerType","navigator","maxTouchPoints","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_DRAG_START","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","EXTENDED_EVENTS","BSCarousel","_bindMdbEvents","bottom","right","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","styles","effect","_ref2","initialStyles","strategy","margin","arrow","hasOwnProperty","attribute","requires","getBasePlacement","round","getUAString","uaData","userAgentData","brands","isArray","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","visualViewport","addVisualOffsets","x","y","getLayoutRect","parent","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","centerToReference","center","axisProp","centerOffset","_options$element","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","eventListeners","_options$scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","sort","a","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","modifiers","visited","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","merged","orderModifiers","current","existing","m","_ref$options","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","cleanupModifierEffects","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","sanitizeHtml","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","popperConfig","title","Tooltip","Popper","_isEnabled","_timeout","_isHovered","_activeTrigger","_popper","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","showEvent","isInTheDom","_getTipElement","_createPopper","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","Popper.createPopper","_getPopperConfig","_getOffset","popperData","defaultBsPopperConfig","triggers","eventIn","eventOut","context","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","BSPopover","EVENT_ACTIVATE","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","EVENT_ACTIVATE_BS","CLASS_COLLAPSIBLE","SELECTOR_LIST","SELECTOR_COLLAPSIBLE_SCROLLSPY","BSScrollSpy","_collapsibles","_scrollElement","_bindActivateEvent","_getCollapsibles","_showSubsection","_hideSubsection","_hide","itemsToHide","_show","destinedHeight","collapsibleElements","collapsibleElement","listParent","listHeight","active","collapsible","unactive","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","SELECTOR_DROPDOWN_TOGGLE","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","Tab","_parent","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","stopPropagation","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","elem","EVENT_SHOW_BS","EVENT_SHOWN_BS","BSTab","hideEventMdb","showEventMdb","BSTooltip","t","n","d","Z","r","o","exports","c","initCustomEvent","detail","HTMLIFrameElement","contentDocument","head","identifier","base","l","f","media","sourceMap","references","updater","nonce","nc","insert","appendChild","styleSheet","cssText","createTextNode","childNodes","removeChild","insertBefore","btoa","unescape","encodeURIComponent","stringify","firstChild","singleton","bind","all","atob","splice","__esModule","default","enumerable","locals","animationName","inputType","CLASSNAME_ACTIVE","CLASSNAME_NOTCH","CLASSNAME_NOTCH_LEADING","CLASSNAME_NOTCH_MIDDLE","SELECTOR_NOTCH","SELECTOR_NOTCH_LEADING","SELECTOR_NOTCH_MIDDLE","Input","_label","_labelWidth","_labelMarginLeft","_notchLeading","_notchMiddle","_notchTrailing","_initiated","_helper","_counter","_counterElement","_maxLength","_leadingIcon","init","input","_getLabelData","_applyDivs","_applyNotch","_getHelper","_getCounter","_getNotchData","forceActive","forceInactive","_removeBorder","_showPlaceholder","_getLabelWidth","_getLabelPositionInInputGroup","_toggleDefaultDatePlaceholder","maxLength","_showCounter","actualLength","_bindCounter","opacity","allNotchWrappers","notchWrapper","marginLeft","border","_getElements","initialized","prevLabelWidth","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","selected","triggerArray","isOpen","BSCollapse","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","Dropdown","_menu","_inNavbar","_detectNavbar","_completeHide","referenceElement","_getPlacement","parentDropdown","isEnd","_selectMenuItem","clearMenus","button","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","dropdownAnimation","EVENT_HIDE_MDB","EVENT_HIDDEN_MDB","EVENT_SHOW_MDB","EVENT_SHOWN_MDB","ANIMATION_CLASS","ANIMATION_SHOW_CLASS","ANIMATION_HIDE_CLASS","BSDropdown","_menuStyle","_popperPlacement","_mdbPopperConfig","isPrefersReducedMotionSet","matchMedia","_bindShowEvent","_bindShownEvent","_bindHideEvent","_bindHiddenEvent","_dropdownAnimationStart","_bindAnimationEnd","CLASSNAME_RIPPLE","CLASSNAME_RIPPLE_WAVE","CLASSNAME_RIPPLE_WRAPPER","SELECTOR_COMPONENT","CLASSNAME_UNBOUND","DEFAULT_RIPPLE_COLOR","BOOTSTRAP_COLORS","rippleCentered","rippleColor","rippleDuration","rippleRadius","rippleUnbound","Ripple","_clickHandler","_createRipple","_rippleTimer","_isMinWidthSet","_rippleInSpan","_addClickEvent","_autoInit","rippleInit","shadow","boxShadow","btn","wrapper","replaceChild","minWidth","_getEventLayer","layerX","layerY","clientY","offsetX","offsetY","duration","_durationToMsNumber","diameterOptions","diameter","_getDiameter","radiusValue","rippleHTML","_createHTMLRipple","ripple","_removeHTMLRipple","_removeOldColorClasses","_addColor","_toggleUnbound","_appendRipple","SelectorEngine$1","rippleEl","_removeWrapperSpan","replaceWith","time","pythagorean","sideA","sideB","sqrt","positionCenter","quadrant","getCorner","topLeft","topRight","bottomLeft","bottomRight","color","rgbValue","_colorToRGB","gradientImage","backgroundImage","REGEXP_CLASS_COLOR","substr","tempElem","flag","namedColorsToRgba","rgbaToRgb","autoInitial","CLASSNAME_THUMB","SELECTOR_THUMB","Range","_thumb","rangeInput","_addThumb","_thumbUpdate","_handleEvents","_disposeEvents","RANGE_THUMB","_showThumb","_hideThumb","inputValue","minValue","maxValue","newValue","animationStart","animationShowOnLoad","onStart","onEnd","onHide","onShow","animationOnScroll","animationOffset","animationDelay","animationDuration","animationReverse","animationInterval","animationRepeat","animationReset","Animate","_animateElement","_getAnimateElement","_isFirstScroll","_repeatAnimateOnScroll","startAnimation","_startAnimation","stopAnimation","_clearAnimationClass","changeAnimationType","_bindHoverEvents","_bindScrollEvents","_bindClickEvents","_bindTriggerOnEndCallback","_bindResetAnimationAfterFinish","targetId","_animateOnScroll","elementOffsetTop","elementHeight","windowHeight","innerHeight","shouldBeVisible","isElementVisible","_hideAnimateElement","_callback","_showAnimateElement","_addAnimatedClass","_removeInvisibleClass","_setAnimationRepeat","_setAnimationReverse","_setAnimationDelay","_setAnimationDuration","_setAnimationInterval","animationIterationCount","animationDirection","Function","autoInit","isNullOrUndef","isObject","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","endsWith","thisArg","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","source","create","klen","k","isValidKey","_merger","tval","sval","merge$1","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","parts","tmp","part","_splitKey","_getKeyResolver","_capitalize","str","defined","isFunction","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","almostEquals","niceRange","pow","fraction","isNumber","isNaN","epsilon","_setMinAndMaxByKey","array","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","_arrayUnique","requestAnimFrame","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","lim","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","hex","eq","hexString","g","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","nameParse","unpacked","tkeys","j","ok","nk","unpack","transparent","RGB_RE","modHSL","ratio","clone","proto","fromObject","functionParse","rgbParse","Color","ret","_rgb","_valid","valid","rgbString","hslString","mix","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","scope","defaults","_descriptors","backgroundColor","borderColor","datasets","chart","platform","getDevicePixelRatio","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","_scriptable","_indexable","_fallback","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","fill","borderWidth","stroke","_isPointInArea","point","clipArea","clip","unclipArea","_steppedLineTo","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","props","objProps","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","warn","toFontString","inputs","info","cacheable","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","isScriptable","_resolveScriptable","isIndexable","arr","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","delta","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","suffix","pos","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","box","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","locale","cacheKey","formatter","Intl","NumberFormat","getNumberFormat","format","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","pop","_getAnims","charts","complete","progress","listen","cb","cur","_duration","stop","cancel","interpolators","boolean","factor","c0","number","Animation","cfg","currentValue","_easing","easing","_target","_prop","_from","_to","_promises","elapsed","remain","wait","promises","res","rej","resolved","animationOptions","colors","properties","numbers","animations","visible","Animations","_properties","configure","animatedProps","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_index_","grid","_value_","beginAtZero","BubbleController","tooltip","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","Element$1","tooltipPosition","useFinalPosition","getProps","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","fullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","_layers","tz","z","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","ScatterController","abstract","DateAdapter","chartOptions","formats","timestamp","amount","unit","startOf","weekday","endOf","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","addedNodes","removedNodes","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","PluginService","notify","hook","_createDescriptors","descriptor","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","Chart$1","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","Chart","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","inner","lineJoin","fullCircles","drawFullCircleBorders","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","decimated","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","unshift","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","createTitle","titleBlock","WeakMap","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","findOrAddLabel","addedLabels","addIfString","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","DEFAULT_LEGEND_COLOR","tooltips","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","pie","doughnut","polarArea","radar","scatter","bubble","Decimation","Filler","SubTitle","GENERATE_DATA","defaultType","DEFAULT_DARK_OPTIONS","darkTicksColor","darkLabelColor","darkGridLinesColor","darkmodeOff","darkMode","darkBgColor","darkBgColorLight","DARK_OPTIONS_TYPE","darkOptions","_canvas","_darkOptions","_getDarkConfig","_darkModeClassContainer","_prevConfig","_chartConstructor","systemColorMode","_handleMode","localStorage","theme","Data$1","configOptions","MyType","Chartjs","setTheme","dataAttr","xyScale","opt","_getLightTheme","prevConfig","_createCanvas","systemColor","_changeDatasetBorderColor","mutationList","mutation","dark","chartData","EVENT_CLICK_DATA_API","CLASSNAME_CAPTION","SELECTOR_TOGGLE","OPTIONS_TYPE","zoomLevel","Lightbox","_getContainer","_id","_activeImg","_images","_preloadedImages","_zoom","_gallery","_galleryToolbar","_galleryContent","_loader","_imgCounter","_animating","_fullscreen","_zoomBtn","_fullscreenBtn","_toolsToggleTimer","_mousedown","_mousedownPositionX","_mousedownPositionY","_originalPositionX","_originalPositionY","_positionX","_positionY","_zoomTimer","_tapCounter","_tapTime","_rightArrow","_leftArrowWrapper","_rightArrowWrapper","_multitouch","_touchZoomPosition","activeImg","currentImg","nextImage","previousImage","_appendTemplate","_getImages","_setActiveImg","_triggerEvents","_loadImages","images","_resizeImages","_toggleTemplate","_addEvents","_focusFullscreenBtn","close","_removeEvents","slide","_beforeSlideEvents","_slideHorizontally","_slideToTarget","_afterSlideEvents","zoomIn","_updateZoomBtn","zoomOut","_updateImgPosition","toggleFullscreen","requestFullscreen","exitFullscreen","_restoreDefaultFullscreen","_restoreDefaultPosition","_restoreDefaultZoom","_doubleTapTimer","lightboxImages","image","_container","_appendLoader","_appendToolbar","_appendContent","_appendArrows","_appendCaption","leftTools","rightTools","closeBtn","_toggleZoom","spinner","spinnerContent","leftArrow","captionWrapper","caption","promiseArray","imageArray","positionLeft","_createImage","onload","newImg","Image","newImgWrapper","_addImgStyles","prepend","mdbImg","_updatePreloadedImages","isDirectionRight","targetChild","lastChild","targetImage","_removeImageEvents","newIndex","addedImage","_addImageEvents","alt","draggable","mdbCaption","_calculateImgSize","_onResize","_onFullscreenChange","webkitIsFullScreen","mozFullScreen","msFullscreenElement","_animationStart","_resetDoubleTap","_updateActiveImg","_slidePreloadedImages","_slideImg","_showLoader","_updateCaption","_hideLoader","_updateCounter","_hideGallery","_enableScroll","_showGallery","_disableScroll","_setToolsToggleTimout","pointerEvents","_onWindowTouchmove","_onWindowTouchstart","_onImgMousedown","_onMousedown","_onImgMousemove","_onMousemove","_onImgWheel","_onWheel","_onImgMouseup","_onMouseup","_onImgTouchend","_onTouchend","_onImgDoubleClick","_onDoubleClick","_onWindowResize","_onWindowFullscreenChange","_onAnyImgAction","_resetToolsToggler","_onGalleryClick","_onBackdropClick","_onKeyupEvent","_onKeyup","_onRightArrowKeydownEvent","_onRightArrowKeydown","_onFullscreenBtnKeydownEvent","_onFullscreenBtnKeydown","_moveImg","targetTouches","_checkDoubleTap","_calculateTouchZoom","initialDistance","hypot","pageX","pageY","finalDistance","view","screen","keyCode","_focusRightArrow","movement","tapLength","getTime","_setNewPositionOnZoomIn","_zoomOnWheel","activeImageClientRect","pointerX","pointerY","targetX","targetY","_showTools","_hideTools","startEvent","completeEvent","lightbox","readonly","dynamic","decimalPrecision","EVENT_SELECT","EVENT_HOVER","EVENT_SCORE_MOVE","EVENT_KEYUP","EVENT_FOCUSOUT","Rating","_icons","_index","_savedIndex","_originalClassList","_tooltips","_bindMouseMove","_bindMouseDown","_bindKeyDown","_bindKeyUp","_bindFocusLost","_saveOriginalClassList","_setContentVariable","_setCustomText","_setCustomColor","_setToolTips","_updateRating","_calculateIndex","mousemove","scrollX","elementWidth","toFixed","_clearRating","_setElementOutline","tabIndex","_updateAfterKeyDown","outline","beforeContent","indexBeforeChange","_restoreOriginalIcon","isInteger","partial","fillPercentage","_roundToPrecision","_a","_b","_c","decimalDigits","_countDecimals","hasOwnTooltips","insertAdjacentHTML","elMatches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","cls","thumb","rail","consuming","clicking","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","settings","scrollingThreshold","EventElement","unbind","unbindAll","isEmpty","EventManager","eventElements","eventElement","ee","once","onceHandler","processScrollDiff","useScrollingClass","forceFireReachEvent","fields","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","toInt","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","updateGeometry","roundedScrollTop","containerWidth","contentWidth","scrollbarXRail","DOM.queryChildren","DOM.remove","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","CSS.set","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","activeSlider","bindMouseScrollHandler","containerDimension","contentDimension","pageAxis","railDimension","scrollbarAxis","scrollbarDimension","scrollAxis","scrollbarRail","startingScrollPosition","startingMousePagePosition","scrollBy","moveHandler","endHandler","bindMoves","DOM.matches","which","metaKey","altKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","CSS.get","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","hitsBound","ctrlKey","onwheel","onmousewheel","startOffset","startTime","speed","easingLoop","applyTouchMove","differenceX","differenceY","getTouch","shouldHandle","buttons","MSPOINTER_TYPE_MOUSE","touchStart","touchMove","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","touchEnd","swipeEasing","isInitialized","MSPointerEvent","PerfectScrollbar","userSettings","isNegativeScroll","originalScrollLeft","DOM.div","railXStyle","borderLeftWidth","borderRightWidth","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","handlerName","lastScrollTop","lastScrollLeft","onScroll","removePsClasses","toggler","_toggler","_event","_condition","condition","_selector","_onlyVisible","onlyVisible","_focusableElements","_firstElement","_lastElement","trap","_setElements","_setFocusTrap","_filterVisible","ancestors","allElements","hasDisabledAttribute","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","HOME","END","ENTER","SPACE","ESCAPE","Swipe$1","_startPosition","handleTouchStart","_getCoordinates","handleTouchMove","displacement","swipe","_getDirection","handleTouchEnd","Touch$1","_touchStartHandler","_handleTouchStart","_touchMoveHandler","_handleTouchMove","_touchEndHandler","_handleTouchEnd","ARROW_CLASS","SELECTOR_COLLAPSE","SELECTOR_LINK","TRANSLATION_LEFT","TRANSLATION_RIGHT","instanceCount","accordion","backdropClass","closeOnEsc","expandable","expandOnHover","focusTrap","scrollContainer","slim","slimCollapsed","slimWidth","Sidenav","_ID","_content","_initialContentStyle","_slimCollapsed","_activeNode","_tempSlim","_focusTrap","_perfectScrollbar","_touch","escHandler","hashHandler","_setActiveElements","_setup","findContainer","containerStart","containerEnd","boundry","scrollBarWidth","links","navigation","sidenavStyle","transitionProperty","transitionTimingFunction","changeMode","_setMode","_removeBackdrop","_setVisibility","toggleSlim","_setSlim","_appendArrow","_collapseItems","menu","Collapse$1","_setupBackdrop","classes","_getOffsetValue","_getPxValue","_getProperty","inverseDirecion","link","href","trimmedLink","location","strippedRequests","URL","_isAllToBeCollapsed","_isAllCollapsed","_setupTouch","_setupFocusTrap","_appendBackdrop","_setupCollapse","_setupSlim","_setupInitialStyling","_setupScrolling","_setupContent","_setupActiveState","_setupRippleEffect","_updateOffsets","menuIndex","_setupCollapseList","_generateCollpaseID","ID","_rotateArrow","_toggleCategory","_setColor","siblingsHeight","collection","_toggleSlimDisplay","wave","Touch","_setActive","collapse","_setActiveCategory","category","collapseToggler","optionColor","_setContentOffsets","_setTabindex","_toggleBackdrop","slimCollapsedElements","fullWidthElements","toggleElements","_updateTogglerAria","_updateDisplay","_updateFocus","paddingPosition","marginPosition","toggleSidenav","elementSelector","EVENT_CLOSE","EVENT_CLOSED","Alert","_destroyElement","TYPE_OPTIONS","Stack","stackableElements","basicCondition","_getBoundryOffset","nextElements","parentTopOffset","parentBottomBoundry","parentRect","calculateOffset","previousElement","EVENT_CLOSED_BS","autohide","stacking","appendToBody","BSAlert","_isOpen","verticalOffset","stackUtil","updatedData","_updateAlertStack","_setupAutohide","_setupAlignment","_setupStacking","_setupWidth","_appendToBody","_setupPosition","oppositeY","oppositeX","_updatePosition","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_HIDDEN_BS","BSToast","_setupColor","_updateToastStack","_setupDisplay","header","toasts","_d","_e","_f","_g","createHead","headId","format24","amLabel","pmLabel","okLabel","inline","submitBtn","createModeWrapper","getToggleButtonTemplate","formatToAmPm","hours","minutes","amOrPm","originalHours","isValidDate","getHours","getMinutes","takeValue","formatNormalHours","findMousePosition","isMobile","checkBrowser","valueInput","compareTimes","time1","time2","time1Hour","time1Minutes","time1maxTimeFormat","time2Hour","time2Minutes","time2maxTimeFormat","getCurrentTime","currentHours","currentMinutes","setMinTime","minTime","disabledPast","format12","setMaxTime","maxTime","disabledFuture","_verifyMaxTimeHourAndAddDisabledClass","tips","maxTimeHour","_verifyMinTimeHourAndAddDisabledClass","minTimeHour","DATA_API_KEY","EVENT_OPEN","EVENT_KEYDOWN_DATA_API","EVENT_MOUSEDOWN_DATA_API","EVENT_MOUSEUP_DATA_API","EVENT_MOUSEMOVE_DATA_API","EVENT_MOUSELEAVE_DATA_API","EVENT_MOUSEOVER_DATA_API","EVENT_TOUCHMOVE_DATA_API","EVENT_TOUCHEND_DATA_API","EVENT_TOUCHSTART_DATA_API","EVENT_VALUE_CHANGED","EVENT_CLEAR","ACTIVE_CLASS","AM_CLASS","BUTTON_CANCEL_CLASS","BUTTON_CLEAR_CLASS","BUTTON_SUBMIT_CLASS","CIRCLE_CLASS","CLOCK_ANIMATION_CLASS","CLOCK_CLASS","CLOCK_INNER_CLASS","CLOCK_WRAPPER_CLASS","CURRENT_CLASS","CURRENT_INLINE_CLASS","HAND_CLASS","HOUR_CLASS","HOUR_MODE_CLASS","ICON_DOWN_CLASS","ICON_INLINE_HOUR_CLASS","ICON_INLINE_MINUTE_CLASS","ICON_UP_CLASS","ICONS_HOUR_INLINE","MIDDLE_DOT_CLASS","MINUTE_CLASS","MODAL_CLASS","PM_CLASS","TIPS_ELEMENT_CLASS","TIPS_HOURS_CLASS","TIPS_INNER_ELEMENT_CLASS","TIPS_INNER_HOURS_CLASS","TIPS_MINUTES_CLASS","TRANSFORM_CLASS","WRAPPER_CLASS","INPUT_CLASS","bodyId","cancelLabel","clearLabel","closeModalOnBackdropClick","closeModalOnMinutesClick","defaultTime","disablePast","disableFuture","focusInputAfterApprove","footerId","modalId","overflowHidden","pickerId","readOnly","showClearBtn","switchHoursToMinutesOnClick","iconClass","withIcon","Timepicker","__publicField","_isPmEnabled","_isAmEnabled","_modal","_circle","findInArray","addDegrees","_hasTargetInnerClass","clockClass","tipsClass","maxTimeMinutes","maxTimeFormat","minTimeMinutes","minTimeFormat","_isInvalidTimeFormat","_AM","_PM","clock","clockWidth","clockHeight","currentFormat","_handleDisablingTipsMinTime","_handleDisablingTipsMaxTime","spanToTips","_document","_currentTime","_toggleButtonId","hoursArray","innerHours","minutesArray","_input","_hour","_minutes","_wrapper","_hand","_timeoutInterval","_inputValue","_scrollBar","_animations","_isHours","_isMinutes","_isMouseMove","_isInner","_objWithDataOnChange","toggleButton","customIcon","_appendToggleButton","zero","hoursFormat","_amOrPm","_listenToUserInput","_handleOpen","_listenToToggleKeydown","_removeInputAndToggleListeners","closeEvent","_removePicker","openEvent","checkInputValue","normalTemplate","createTimepickerClockWrapper","createFooter","inlineTemplate","getTimepickerTemplate","_getDomElements","_toggleBackdropAnimation","_appendTimes","_setActiveClassToTipsOnOpen","_setTipsAndTimesDependOnInputValue","allTipsHours","_addActiveClassToTip","_handleSwitchTimeMode","_handleOkButton","_handleClose","_handleHoverInlineBtn","_handleDocumentClickInline","_handleInlineClicks","_handleSwitchHourMinute","_handleClockClick","_handleKeyboard","_clock","_clockInner","_handlerMaxMinHoursOptions","maxHour","minHour","maxFormat","minFormat","_isMouseOnInnerClock","maxHourDegrees","minHourDegrees","_handleKeyboardEvents","innerTips","nextHourTip","numberToAdd","nextHour","currentHour","_convertHourToNumber","innerText","innerTip","parentElement","minInnerHourDegrees","maxInnerHourDegrees","_handle24FormatMouseEvents","hoursView","innerHoursExist","allTipsMinutes","allInnerTips","hourTime","_makeHourDegrees","hourObjDegrees","minHourMinutes","minObjDegrees","_makeMinutesDegrees","addMinDegrees","innerHourDegrees","_makeInnerHoursDegrees","innerHour","cancelBtn","_setHourOrMinute","_toggleClassActive","_toggleBackgroundColorCircle","rotateDegrees","fixForInput","selectedHour","minuteNumber","countMinutes","countHours","incrementHours","counteredNumber","incrementMinutes","addHours","addMinutes","subHours","subMinutes","_clearAsyncs","_clearAndSetThisInterval","addHoursOrAddMinutes","isEventTypeMousedownOrTouchstart","isHourBtnFocused","isMinuteBtnFocused","isBodyFocused","_toggleAmPm","_removeModal","_removeFocusTrap","showValueInput","hourModeActive","selectedMinutes","isHourLessThanMinHour","isHourGreaterThanMaxHour","maxFormatAndCurrentFormatEqual","minFormatAndCurrentFormatEqual","hourEqualToMaxAndMinutesGreaterThanMax","hourEqualToMinAndMinutesLessThanMin","hourHeader","minutesHeader","maxTimeMin","minTimeMin","checkValueBeforeAccept","allIconsInlineHour","allIconsInlineMinute","icon","hourValue","minuteValue","switchTips","_getAppendClock","toggleActiveClass","allTipsInnerHours","selectedFormat","outerHoursTips","innerHoursTips","maxMinutes","currHour","minMinutes","allTipsHour","clockWrapper","mouseClick","rds","touchClick","xPos","yPos","elFromPoint","elementFromPoint","isHourLessThanMinOrGreaterThanMax","trunc","minDegrees","minTimeObj","_handlerMaxMinMinutesOptions","_degrees","minuteTimes","changeMinutes","degreesMinutes","makeDegrees","touchDegrees","touchHours","_handleMoveHand","movedDegrees","movedHours","degreesHours","allTipsInner","maxMin","minMin","maxHourTime","minHourTime","maxMinDegrees","minMinDegrees","_removeModalElements","isToRemove","_handleUserInput","testedAMRegex","Navbar","_onScroll","_addEvent","_removeEvent","EVENT_COMPLETED","infiniteDirection","InfiniteScroll","_elementScrollHandler","_scrollHandler","CLASSNAME_LAZYLOAD","SELECTOR_ELEMENTS","EVENT_LOADED","EVENT_ERROR","lazySrc","lazyDelay","lazyAnimation","lazyOffset","lazyPlaceholder","lazyError","LazyLoad","_handleScroll","_errorHandler","_setElementError","_childrenInstances","offsetValues","inViewport","isContainer","_animation","_setupContainer","_setupElement","_setPlaceholder","_setSrc","_removeAttrs","attr","getDate","getDayNumber","getDay","getMonth","getYear","getFullYear","getDaysInMonth","createDate","getMonthEnd","getToday","addYears","years","addMonths","months","setDate","addDays","days","setFullYear","convertStringToDate","dateString","dateArr","isInRange","compareDates","isEdgeOfRange","isSameDate","date1","date2","setHours","getYearsOffset","activeDate","yearsInView","yearsDifference","minDate","maxDate","startYear","getStartYear","isDateDisabled","currentDate","isBeforeMin","isAfterMax","isDisabledPast","isDisabledFuture","isMonthDisabled","maxYear","maxMonth","minYear","minMonth","currentYear","currentMonth","isYearDisabled","areDatesInSameView","lastYearInView","firstYearInView","getDatepickerTemplate","selectedDate","selectedYear","selectedMonth","monthsInRow","yearsInRow","selectedRange","dayNumber","inlineContent","createMainContent","modalContent","headerTemplate","createCustomHeader","createHeader","dateRange","weekdaysShort","weekdaysFull","monthsShort","headerTemplateModifier","replaceAll","formatDate","endDate","startDate","mainContentTemplate","createControls","createViewTemplate","okBtn","okBtnLabel","okBtnText","cancelButton","cancelBtnLabel","cancelBtnText","clearButton","clearBtnLabel","clearBtnText","removeClearBtn","removeCancelBtn","removeOkBtn","viewTemplate","createDayViewTemplate","createMonthViewTemplate","createYearViewTemplate","switchToMultiYearViewLabel","monthsFull","prevMonthLabel","nextMonthLabel","headerDate","dates","getDatesArray","nextMonthDates","tableHeadContent","weekdaysNarrow","dayViewTemplate","dayLabel","isFirst","isLast","isToday","isSelected","tableBodyContent","visibleMonth","previousMonth","nextMonth","firstDay","firstDayIndex","startDay","sundayIndex","getFirstDayOfWeek","daysInMonth","daysInPreviousMonth","isCurrentMonth","firstVisibleMonth","secondVisibleMonth","daysLeft","rowIndex","getMonthsArray","monthIndex","activeYear","yearsOffset","yearsRow","getYearsArray","YEARS_IN_VIEW","EVENT_VIEW_CHANGED","nextYearLabel","prevYearLabel","nextMultiYearLabel","prevMultiYearLabel","switchToDayViewLabel","confirmDateOnSelect","Datepicker","_activeDate","_selectedDate","_selectedRange","_selectedYear","_selectedMonth","_firstVisibleMonth","_headerDate","_headerYear","_headerMonth","_view","activeCell","_getActiveDayCell","_getActiveMonthCell","_getActiveYearCell","activeDay","activeMonth","viewChangeButton","previousButton","nextButton","okButton","datesContainer","isSelectionCompleted","isRangeComplete","hasPartialRange","visibleDates","sortedWeekdaysNarrow","_getNewDaysOrderArray","_listenToToggleClick","_setInitialDate","getBackdropTemplate","_openDropdown","_openModal","_listenToDateSelection","_addControlsListeners","_updateControlsDisabledState","_listenToEscapeClick","_listenToKeyboardNavigation","_listenToDatesContainerFocus","_listenToDatesContainerBlur","_asyncFocusDatesContainer","_updateViewControlsAndAttributes","_listenToOutsideClick","_handleDateSelection","cell","mdbDate","_pickDay","mdbMonth","mdbYear","_pickMonth","_pickYear","_updateHeaderDate","headerDateEl","datepickerHeaderContainer","nextYears","nextYear","previousYears","previousYear","_changeView","_listenToFooterButtonsClick","handleOk","handleCancel","handleClear","isContainerContent","_interruptDateRangeSelection","_handleSingleDayRange","_confirmSelection","_focusActiveCell","_removeCurrentFocusStyles","_handleDaysViewKeydown","_handleMonthsViewKeydown","_handleYearsViewKeydown","oldActiveDate","previousActiveCell","_selectDate","_removeHighlightFromCell","cells","_selectMonth","cellYear","cellMonth","_selectYear","_removeDatepickerListeners","_closeDropdown","_closeModal","datepicker","generatedToggleButton","_handleDateRangeSelection","_handleSingleDateSelection","_removeCurrentStyle","_addSelectedStyles","_resetDateRangeStyles","_addDateRangeStyles","_asyncChangeView","_removeSelectedStyles","firstDate","lastDate","cellDate","currentSelected","currentFocused","_addLeadingZero","ddd","dddd","mm","mmm","mmmm","yy","yyyy","preformatted","formatted","datePart","newDate","isNextDateDisabled","isPreviousDateDisabled","delimeters","_getDelimeters","areDatesChronological","firstDateValid","secondDateValid","_parseDate","_setDate","dateOrDates","delimeterPattern","regExp","dateParts","formatParts","isMonthString","datesArray","monthsNames","isFullYearFormat","getMonthNumberByMonthName","monthValue","monthLabels","monthLabel","EVENT_CANCEL","EVENT_CONFIRM","popconfirmMode","message","cancelText","okText","okClass","cancelClass","popconfirmIcon","confirmLabel","Popconfirm","_cancelButtonTemplate","_getCancelButtonTemplate","_cancelButton","_confirmButton","_uid","_escapeKeydownHandler","_handleEscapeKey","_outsideClickHandler","_handleOutsideClick","popconfirmBody","_openPopover","_getPopoverTemplate","_getModalTemplate","_handleCancelButtonClick","_handleConfirmButtonClick","_listenToEscapeKey","_handlePopconfirmTransitionEnd","tempElement","confirmButton","popoverTemplate","popover","popconfirmTemplate","_getPopconfirmTemplate","modal","_getMessageIcon","_translatePositionValue","isElementContent","tableTemplate","columns","rows","noFoundMessage","edit","multi","selectable","loading","loadingMessage","loaderClass","columnSearch","rowsTemplate","checkbox","innerRow","column","fixed","fixedOffset","field","generateRows","columnsTemplate","generateColumns","createPaginationButtons","fullPagination","createEntriesSelect","entriesOptions","rowsText","allText","SELECTOR_FORM_CHECK_INPUT","CLASS_NAME_SELECTED","CLASS_NAME_ACITVE","SelectOption","nativeOption","multiple","secondaryText","groupId","select","_selectMultiple","_selectSingle","checked","deselect","_deselectMultiple","_deselectSingle","setNode","setActiveStyles","removeActiveStyles","SelectionModel","_multiple","_selections","optionIndex","selection","selections","allOptionsSelected","preventKeydown","getDropdownTemplate","selectAllOption","customContent","dropdownContainer","dropdown","optionsWrapper","optionsList","getOptionsListTemplate","placeholder","inputGroup","getFilterTemplate","searchPlaceholder","multiselectable","role","optionsNodes","selectAllNode","selectAll","optionNode","optionHeight","getOptionContentTemplate","createSelectAllNode","getOptionsNodes","nodes","getMultipleOptionsNodes","getSingleOptionsNodes","group","optionGroup","createOptionTemplate","createOptionGroupTemplate","getOptionIconTemplate","getCheckboxTemplate","getSecondaryTextTemplate","autoSelect","displayedLabels","formWhite","optionsSelectedLabel","selectAllLabel","visibleOptions","filterDebounce","noResultText","validation","validFeedback","invalidFeedback","filterFn","clearButtonLabel","EVENT_SELECTED","EVENT_DESELECTED","EVENT_OPENED","EVENT_SEARCH","SELECTOR_INPUT","SELECTOR_OPTIONS_LIST","SELECTOR_FORM_OUTLINE","CLASS_NAME_INITIALIZED","CLASS_NAME_OPEN","CLASS_NAME_FOCUSED","Select","_optionsToRender","_getOptionsToRender","_plainOptions","_getPlainOptions","_filteredOptionsList","_selectionModel","_activeOptionIndex","_activeOption","_wrapperId","_dropdownContainerId","_inputId","_selectAllId","_debounceTimeoutId","_dropdownHeight","_fakeValue","_isFakeValueActive","_customContent","_toggleButton","_elementToggle","_inputEl","_dropdownContainer","_selectAllOption","_mutationObserver","_animationTransitionTime","_addMutationObserver","_inputHandler","_handleInput","filterInput","hasSelectAll","hasSelection","_createOptionObject","optionsToRender","nestedOption","groupDisabled","_getNavigationOptions","availableOptions","_renderMaterialWrapper","containerSelector","_initOutlineInput","_setDefaultSelections","_updateInputValue","_appendFakeValue","_updateFakeLabelPosition","_updateLabelPosition","_updateClearButtonVisibility","_bindComponentEvents","_createSelectAllOption","_setFirstActiveOption","dropdownContainerId","inputId","formOutline","validFeedBackText","invalidFeedBackText","clearBtn","labelId","getWrapperTemplate","inputWrapper","_updateOutlineInput","_listenToComponentKeydown","_listenToWrapperClick","_listenToClearBtnClick","_listenToClearBtnKeydown","_wrapperKeydownHandler","_handleOpenKeydown","_handleClosedKeydown","isCloseKey","_handleAutoSelection","_setNextOptionActive","_scrollToOption","_setPreviousOptionActive","_setFirstOptionActive","_setLastOptionActive","_handleSelectAll","_handleSelection","scrollToIndex","_getNumberOfGroupsBeforeOption","optionOffset","isBelow","isAbove","groupsList","groupsNumber","_updateActiveOption","newActiveOption","currentActiveOption","_handleClear","_deselectAllOptions","_updateSelectAllState","_singleOptionSelect","_emitValueChangeEvent","_emitNativeChangeEvent","_listenToOptionsClick","mdbId","_selectAllOptions","_handleMultiSelection","_handleSingleSelection","_singleOptionClear","_isSelectionValid","_isLabelEmpty","fakeValue","getFakeValueTemplate","isValueEmpty","_updateLabelPositionWhileClosing","selectAllSelected","allSelected","_updateDropdownWidth","_filterOptions","_listenToSelectSearch","_listenToDropdownKeydown","_listenToWindowResize","_setInputActiveStyles","inputWidth","currentActive","firstSelected","_windowResizeHandler","_handleWindowResize","searchTerm","debounceTime","_debounceFilter","filtered","isOptionGroup","isValidOption","_filter","hasNoResultsText","hasFilteredOptions","_updateOptionsListTemplate","noResultsTemplate","_getNoResultTemplate","optionsWrapperContent","optionsListTemplate","filterValue","_dropdownKeydownHandler","_handleOutSideClick","isSelectContent","isDropdown","isDropdownContent","isButton","_resetFilterState","_removeDropdownEvents","_updateSelections","_updateDisabledState","_observeMutationObserver","hasFilterValue","characterData","_disconnectMutationObserver","_removeComponentEvents","_destroyMaterialSelect","_destroyMaterialTemplate","wrapperParent","setValue","isMultipleValue","selectionValue","_selectByValue","correspondingOption","SELECTOR_PAGINATION","EVENT_PAGINATION_CHANGE","EVENT_VALUE_CHANGED_SELECT","DatatablePagination","_left","_right","_select","_selectInstance","_pagination","_activePage","_entries","_setPaginationValues","ofText","activePage","pages","_optionToLowerCase","pagination","page","navigationText","firstVisibleEntry","lastVisibleEntry","appendPagination","_appendPagination","_setupPagination","_setupPaginationSelect","_toggleDisableState","updatePagination","_removeEventListeners","_updatePaginationButtonsTemplate","_setNavigationText","_setSelectLabel","removePagination","_disposePaginationSelect","paginationEl","buttonsHTML","outerHTML","paginationTemplate","paginationButtons","CLASS_DATATABLE","CLASS_FIXED_CELL","SELECTOR_CELL","SELECTOR_SORT_ICON","SELECTOR_ROW","SELECTOR_ROW_CHECKBOX","EVENT_RENDER","EVENT_ROW_CLICKED","EVENT_UPDATE","bordered","borderless","clickableRows","serverSide","sm","sortField","sortOrder","fixedHeader","striped","forceSort","TYPE_COLUMN_FIELDS","DEFAULT_COLUMN","Datatable","_getOptions","_sortReverse","_search","_searchColumn","_selected","_checkboxes","_headerCheckbox","_columnSearchInputs","_rows","_getRows","_columns","_getColumns","_tableId","_hasFixedColumns","_enforceOptionDependency","columnIndex","output","searchResult","search","computedRows","fieldA","fieldB","paginate","classNames","tableOptions","_clearClassList","_renderRows","_setActiveSortIcon","setActivePage","_changeActivePage","_emitSelectEvent","selectedRows","selectedIndexes","headerRow","_getCSSValue","entriesOptionsAsArray","_setActiveRows","_setEntries","_setSelected","_setClassNames","_renderTable","_setupEditable","_setupClickableRows","_setupSelectable","_setupColumnSearch","_setupScroll","_setupSort","_setupPaginationListeners","_updateRow","datatableBody","headers","zIndex","sorting","_getColumnIndex","_toggleSelectAll","_toggleSelectRow","editable","userTable","_formatCells","rowsData","columnsMap","cellsToFormat","cellData","param1","param2","STEPPER_HORIZONTAL","STEPPER_VERTICAL","STEPPER_MOBILE","stepperType","stepperLinear","stepperNoEditable","stepperActive","stepperCompleted","stepperInvalid","stepperDisabled","stepperVerticalBreakpoint","stepperMobileBreakpoint","stepperMobileBarBreakpoint","stepperHeadClick","stepperMobileNextBtn","stepperMobileBackBtn","stepperMobileStepTxt","stepperMobileOfTxt","EVENT_SUBMIT","EVENT_RESIZE","EVENT_ANIMATIONEND","EVENT_CHANGE_STEP","EVENT_CHANGED_STEP","EVENT_INVALID","EVENT_VALID","STEP_CLASS","HEAD_CLASS","HEAD_TEXT_CLASS","CONTENT_CLASS","COMPLETED_CLASS","INVALID_CLASS","DISABLED_CLASS","VERTICAL_CLASS","CONTENT_HIDE_CLASS","HORIZONTAL_CLASS","MOBILE_CLASS","MOBILE_HEAD_CLASS","MOBILE_FOOTER_CLASS","MOBILE_PROGRESS_BAR_CLASS","NEXT_BTN_CLASS","BACK_BTN_CLASS","MOBILE_ACTIVE_STEP_ID","MOBILE_NUMBER_OF_STEPS_ID","MOBILE_PROGRESS_BAR","MOBILE_FOOTER","Stepper","_elementHeight","_steps","_currentView","_activeStepIndex","_verticalStepperStyles","activeStep","activeStepIndex","_unbindMouseDown","changeStep","_toggleStep","nextStep","prevStep","resizeStepper","_setSingleStepHeight","_setHeight","_toggleStepperView","_toggleStepClass","_setOptional","_bindKeysNavigation","_toggleVertical","_toggleMobile","_toggleHorizontal","_setValidation","_bindResize","stepHead","stepIndex","shouldBeHorizontal","shouldBeVertical","shouldBeMobile","stepContent","_resetStepperHeight","_showElement","numberOfSteps","isValid","_validateStep","_toggleDisabled","_toggleActive","_toggleCompleted","_animateHorizontalStep","_animateVerticalStep","_toggleStepTabIndex","_updateProgressBar","inputNotches","mdb","_setStepsHeight","stepComputed","stepHeight","isActiveStep","stepContentHeight","_createMobileElements","MOBILE_BUTTON_NEXT","MOBILE_STEPPER_HEAD","_toggleStepperClass","_bindMobileButtons","_hideInactiveSteps","_deleteMobileElements","_unbindMobileButtons","focusedStep","currentTarget","focusedStepHead","activeStepHead","nextStepHead","prevStepHead","_toggleOutlineStyles","firstStepHead","lastStep","lastStepHead","btnBack","btnNext","focusedElement","newTarget","_validateActiveStepRequiredElements","checkValidity","changeStepEvent","stepsToCheck","nextStepToValidate","_toggleInvalid","_hideElement","form","stepElement","stepFooter","contentStyle","footerStyle","headStyle","stepHeadHeight","stepFooterHeight","isForward","nextStepContent","activeStepContent","nextStepAnimation","activeStepAnimation","_clearStepAnimation","ANIMATED_CLASS","EVENT_ACTIVATED","EVENT_DEACTIVATED","stickyActiveClass","stickyAnimationSticky","stickyAnimationUnsticky","stickyBoundary","stickyDelay","stickyDirection","stickyMedia","stickyOffset","stickyPosition","Sticky","_hiddenElement","_elementPositionStyles","_scrollDirection","_isSticked","_elementOffsetTop","_scrollTop","_pushPoint","_manuallyDeactivated","_disableSticky","_createHiddenElement","_enableSticky","_changeBoundaryPosition","_userActivityListener","_updateElementPosition","_updateElementOffset","doc","_updatePushPoint","_updateScrollDirection","_clearInProgressAnimations","isCorrectScrollDirection","isPushPointReached","shouldBeSticky","shouldNotBeSticky","isScrollUp","isUnstickyAnimationInProgress","isScrolledAboveElement","_removeUnstickyAnimation","_resetStyles","_removeHiddenElement","_toggleClass","parentOffset","stopPoint","stopper","isStickyTop","isStickyBottom","isStickyBoundary","isBelowStopPoint","isBelowParentElementEnd","_copyElement","offsetElement","rectElement","itemToCopy","COPIED_ITEM","cloneNode","TouchUtil","_getOrigin","_getDistanceBetweenTwoPoints","_getMidPoint","_getVectorLength","_getRightMostTouch","rightMost","MIN_VALUE","_getAngle","_getAngularDistance","_getCenterXY","_getPinchTouchOrigin","t1","t2","_position","_getPosition","pointers","Press","_timer","EVENT_START","EVENT_END","EVENT_MOVE","Pan","_startTouch","_movedTouch","postion","movedPosition","displacementMoved","pan","movedDirection","Pinch","_origin","_math","_ratio","origin","taps","Tap","_tapCount","Rotate","currentAngle","initialAngle","previousAngle","press","pinch","tap","EVENT_SCROLL_START","EVENT_SCROLL_END","EVENT_SCROLL_CANCEL","SmoothScroll","_href","isCancel","isWindow","containerToScroll","elFromHrefExist","offsetFromEl","heightFromTop","easingFunction","motionName","_motionLinear","cancelScroll","_inViewport","linkExist","isHashInLink","_scrollOnClickEvent","_preventNativeScroll","_handleClick","scrollingContainer","positionFrom","positionTo","_scrollOnNextTick","scrollProgress","isInViewport","_preventDefault","supportsPassive","_scrollError","wheelOpt","wheelEvent","_deleteScrollOnStart","_addScrollOnEnd","_addScrollOnCancel","_motionEaseInQuad","_motionEaseInCubic","_motionEaseInQuart","_motionEaseInQuint","_motionEaseInOutQuad","_motionEaseInOutCubic","_motionEaseInOutQuart","_motionEaseInOutQuint","_motionEaseOutQuad","_motionEaseOutCubic","_motionEaseOutQuart","_motionEaseOutQuint","MDB_NAME","PS_NAME","EVENTS","ps","PerfectScrollbars","perfectScrollbar","removeEvent","CLASS_SPINNER","backdropOpacity","backdropID","loader","parentSelector","loadingIcon","loadingText","Loading","_backdropElement","_parentElement","_loadingIcon","_loadingText","spinnerCloned","loadingCloned","_removeElementsOnStart","_setBackdrop","_setLoadingIcon","_setLoadingText","_setScrollOption","uriAttrs","DATA_URL_PATTERN","attrName","attrRegex","DefaultWhitelist","whiteList","whitelistKeys","elName","whitelistedAttributes","CLASS_NAME_AUTOCOMPLETE_ITEM","getItemsTemplate","displayValue","itemContent","noResults","CLASS_NAME_FOCUSING","SELECTOR_ITEMS_LIST","Autocomplete","getLoaderTemplate","_loaderTimeout","_activeItemIndex","_activeItem","_filteredResults","_lastQueryValue","_canOpenOnFocus","_inputFocusHandler","_handleInputFocus","_userInputHandler","_keydownHandler","itemsList","_filterResults","_initDropdown","_setInputAndLabelClasses","_setInputAriaAttributes","_listenToInputFocus","_listenToKeydown","itemsListTemplate","sanitizedCustomContent","_isPromise","_asyncUpdateResults","_updateResults","_resetActiveItem","results","newTemplate","_selectActiveItem","_setActiveItem","_scrollToItem","selectionStart","setSelectionRange","_updateActiveItem","newActiveItem","currentActiveItem","itemIndex","itemOffset","_listenToItemsClick","_handleItemsClick","targetIndex","_handleDropdownTransitionEnd","_removeInputAndElementEvents","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_STATIC","Modal","_dialog","_adjustDialog","_hideModal","handleUpdate","modalNonInvasive","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","styleProp","NON_INVASIVE_CLASS","NON_INVASIVE_SHOW_CLASS","SELECTOR_MODAL_CONTENT","EVENT_SHOW_BS_MODAL","EVENT_SHOWN_BS_MODAL","EVENT_HIDDEN_BS_MODAL","BSModal","_modalContentRect","_modalContentComputedStyles","_isNonInvasive","_isScrollable","_isBottomRight","_isBottomLeft","_isTopRight","_isTopLeft","_isSideTopModal","_isSideBottomModal","_isSideModal","_isModalBottom","_isBodyOverflowing","_onModalShow","_onModalShown","_onModalHidden","_addNonInvasiveClass","_modalDialogComputedStyles","_topOffset","_leftOffset","_rightOffset","_bottomOffset","_addOpenClass","_setStyles","sideOffset","topOffset","_showBackdrop","isNonInvasiveModalOpen","stopImmediatePropagation","_removeOpenClass","_removeNonInvasiveClass","leftOffset","isAboveBreakpoint","clipboardTarget","EVENT_COPIED","Clipboard","_initCopyHandler","_initCopy","copyText","clipboardTextExist","targetText","inputToCopy","_createNewInput","_selectInput","newInput","execCommand","SELECTOR_CLOSE","closeIcon","Chip","_appendCloseIcon","_handleDelete","_handleTextChip","_handleClickOnChip","appendChip","chip","getChip","createIcon","insertAdjacentElement","CLASSNAME_CHIPS_INITIAL","CLASSNAME_CHIPS_PLACEHOLDER","CLASSNAME_CHIP_OPACITY","CLASSNAME_CHIPS_PADDING","CLASSNAME_CHIPS_TANSITION","CLASSNAME_CHIPS_WRAPPER","SELECTOR_CHIP","SELECTOR_CHIP_ACTIVE","EVENT_DELETE","inputID","initialValues","labelText","ChipsInput","numberClicks","_inputInstance","activeChip","allChips","chipsInputWrapper","_setChipsClass","_appendInputToElement","_handleInitialValue","_initializeInput","_handleInputText","_handleChipsOnSelect","_handleEditable","_handleChipsFocus","_handleClicksOnChips","_handleDeleteEvents","activeChipAfter","_handleActiveChipAfterRemove","_handleUpEvents","_handleRightKeyboardArrow","_handleDownEvents","_handleLeftKeyboardArrow","_keyboardEvents","_handleAddActiveClass","contentEditable","chipText","_handleRemoveActiveClass","_handleAddActiveClassWithKeyboard","chipIndex","_handleTextContent","filterActive","arrOfObjects","activeObj","_handleCreateChip","_handleKeysInputToElement","_handleBlurInput","inputField","getInputField","divElement","divWithChips","chipsContainer","getEventTypeClientX","ev","CLASSNAME_HAND","SELECTOR_HORIZONTAL","numberOfRanges","startValues","MultiRangeSlider","_mousemove","_movingHand","hands","connect","leftConnectRect","handsNoActive","hand","handActive","activeTooltip","activeTooltipValue","handTooltip","_setClassHorizontalOrVertical","_setRangeConnectsElement","_setRangeHandleElements","_setTransformationOnStart","_setTooltipToHand","_removeSliderElements","_onConnectMousedown","_handleClickOnRange","_onHandMouseDown","_handleClickEventOnHand","_onDocumentMouseUp","_handleEndMoveEventDocument","_onDocumentMouseMove","_handleMouseMoveEventDocument","_onHandMouseUp","_handleEndMoveEvent","handActiveHandle","handActiveTranslation","handleDataHandle","handleDataTranslate","_handleMultiValuesOnRange","CLASSNAME_DATEPICKER","CLASSNAME_TIMEPICKER","SELECTOR_TIMEPICKER","SELECTOR_DATEPICKER","SELECTOR_TOGGLE_BUTTON","EVENT_CLOSE_DATEPICKER","EVENT_VALUE_CHANGED_DATEPICKER","EVENT_VALUE_CHANGED_TIMEPICKER","BUTTONS_WRAPPER","defaultDate","timepicker","showFormat","Datetimepicker","_timepicker","_datepicker","_dateValue","_timeValue","_format","_cancel","_openDatePicker","_removeTimePicker","_removeDatepicker","tempOptions","_addDatepicker","_addTimePicker","_disableInput","_setInitialDefaultInput","_applyFormatPlaceholder","_handleTimepickerDisablePast","_handleTimepickerDisableFuture","DATEPICKER_WRAPPER","datepickerOptions","TIMEPICKER_WRAPPER","timepickerOptions","_addIconButtons","headerTime","_enableOrDisableToggleButton","_listenToCancelClick","DATEPICKER_CANCEL_BTN","dateTimeSplited","dateDelimeters","inputFirstValue","inputSecondValue","parseDate","isInputValid","_openDropdownDate","_openTimePicker","CLOCK_BTN","_openDropdownTime","CANCEL_BTN","timePopper","callbackInitState","rippleCallback","initSelector","callbackInitState$1","defaultInitSelectors","alert","carousel","EVENT_LOAD_DATA_API","SELECTOR_DATA_RIDE","slideIndex","EVENT_KEYUP_DATA_API","selectorElement","offcanvas","OPEN_SELECTOR","alreadyOpen","scrollspy","tab","SELECTOR_DATA_TOGGLE_ACTIVE","toast","SELECTOR_DATA_INIT","SELECTOR_OUTLINE_INPUT","SELECTOR_OUTLINE_TEXTAREA","Component","PARSE_DATA","chartProperty","IS_COMPLEX","CONVERT_DATA_TYPE","dataSet","chips","datatable","datetimepicker","multiRangeSlider","clipboard","infiniteScroll","lazyLoad","navbar","popconfirm","rating","sidenav","stepper","sticky","initMDB","components","checkOtherImports","componentList"],"mappings":"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","x_google_ignoreList":[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,88,98,99,100]}