{"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/pagination.js","../../src/js/pro/datatable/html/table.js","../../src/js/pro/datatable/html/rows.js","../../src/js/pro/datatable/html/columns.js","../../src/js/pro/datatable/util.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/index.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","../../node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.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 flip: true,\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 flip: 'boolean',\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 altBoundary: this._config.flip,\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 animationWindowHeight: 'number',\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 animationWindowHeight: 0,\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._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 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._sortImages();\n this._triggerEvents('open', 'opened');\n\n this._loadImages().then((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 this._element = null;\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 _sortImages() {\n for (let i = 0; i < this._activeImg; i++) {\n this._images.push(this._images.shift());\n }\n }\n\n async _loadImages() {\n const promiseArray = [];\n const imageArray = [];\n\n this._galleryContent.innerHTML = '';\n let positionLeft = 0;\n\n this._images.forEach((img, key) => {\n promiseArray.push(\n new Promise((resolve) => {\n const newImg = new Image();\n const newImgWrapper = element('div');\n Manipulator.addClass(newImgWrapper, CLASSNAME_IMG);\n\n this._addImgStyles(newImg, newImgWrapper, positionLeft, key, img);\n\n newImgWrapper.append(newImg);\n this._galleryContent.append(newImgWrapper);\n\n newImg.onload = resolve;\n newImg.src = img.dataset.mdbImg || img.src;\n imageArray.push(newImg);\n\n positionLeft += 100;\n })\n );\n });\n\n await Promise.all(promiseArray);\n return imageArray;\n }\n\n _addImgStyles(newImg, newImgWrapper, positionLeft, key, 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 if (key === this._images.length - 1 && this._images.length > 1) {\n Manipulator.style(newImgWrapper, { left: '-100%' });\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._images = SelectorEngine.find('img', this._galleryContent);\n this._images.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._images = SelectorEngine.find('img', this._galleryContent);\n this._images.forEach((img) => {\n let newPositionLeft;\n\n if (direction === 'right') {\n newPositionLeft = parseInt(img.parentNode.style.left, 10) - 100;\n if (newPositionLeft < -100) newPositionLeft = (this._images.length - 2) * 100;\n } else {\n newPositionLeft = parseInt(img.parentNode.style.left, 10) + 100;\n if (newPositionLeft === (this._images.length - 1) * 100) newPositionLeft = -100;\n }\n\n this._slideImg(img, newPositionLeft);\n });\n\n this._updateActiveImg(direction);\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 _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 this._sortImages();\n\n Manipulator.style(this.currentImg.parentNode, { transform: 'scale(0.25)', opacity: 0 });\n\n setTimeout(() => {\n this._loadImages().then((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 if (this._activeImg === this._images.length - 1) {\n this._activeImg = 0;\n } else {\n this._activeImg++;\n }\n }\n\n if (direction === 'left') {\n if (this._activeImg === 0) {\n this._activeImg = this._images.length - 1;\n } else {\n this._activeImg--;\n }\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._onZoom.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 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 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 _removeEvents() {\n const images = SelectorEngine.find('img', this._galleryContent);\n\n images.forEach((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 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 _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 _onZoom(e) {\n if (e.deltaY > 0) {\n this.zoomOut();\n } else {\n if (this._zoom >= 3) return;\n this._setNewPositionOnZoomIn(e);\n this.zoomIn();\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\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() {\n return function (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\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};\n\nconst Default = {\n tooltip: 'top',\n value: '',\n readonly: false,\n after: '',\n before: '',\n dynamic: false,\n};\n\nconst EVENT_SELECT = `scoreSelect${EVENT_KEY}`;\nconst EVENT_HOVER = `scoreHover${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 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._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 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._icons.indexOf(e.target);\n this._updateRating(this._index);\n this._triggerEvents(el, EVENT_HOVER);\n // prettier-ignore\n }\n );\n });\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 _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\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');\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","/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport * as DOM from '../lib/dom';\nimport cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { toInt } from '../lib/util';\n\nexport default function (i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail',\n ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail',\n ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n [\n containerHeight,\n contentHeight,\n pageY,\n railYHeight,\n scrollbarY,\n scrollbarYHeight,\n scrollTop,\n y,\n scrollbarYRail,\n ]\n) {\n const element = i.element;\n\n let startingScrollTop = null;\n let startingMousePageY = null;\n let scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] = startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy = (i[contentHeight] - i[containerHeight]) / (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', (e) => {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', (e) => {\n bindMoves(e, true);\n });\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","/* eslint-disable */\nimport 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 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 // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\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 let startOffset = {};\n let startTime = 0;\n let speed = {};\n let easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\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 startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(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 - startOffset.pageX;\n const differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n const currentTime = new Date().getTime();\n\n const timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function () {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n 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 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\nconst EVENT_CLOSE_BS = 'close.bs.alert';\nconst EVENT_CLOSED_BS = 'closed.bs.alert';\n\nconst EXTENDED_EVENTS = [{ name: 'close' }, { name: 'closed' }];\n\nclass Alert extends BSAlert {\n constructor(element, data = {}) {\n super(element, data);\n this._options = this._getConfig(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_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 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 };\n\n EventHandler.on(this._element, 'transitionend', handler);\n }\n }\n\n show() {\n if (this._options.autohide) {\n this._setupAutohide();\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 };\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\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) {\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, 'closed.bs.alert', () => {\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};\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};\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 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._setupDisplay();\n if (!this._config.container && this._config.appendToBody) {\n this._appendToBody();\n }\n\n this._bindMdbEvents();\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]: `${this.verticalOffset + this._config.offset}px`,\n [this.position.x]: `${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 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 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\">\n <div class=\"d-flex flex-column timepicker-elements justify-content-around\">\n <div id='${headId}' class='timepicker-head d-flex flex-row align-items-center justify-content-center'\n style='padding-${isRTL ? 'left' : 'right'}:${format24 ? 50 : 0}px'>\n <div class='timepicker-head-content d-flex w-100 justify-content-evenly'>\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 !format24\n ? `<div class=\"d-flex flex-column justify-content-center timepicker-mode-wrapper\">\n <button type='button' class=\"timepicker-hour-mode timepicker-am\" tabindex=\"0\">${amLabel}</button>\n <button class=\"timepicker-hour-mode timepicker-pm\" tabindex=\"0\">${pmLabel}</button>\n </div>`\n : ''\n }\n </div>\n </div>\n ${\n !inline\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 }\n\n </div>\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 </div>\n </div>`;\n\n const inlineTemplate = `<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\">\n <div class=\"d-flex flex-column timepicker-elements justify-content-around timepicker-elements-inline\">\n <div id='${headId}' class='timepicker-head d-flex flex-row align-items-center justify-content-center timepicker-head-inline'\n style='padding-right:0px'>\n <div class='timepicker-head-content d-flex w-100 justify-content-evenly align-items-center'>\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 !format24\n ? `<div class=\"d-flex justify-content-center timepicker-mode-wrapper\">\n <button type='button' class=\"timepicker-hour-mode timepicker-am me-2 ms-4\" tabindex=\"0\">${amLabel}</button>\n <button class=\"timepicker-hour-mode timepicker-pm\" tabindex=\"0\">${pmLabel}</button>\n <button type='button' class='timepicker-button timepicker-submit timepicker-submit-inline py-1 px-2 mb-0' tabindex=\"0\">${okLabel}</button>\n </div>`\n : ''\n }\n ${\n format24\n ? `<button class='timepicker-button timepicker-submit timepicker-submit-inline py-1 px-2 mb-0' tabindex=\"0\">${okLabel}</button>`\n : ''\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n `;\n\n return inline ? inlineTemplate : normalTemplate;\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';\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 Default = {\n bodyId: '',\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n closeModalOnBackdropClick: true,\n closeModalOnMinutesClick: false,\n container: 'body',\n defaultTime: '',\n disabled: false,\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 invalidLabel: 'Invalid Time Format',\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 disabled: 'boolean',\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 invalidLabel: 'string',\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 this.dataWithIcon = element.dataset.withIcon;\n this.dataToggle = element.dataset.toggle;\n this.customIcon = SelectorEngine.findOne('.timepicker-toggle-button', this._element);\n\n this._checkToggleButton();\n\n this.inputFormatShow = SelectorEngine.findOne('[data-mdb-timepicker-format24]', this._element);\n\n this.inputFormat =\n this.inputFormatShow === null ? '' : Object.values(this.inputFormatShow.dataset)[0];\n this.elementToggle = SelectorEngine.findOne('[data-mdb-toggle]', this._element);\n this.toggleElement = Object.values(element.querySelector('[data-mdb-toggle]').dataset)[0];\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._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\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 if (this.inputFormat === 'true' && this.inputFormat !== '') {\n this._options.format12 = false;\n this._options.format24 = true;\n this._currentTime = formatNormalHours(this._inputValue);\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 // Public\n\n init() {\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 this._removeModal();\n\n EventHandler.off(this._element, 'click', `[data-mdb-toggle='${this.toggleElement}']`);\n EventHandler.off(this._element, 'keydown', `[data-mdb-toggle='${this.toggleElement}']`);\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 // private\n\n _checkToggleButton() {\n if (this.customIcon === null) {\n if (this.dataWithIcon !== undefined) {\n this._options.withIcon = null;\n\n if (this.dataWithIcon === 'true') {\n this._appendToggleButton(this._options);\n }\n }\n\n if (this._options.withIcon) {\n this._appendToggleButton(this._options);\n }\n }\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._hour = SelectorEngine.findOne(`.${HOUR_CLASS}`);\n this._minutes = SelectorEngine.findOne(`.${MINUTE_CLASS}`);\n this._AM = SelectorEngine.findOne(`.${AM_CLASS}`);\n this._PM = SelectorEngine.findOne(`.${PM_CLASS}`);\n this._wrapper = SelectorEngine.findOne(`.${WRAPPER_CLASS}`);\n this._modal = SelectorEngine.findOne(`.${MODAL_CLASS}`);\n this._hand = SelectorEngine.findOne(`.${HAND_CLASS}`);\n this._circle = SelectorEngine.findOne(`.${CIRCLE_CLASS}`);\n this._clock = SelectorEngine.findOne(`.${CLOCK_CLASS}`);\n this._clockInner = SelectorEngine.findOne(`.${CLOCK_INNER_CLASS}`);\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 = (e) => {\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', `[data-mdb-toggle='${this.toggleElement}']`, (e) => {\n if (e.keyCode === ENTER) {\n e.preventDefault();\n EventHandler.trigger(this.elementToggle, 'click');\n }\n });\n }\n\n _handleOpen() {\n const container = this._getContainer();\n EventHandlerMulti.on(\n this._element,\n 'click',\n `[data-mdb-toggle='${this.toggleElement}']`,\n (e) => {\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 Manipulator.addStyle(this.elementToggle, {\n pointerEvents: 'none',\n });\n\n this.elementToggle.blur();\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 this.input.blur();\n e.target.blur();\n\n div.innerHTML = getTimepickerTemplate(this._options);\n Manipulator.addClass(div, MODAL_CLASS);\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 this._setActiveClassToTipsOnOpen(hour, minute, format);\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._focusTrap = new FocusTrap(this._wrapper, {\n event: 'keydown',\n condition: ({ key }) => key === 'Tab',\n });\n this._focusTrap.trap();\n }, fixForInput);\n }\n );\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 const runRemoveFunction = () => {\n Manipulator.addStyle(this.elementToggle, {\n pointerEvents: 'auto',\n });\n\n if (this._animations) {\n this._toggleBackdropAnimation(true);\n }\n\n this._removeModal();\n this._focusTrap.disable();\n this._focusTrap = null;\n\n if (this.elementToggle) {\n this.elementToggle.focus();\n } else if (this.input) {\n this.input.focus();\n }\n };\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 runRemoveFunction();\n } else if (Manipulator.hasClass(target, WRAPPER_CLASS) && closeModalOnBackdropClick) {\n runRemoveFunction();\n }\n }\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, readOnly, focusInputAfterApprove, disablePast, disableFuture } =\n 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.elementToggle, {\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 (!readOnly && focusInputAfterApprove) {\n this.input.focus();\n }\n\n Manipulator.addStyle(this.elementToggle, {\n pointerEvents: 'auto',\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 if (this._animations) {\n this._toggleBackdropAnimation(true);\n }\n\n this._removeModal();\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 (\n this._modal &&\n !this._modal.contains(target) &&\n !Manipulator.hasClass(target, 'timepicker-icon')\n ) {\n clearInterval(this._interval);\n Manipulator.addStyle(this.elementToggle, {\n pointerEvents: 'auto',\n });\n this._removeModal();\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 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) {\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 if (this._animations) {\n setTimeout(() => {\n this._removeModalElements();\n this._scrollBar.reset();\n }, 300);\n } else {\n this._removeModalElements();\n this._scrollBar.reset();\n }\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\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 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 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 getToday,\n getYearsOffset,\n isDateDisabled,\n isMonthDisabled,\n isYearDisabled,\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) {\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 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 )}\n `;\n const modalContent = `\n ${createHeader(day, dayNumber, month, options, date)}\n ${createMainContent(\n date,\n month,\n year,\n selectedDate,\n selectedYear,\n selectedMonth,\n options,\n monthsInRow,\n yearsInView,\n yearsInRow\n )}\n `;\n\n if (options.inline) {\n Manipulator.addClass(template, 'datepicker-dropdown-container');\n Manipulator.addClass(template, `datepicker-dropdown-container-${id}`);\n\n template.innerHTML = inlineContent;\n } else {\n Manipulator.addClass(template, 'datepicker-modal-container');\n Manipulator.addClass(template, `datepicker-modal-container-${id}`);\n\n template.innerHTML = modalContent;\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) {\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\">${options.weekdaysShort[dayNumber]}, ${options.monthsShort[month]} ${day}</span>\n </div>\n `\n }\n </div>\n `;\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) {\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 )}\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 )}\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) {\n let viewTemplate;\n if (options.view === 'days') {\n viewTemplate = createDayViewTemplate(date, selectedDate, options);\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) {\n const dates = getDatesArray(date, headerDate, options);\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 .map((week) => {\n return `\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 return `\n <td\n class=\"datepicker-cell datepicker-small-cell datepicker-day-cell\n ${day.currentMonth ? '' : 'disabled'} ${day.disabled ? 'disabled' : ''}\n ${day.isToday && 'current'} ${day.isSelected && 'selected'}\"\n data-mdb-date=\"${getYear(day.date)}-${getMonth(day.date)}-${getDate(day.date)}\"\n aria-label=\"${dayLabel}\" aria-selected=\"${day.isSelected}\" ${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 return `\n <table class=\"datepicker-table\">\n <thead>\n ${tableHeadContent}\n </thead>\n <tbody class=\"datepicker-table-body\">\n ${tableBodyContent}\n </tbody>\n </table>\n `;\n}\n\nfunction getDatesArray(activeDate, headerDate, options) {\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 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: headerDate && isSameDate(date, headerDate),\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: headerDate && isSameDate(date, headerDate),\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: headerDate && isSameDate(date, headerDate),\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(options, monthsInRow) {\n const months = [];\n\n let row = [];\n\n for (let i = 0; i < options.monthsShort.length; i++) {\n row.push(options.monthsShort[i]);\n\n if (row.length === monthsInRow) {\n const monthsRow = row;\n months.push(monthsRow);\n row = [];\n }\n }\n\n return months;\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=\"far 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} from './date-utils';\nimport {\n getBackdropTemplate,\n getDatepickerTemplate,\n createDayViewTemplate,\n createMonthViewTemplate,\n createYearViewTemplate,\n getToggleButtonTemplate,\n createCustomHeader,\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 disableToggleButton: false,\n disableInput: false,\n animations: true,\n confirmDateOnSelect: false,\n removeOkBtn: false,\n removeCancelBtn: false,\n removeClearBtn: false,\n headerTemplate: null,\n headerTemplateModifier: null,\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 disableToggleButton: 'boolean',\n disableInput: '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};\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._selectedYear = null;\n this._selectedMonth = 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 if (this.toggleButton && this._options.disableToggle) {\n this.toggleButton.disabled = 'true';\n }\n\n if (this._options.disableInput) {\n this._input.disabled = 'true';\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 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 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 if (this._input.readOnly || this._input.disabled) {\n this.toggleButton.style.pointerEvents = 'none';\n }\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 );\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 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 this._updateHeaderDate(\n this._activeDate,\n this._options.monthsShort,\n this._options.weekdaysShort\n );\n }\n }\n\n _updateHeaderDate(date, monthNames, dayNames) {\n const headerDateEl = SelectorEngine.findOne('.datepicker-date-text', this.container);\n const month = getMonth(date);\n const day = getDate(date);\n const dayNumber = getDayNumber(date);\n\n const datepickerHeaderContainer = SelectorEngine.findOne('.datepicker-header', this.container);\n\n if (this._options.headerTemplate && datepickerHeaderContainer) {\n datepickerHeaderContainer.innerHTML = createCustomHeader(\n day,\n dayNumber,\n month,\n date,\n this._options\n );\n return;\n }\n headerDateEl.innerHTML = `${dayNames[dayNumber]}, ${monthNames[month]} ${day}`;\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 && this.container.contains(e.target);\n\n if (!isContainer && !isContainerContent) {\n this.close();\n }\n });\n }\n\n _listenToEscapeClick() {\n EventHandler.on(document, 'keydown', (event) => {\n if (event.keyCode === ESCAPE && this._isOpen) {\n this.close();\n }\n });\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 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('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 this._confirmSelection(this._headerDate);\n this.close();\n }\n\n _selectDate(date, cell = this.activeCell) {\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._removeCurrentSelectionStyles();\n this._removeCurrentFocusStyles();\n this._addSelectedStyles(cell);\n this._selectedDate = date;\n this._selectedYear = getYear(date);\n this._selectedMonth = getMonth(date);\n this._headerDate = date;\n\n if (this._options.inline || this.options.confirmDateOnSelect) {\n this._confirmSelection(date);\n this.close();\n }\n }\n\n _selectYear(year, cell = this.activeCell) {\n this._removeCurrentSelectionStyles();\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._removeCurrentSelectionStyles();\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 _confirmSelection(date) {\n if (date) {\n const dateString = this.formatDate(date);\n this._input.value = dateString;\n Manipulator.addClass(this._input, 'active');\n EventHandler.trigger(this._element, EVENT_VALUE_CHANGED, { date });\n }\n }\n\n handleCancel() {\n this._selectedDate = null;\n this._selectedYear = null;\n this._selectedMonth = null;\n this.close();\n }\n\n handleClear() {\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._removeCurrentSelectionStyles();\n this._input.value = '';\n this._input.classList.remove('active');\n this._setInitialDate();\n this._changeView('days');\n this._updateHeaderDate(\n this._activeDate,\n this._options.monthsShort,\n this._options.weekdaysShort\n );\n }\n\n _removeCurrentSelectionStyles() {\n const currentSelected = SelectorEngine.findOne('.selected', this.container);\n\n if (currentSelected) {\n currentSelected.classList.remove('selected');\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 = addMonths(this._activeDate, 1);\n const template = createDayViewTemplate(nextMonth, this._headerDate, this._options);\n this._activeDate = nextMonth;\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 = addMonths(this._activeDate, -1);\n this._activeDate = previousMonth;\n const template = createDayViewTemplate(previousMonth, this._headerDate, this._options);\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 if (view === 'days') {\n this.datesContainer.innerHTML = createDayViewTemplate(\n this._activeDate,\n this._headerDate,\n this._options\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.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 const date = this._parseDate(input, this._options.format, delimeters);\n\n if (isValidDate(date)) {\n this._activeDate = date;\n this._selectedDate = date;\n this._selectedYear = getYear(date);\n this._selectedMonth = getMonth(date);\n this._headerDate = date;\n } else {\n this._activeDate = new Date();\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 _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 const year = Number(datesArray[0].value);\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 popconfirmIcon: 'string',\n cancelLabel: 'string',\n confirmLabel: 'string',\n};\n\nconst Default = {\n popconfirmMode: 'inline',\n message: 'Are you sure?',\n cancelText: 'Cancel',\n okText: 'OK',\n okClass: 'btn-primary',\n popconfirmIcon: '',\n cancelLabel: 'Cancel',\n confirmLabel: 'Confirm',\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 btn-secondary 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","import { isRTL } from '../../../mdb/util/index';\n/* eslint-disable indent */\nconst pagination = (\n { text, entries, entriesOptions, fullPagination, rowsText, allText },\n loading\n) => {\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 === entries ? 'selected' : ''}>${option}</option>`;\n })\n .join('\\n');\n\n return `\n<div class=\"datatable-pagination\">\n <div class=\"datatable-select-wrapper\">\n <p class=\"datatable-select-text\">${rowsText}</p>\n <select name=\"entries\"\n ${loading ? 'data-mdb-disabled=\"true\"' : ''} class=\"datatable-select select\">\n ${options}\n </select>\n </div>\n <div class=\"datatable-pagination-nav\">\n ${text}\n </div>\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</div>\n`;\n};\n\nexport default pagination;\n","/* eslint-disable indent */\nimport paginationTemplate from './pagination';\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 pagination,\n}) => {\n const rowsTemplate = generateRows({ rows, columns, noFoundMessage, edit, loading, selectable });\n const columnsTemplate = generateColumns(columns, selectable, multi);\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 bg-light}\">\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 ${pagination.enable ? paginationTemplate(pagination, loading) : ''}\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","/* eslint-disable indent */\n\nconst columns = (columns, selectable, multi) => {\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 column.sort\n ? `<i data-mdb-sort=\"${column.field}\" class=\"datatable-sort-icon fas fa-arrow-up\"></i>`\n : ''\n } ${column.label}</th>`;\n });\n\n return [selectable ? checkboxHeader : '', ...headers].join('\\n');\n};\n\nexport default columns;\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 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) {\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 role = config.filter ? 'combobox' : 'listbox';\n const multiselectable = config.multiple ? 'true' : 'false';\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', role);\n input.setAttribute('aria-multiselectable', multiselectable);\n input.setAttribute('aria-disabled', disabled);\n input.setAttribute('aria-haspopup', 'true');\n input.setAttribute('aria-expanded', false);\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\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 }\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) {\n const optionsList = element('div');\n Manipulator.addClass(optionsList, 'select-options-list');\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 { ESCAPE, ENTER, DOWN_ARROW, UP_ARROW, HOME, END, TAB } 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};\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};\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\nconst ANIMATION_TRANSITION_TIME = 200;\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._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._addMutationObserver();\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(this._wrapperId, this._config, this._label);\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) {\n event.preventDefault();\n }\n const isOpenKey =\n key === ENTER ||\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._selectionModel.deselect(currentSelected);\n currentSelected.deselect();\n currentSelected.node.setAttribute('selected', false);\n EventHandler.trigger(this._element, EVENT_DESELECTED, { value: currentSelected.value });\n }\n\n if (!currentSelected || (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 _handleMultiSelection(option) {\n if (option.selected) {\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 } 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 }\n }\n\n _listenToSelectSearch() {\n this.filterInput.addEventListener('input', (event) => {\n const searchTerm = event.target.value;\n const debounceTime = this._config.filterDebounce;\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\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 );\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 && 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 }, ANIMATION_TRANSITION_TIME);\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._optionsToRender = this._getOptionsToRender(this._element);\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 this.options\n .filter((option) => option.selected)\n .forEach((selection) => (selection.nativeOption.selected = false));\n\n const isMultipleValue = Array.isArray(value);\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 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 Select from '../select';\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_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';\nconst SELECTOR_PAGINATION_NAV = '.datatable-pagination-nav';\nconst SELECTOR_SELECT = '.datatable-select';\nconst SELECTOR_SORT_ICON = '.datatable-sort-icon';\nconst SELECTOR_ROW = '.datatable-body tr';\nconst SELECTOR_ROW_CHECKBOX = '.datatable-row-checkbox';\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';\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',\n selectable: 'boolean',\n sm: 'boolean',\n sortField: '(null|string)',\n sortOrder: 'string',\n loaderClass: 'string',\n fixedHeader: 'boolean',\n striped: 'boolean',\n rowsText: 'string',\n ofText: 'string',\n allText: 'string',\n forceSort: '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 columnIndex: 'number',\n};\n\nconst DEFAULT_OPTIONS = {\n bordered: false,\n borderless: false,\n borderColor: null,\n clickableRows: false,\n color: null,\n dark: false,\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 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};\n\nconst DEFAUL_COLUMN = {\n label: '',\n field: '',\n fixed: false,\n format: null,\n width: null,\n sort: true,\n columnIndex: 0,\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._paginationLeft = null;\n this._paginationRight = null;\n this._paginationStart = null;\n this._paginationEnd = null;\n this._select = null;\n this._selectInstance = null;\n\n this._selected = [];\n this._checkboxes = null;\n this._headerCheckbox = 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 // 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 ...DEFAUL_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 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 if (this._optionToLowerCase(this._options.entries) === 'all') {\n result = paginate({\n rows: result,\n entries: result.length,\n activePage: this._activePage,\n });\n } else {\n result = paginate({\n rows: result,\n entries: this._options.entries,\n activePage: this._activePage,\n });\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 navigationText() {\n const firstVisibleEntry = this._activePage * this._options.entries;\n\n if (this.searchResult.length === 0) {\n return `0 ${this._options.ofText} 0`;\n }\n\n if (this._optionToLowerCase(this._options.entries) === 'all') {\n return `1 - ${this.searchResult.length} ${this._options.ofText} ${this.searchResult.length}`;\n }\n\n return `${firstVisibleEntry + 1} - ${this.computedRows.length + firstVisibleEntry} ${\n this._options.ofText\n } ${this.searchResult.length}`;\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.dark && 'datatable-dark',\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.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 pagination: {\n enable: this._options.pagination,\n text: this.navigationText,\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 forceSort: this._options.forceSort,\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({ ...this._options, ...options });\n\n this._setup();\n\n this._performSort();\n }\n\n dispose() {\n if (this._selectInstance) {\n this._selectInstance.dispose();\n }\n\n this._removeEventListeners();\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\n if (this._options.pagination) {\n this._toggleDisableState();\n }\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.label === 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._toggleDisableState();\n\n this._renderRows();\n\n this._setActiveSortIcon(icon);\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\n this._toggleDisableState();\n\n this._renderRows();\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 ['dark', '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 if (this._activePage > this.pages - 1) {\n this._activePage = this.pages - 1;\n }\n\n this._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.pagination) {\n this._setupPagination();\n }\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 this._setupScroll();\n\n this._setupSort();\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 });\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, 'th');\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 this._performSort();\n\n this._setActiveSortIcon(icon);\n });\n });\n }\n\n _performSort() {\n this._toggleDisableState();\n\n this._renderRows();\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 _setupPagination() {\n this._paginationRight = SelectorEngine.findOne(SELECTOR_PAGINATION_RIGHT, this._element);\n\n this._paginationLeft = SelectorEngine.findOne(SELECTOR_PAGINATION_LEFT, this._element);\n\n EventHandler.on(this._paginationRight, 'click', () =>\n this._changeActivePage(this._activePage + 1)\n );\n\n EventHandler.on(this._paginationLeft, 'click', () =>\n this._changeActivePage(this._activePage - 1)\n );\n\n if (this._options.fullPagination) {\n this._paginationStart = SelectorEngine.findOne(SELECTOR_PAGINATION_START, this._element);\n\n this._paginationEnd = SelectorEngine.findOne(SELECTOR_PAGINATION_END, this._element);\n\n EventHandler.on(this._paginationStart, 'click', () => this._changeActivePage(0));\n\n EventHandler.on(this._paginationEnd, 'click', () => this._changeActivePage(this.pages - 1));\n }\n\n this._toggleDisableState();\n\n this._setupPaginationSelect();\n }\n\n _setupPaginationSelect() {\n this._select = SelectorEngine.findOne(SELECTOR_SELECT, this._element);\n\n if (this._selectInstance) {\n this._selectInstance.dispose();\n }\n\n this._selectInstance = new Select(this._select);\n\n EventHandler.on(this._select, EVENT_VALUE_CHANGED_SELECT, (e) => this._setEntries(e));\n }\n\n _removeEventListeners() {\n if (this._options.pagination) {\n EventHandler.off(this._paginationRight, 'click');\n\n EventHandler.off(this._paginationLeft, 'click');\n\n EventHandler.off(this._select, EVENT_VALUE_CHANGED_SELECT);\n\n if (this._options.fullPagination) {\n EventHandler.off(this._paginationStart, 'click');\n\n EventHandler.off(this._paginationEnd, 'click');\n }\n\n EventHandlerMulti.off(window, 'resize DOMContentLoaded', this._windowResizeHandler);\n }\n\n if (this._options.editable) {\n SelectorEngine.find(SELECTOR_CELL, this._element).forEach((cell) => {\n EventHandler.off(cell, 'input');\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\n _renderTable() {\n const userTable = SelectorEngine.findOne('table', this._element);\n this._tableId = userTable?.getAttribute('id');\n this._element.innerHTML = tableTemplate(this.tableOptions).table;\n\n if (this._tableId) {\n const renderedTable = SelectorEngine.findOne('table', this._element);\n renderedTable.setAttribute('id', this._tableId);\n }\n\n this._formatCells();\n\n EventHandler.trigger(this._element, EVENT_RENDER);\n }\n\n _renderRows() {\n const body = SelectorEngine.findOne('tbody', this._element);\n\n if (this._options.pagination) {\n const navigation = SelectorEngine.findOne(SELECTOR_PAGINATION_NAV, this._element);\n navigation.innerText = this.navigationText;\n }\n\n body.innerHTML = tableTemplate(this.tableOptions).rows;\n\n this._formatCells();\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() {\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 rowsData = this.rows;\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 _toggleDisableState() {\n if (this._options.pagination === false) {\n return;\n }\n if (this._activePage === 0 || this._options.loading) {\n this._paginationLeft.setAttribute('disabled', true);\n\n if (this._options.fullPagination) {\n this._paginationStart.setAttribute('disabled', true);\n }\n } else {\n this._paginationLeft.removeAttribute('disabled');\n\n if (this._options.fullPagination) {\n this._paginationStart.removeAttribute('disabled');\n }\n }\n\n if (this._activePage === this.pages - 1 || this._options.loading || this.pages === 0) {\n this._paginationRight.setAttribute('disabled', true);\n\n if (this._options.fullPagination) {\n this._paginationEnd.setAttribute('disabled', true);\n }\n } else {\n this._paginationRight.removeAttribute('disabled');\n\n if (this._options.fullPagination) {\n this._paginationEnd.removeAttribute('disabled');\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","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","/*!\n * perfect-scrollbar v1.5.3\n * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction 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\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function 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\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var 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\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var 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\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = 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\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.round(rect.width);\n i.containerHeight = Math.round(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 queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\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(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (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 var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n 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 set(i.scrollbarXRail, xRailOffset);\n\n var 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 set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var 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', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n if (e.type.startsWith('touch') && e.changedTouches.length > 1) {\n e.preventDefault();\n }\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var 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 var 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', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var 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 var deltaX = 0;\n var 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\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var 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 var deltaX = e.deltaX;\n var 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 var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n var 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 var 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 var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var 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\nfunction touch(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\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 var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\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 (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n var 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 var 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 var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!i.element) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n 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\nvar defaultSettings = function () { return ({\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\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\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 (var 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 var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var 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 = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = 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 var railXStyle = 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 =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = 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 var railYStyle = 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 =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n 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(function (handlerName) { return handlers[handlerName](this$1); });\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', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function 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 set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n 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 set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n 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\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;\n//# sourceMappingURL=perfect-scrollbar.esm.js.map\n","/* eslint-disable no-restricted-globals */\nimport PerfectScrollbar from '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 delay: '(null|number)',\n loader: '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 show: true,\n modalNonInvasive: false,\n};\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: '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 } else if (_config.show) {\n data.show(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}`;\n\nconst CLASSNAME_HAND = '.multi-range-slider-hand';\nconst CLASSNAME_CONNECT = '.multi-range-slider-connect';\nconst CLASSNAME_TOOLTIP = '.multi-range-slider-tooltip';\n\nconst SELECTOR_ACTIVE = 'active';\nconst SELECTOR_HORIZONTAL = 'multi-range-slider-horizontal';\n\nconst DefaultType = {\n direction: 'string',\n margin: '(string||number||null)',\n max: 'number',\n min: 'number',\n numberOfRanges: 'number',\n orientation: 'string',\n padding: '(string||number||null)',\n startValues: 'array',\n step: '(string||null||number)',\n tooltips: 'boolean',\n};\n\nconst Default = {\n direction: '',\n margin: null,\n max: 100,\n min: 0,\n numberOfRanges: 2,\n orientation: 'horizontal',\n padding: null,\n startValues: [0, 100],\n step: null,\n tooltips: 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\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`);\n }\n\n get activeTooltip() {\n return SelectorEngine.findOne(CLASSNAME_TOOLTIP);\n }\n\n get activeTooltipValue() {\n const handTooltip = SelectorEngine.findOne(`${CLASSNAME_HAND}.active`);\n\n // fast fix to correct in future\n const tooltip = handTooltip.children[1].children[0];\n return tooltip;\n }\n\n // Public\n\n init() {\n this._setClassHorizontalOrVertical();\n this._setRangeConnectsElement();\n this._setRangeHandleElements();\n this._setTransofrmationOnStart();\n this._handleClickEventOnHand();\n this._handleEndMoveEventDocument();\n this._handleClickOnRange();\n this._setTooltipToHand();\n }\n\n dispose() {\n Manipulator.removeDataAttribute(this._element, `${this.constructor.NAME}-initialized`);\n\n super.dispose();\n }\n\n // Private\n\n _setTransofrmationOnStart() {\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() {\n const { max, min } = this._options;\n this.hands.forEach((hand, index) => {\n EventHandlerMulti.on(hand, 'mousedown touchstart', (ev) => {\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._handleMoveEvent(hand, index);\n this._handleEndMoveEvent(hand, ev);\n\n EventHandler.trigger(hand, EVENT_START, { hand });\n });\n });\n }\n\n _setClassHorizontalOrVertical() {\n if (this._element) {\n Manipulator.addClass(this._element, SELECTOR_MULTI);\n }\n\n if (this._options.orientation === 'horizontal') {\n Manipulator.addClass(this._element, SELECTOR_HORIZONTAL);\n }\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', this._options.orientation);\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 _handleMoveEvent(hand) {\n const { tooltip, step } = this._options;\n\n EventHandlerMulti.on(document, 'mousemove touchmove', (ev) => {\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\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 EventHandlerMulti.on(document, 'mouseup touchend', () => {\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 }\n\n _handleEndMoveEvent(hand) {\n EventHandlerMulti.on(hand, 'mouseup touchend', () => {\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\n _handleClickOnRange() {\n EventHandlerMulti.on(this.connect, 'mousedown touchstart', (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\n _handlePadding() {\n EventHandlerMulti.on(this.connect, 'mousedown touchstart', (ev) => {\n const { padding, numberOfRanges } = this._options;\n let value;\n if (numberOfRanges < 2) {\n value =\n Math.round(\n (getEventTypeClientX(ev) - this.leftConnectRect) / (ev.target.offsetWidth / padding)\n ) % padding;\n }\n\n return value;\n });\n }\n\n _setMovingTooltipEvent() {\n EventHandlerMulti.on(this.connect, 'mousemove', (ev) => {\n const value = (getEventTypeClientX(ev) - this.leftConnectRect) / ev.target.offsetWidth;\n const percent = `${Math.round(value * 100)}%`;\n EventHandler.trigger(this._element, 'movetooltip', {\n percents: { value, percent },\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`;\nconst CLASSNAME_INVALID_FEEDBACK = 'invalid-feedback';\nconst CLASSNAME_IS_INVALID = 'is-invalid';\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}`;\nconst SELECTOR_INVALID_FEEDBACK = `.${CLASSNAME_INVALID_FEEDBACK}`;\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_TIMEPICKER = 'valueChanged.mdb.timepicker';\n\nconst BUTTONS_WRAPPER = element('div');\n\nconst Default = {\n appendValidationInfo: true,\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 invalidLabel: 'Invalid Date or Time Format',\n showFormat: false,\n};\n\nconst DefaultType = {\n appendValidationInfo: 'boolean',\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 invalidLabel: 'string',\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._validationInfo = null;\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 this._validationInfo = 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._appendValidationInfo();\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 _appendValidationInfo() {\n const { invalidLabel, appendValidationInfo } = this._options;\n\n if (appendValidationInfo) {\n this._validationInfo = element('div');\n Manipulator.addClass(this._validationInfo, CLASSNAME_INVALID_FEEDBACK);\n this._validationInfo.innerHTML = invalidLabel;\n\n Manipulator.addStyle(this._input, { marginBottom: 0 });\n Manipulator.addStyle(this._validationInfo, { bottom: '-23px' });\n }\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 (!inputFirstValue) {\n this._removeInvalidClass(this._input);\n } else 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._removeInvalidClass(this._input);\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 this._addInvalidClass(this._input, this._validationInfo);\n }\n } else {\n this._addInvalidClass(this._input, this._validationInfo);\n }\n }\n\n _addInvalidClass() {\n const { appendValidationInfo } = this._options;\n if (appendValidationInfo) {\n Manipulator.addClass(this._input, CLASSNAME_IS_INVALID);\n\n if (!SelectorEngine.findOne(SELECTOR_INVALID_FEEDBACK)) {\n this._input.parentNode.insertBefore(this._validationInfo, this._input.nextSibling);\n }\n }\n }\n\n _removeInvalidClass(input) {\n Manipulator.removeClass(input, CLASSNAME_IS_INVALID);\n this._isInvalidTimeFormat = false;\n const allInvalid = SelectorEngine.findOne(SELECTOR_INVALID_FEEDBACK);\n\n if (allInvalid === null) {\n return;\n }\n allInvalid.remove();\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, 'dateChange.mdb.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, 'dateChange.mdb.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 _handleEscapeKey() {\n EventHandler.one(document.body, 'keyup', () => {\n setTimeout(() => {\n const timepicker = SelectorEngine.findOne(`${SELECTOR_TIMEPICKER}-wrapper`, document.body);\n if (!timepicker) {\n this._scrollBar.reset();\n }\n }, 250);\n });\n }\n\n _handleCancelButton() {\n const CANCEL_BTN = SelectorEngine.findOne(`${SELECTOR_TIMEPICKER}-cancel`, document.body);\n EventHandler.one(CANCEL_BTN, 'mousedown', () => {\n this._scrollBar.reset();\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.elementToggle, '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 this._handleEscapeKey();\n this._handleCancelButton();\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 this._removeInvalidClass(this._input);\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=\"far 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=\"far 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_INIT = initSelector;\n const SELECTOR_TOGGLE = `${SELECTOR_DATA_INIT} img:not(.lightbox-disabled)`;\n const Lightbox = component;\n\n SelectorEngine.find(SELECTOR_DATA_INIT).forEach((el) => new Lightbox(el));\n\n if (callbackInitState.has(component.name)) {\n return;\n }\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_TOGGLE, Lightbox.toggle());\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","animationWindowHeight","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","titleBlock","createTitle","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","_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","_appendTemplate","_getImages","_setActiveImg","_sortImages","_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","newImg","Image","newImgWrapper","_addImgStyles","onload","mdbImg","alt","draggable","mdbCaption","_calculateImgSize","_onResize","_onFullscreenChange","webkitIsFullScreen","mozFullScreen","msFullscreenElement","_animationStart","_resetDoubleTap","newPositionLeft","_slideImg","_updateActiveImg","_showLoader","_updateCaption","_hideLoader","_updateCounter","_hideGallery","_enableScroll","_showGallery","_disableScroll","_setToolsToggleTimout","pointerEvents","_onWindowTouchmove","_onWindowTouchstart","_onImgMousedown","_onMousedown","_onImgMousemove","_onMousemove","_onImgWheel","_onZoom","_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","_showTools","_hideTools","startEvent","completeEvent","lightbox","readonly","dynamic","EVENT_SELECT","EVENT_HOVER","EVENT_KEYUP","EVENT_FOCUSOUT","Rating","_icons","_index","_savedIndex","_originalClassList","_tooltips","_bindMouseDown","_bindKeyDown","_bindKeyUp","_bindFocusLost","_saveOriginalClassList","_setCustomText","_setCustomColor","_setToolTips","_updateRating","_clearRating","_setElementOutline","tabIndex","_updateAfterKeyDown","outline","indexBeforeChange","_restoreOriginalIcon","hasOwnTooltips","insertAdjacentHTML","elMatches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","cls","thumb","rail","consuming","clicking","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","settings","scrollingThreshold","EventElement$1","unbind","unbindAll","isEmpty","EventManager$1","eventElements","eventElement","ee","EventElement","once","onceHandler","processScrollDiff$2","useScrollingClass","forceFireReachEvent","fields","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","processScrollDiff","toInt","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","updateGeometry$1","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","updateCss","xRailOffset","isRtl","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","set$1","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","CSS.set","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","updateGeometry","mouseUpHandler","bindMoves","touchMode","DOM.matches","isEditable","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","applyTouchMove","differenceX","differenceY","startOffset","startTime","speed","easingLoop","getTouch","shouldHandle","buttons","MSPOINTER_TYPE_MOUSE","touchStart","touchMove","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","touchEnd","swipeEasing","isInitialized","MSPointerEvent","PerfectScrollbar$1","userSettings","isNegativeScroll","originalScrollLeft","EventManager","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","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","PerfectScrollbar","_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","autohide","stacking","appendToBody","BSAlert","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","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_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","format24","headId","inline","invalidLabel","modalId","okLabel","overflowHidden","pickerId","readOnly","showClearBtn","switchHoursToMinutesOnClick","iconClass","withIcon","pmLabel","amLabel","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","dataWithIcon","dataToggle","customIcon","_checkToggleButton","inputFormatShow","inputFormat","elementToggle","toggleElement","_hour","_minutes","_wrapper","_hand","_timeoutInterval","_inputValue","_scrollBar","_animations","_isHours","_isMinutes","_isMouseMove","_isInner","_objWithDataOnChange","zero","hoursFormat","_amOrPm","_listenToUserInput","_handleOpen","_listenToToggleKeydown","_removeModal","_appendToggleButton","toggleButton","getToggleButtonTemplate","_getDomElements","_clock","_clockInner","_handlerMaxMinHoursOptions","maxHour","minHour","maxFormat","minFormat","_isMouseOnInnerClock","maxHourDegrees","minHourDegrees","_handleKeyboardEvents","innerTips","nextHourTip","numberToAdd","nextHour","currentHour","_convertHourToNumber","innerText","innerTip","parentElement","minInnerHourDegrees","maxInnerHourDegrees","_handle24FormatMouseEvents","_handleKeyboard","hoursView","innerHoursExist","allTipsMinutes","allTipsHours","allInnerTips","hourTime","_makeHourDegrees","hourObjDegrees","minHourMinutes","minObjDegrees","_makeMinutesDegrees","addMinDegrees","innerHourDegrees","_makeInnerHoursDegrees","innerHour","cancelBtn","_setHourOrMinute","_toggleClassActive","_toggleBackgroundColorCircle","_setActiveClassToTipsOnOpen","_addActiveClassToTip","_setTipsAndTimesDependOnInputValue","rotateDegrees","fixForInput","checkInputValue","getTimepickerTemplate","_toggleBackdropAnimation","_appendTimes","_handleSwitchTimeMode","_handleOkButton","_handleClose","_handleHoverInlineBtn","_handleDocumentClickInline","_handleInlineClicks","_handleSwitchHourMinute","_handleClockClick","selectedHour","minuteNumber","countMinutes","countHours","incrementHours","counteredNumber","incrementMinutes","addHours","addMinutes","subHours","subMinutes","_clearAsyncs","_clearAndSetThisInterval","addHoursOrAddMinutes","isEventTypeMousedownOrTouchstart","isHourBtnFocused","isMinuteBtnFocused","isBodyFocused","runRemoveFunction","_toggleAmPm","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","submitBtn","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","compareDates","date1","date2","isSameDate","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","dayNumber","inlineContent","createMainContent","modalContent","headerTemplate","createCustomHeader","weekdaysShort","monthsShort","createHeader","weekdaysFull","headerTemplateModifier","replaceAll","mainContentTemplate","createControls","createViewTemplate","okBtn","okBtnLabel","okBtnText","cancelButton","cancelBtnLabel","cancelBtnText","clearButton","clearBtnLabel","clearBtnText","removeClearBtn","removeCancelBtn","removeOkBtn","createFooter","viewTemplate","createDayViewTemplate","createMonthViewTemplate","createYearViewTemplate","switchToMultiYearViewLabel","monthsFull","prevMonthLabel","nextMonthLabel","headerDate","dates","previousMonth","nextMonth","firstDay","firstDayIndex","startDay","sundayIndex","getFirstDayOfWeek","daysInMonth","daysInPreviousMonth","daysInWeek","isCurrentMonth","isSelected","isToday","daysLeft","getDatesArray","weekdaysNarrow","dayLabel","monthsRow","getMonthsArray","monthIndex","activeYear","yearsOffset","yearsRow","getYearsArray","YEARS_IN_VIEW","EVENT_OPEN","EVENT_VIEW_CHANGED","nextYearLabel","prevYearLabel","nextMultiYearLabel","prevMultiYearLabel","switchToDayViewLabel","startDate","disableToggleButton","disableInput","confirmDateOnSelect","Datepicker","_input","_activeDate","_selectedDate","_selectedYear","_selectedMonth","_headerDate","_headerYear","_headerMonth","_view","_isOpen","disableToggle","activeCell","_getActiveDayCell","_getActiveMonthCell","_getActiveYearCell","activeDay","activeMonth","viewChangeButton","previousButton","nextButton","okButton","datesContainer","sortedWeekdaysNarrow","_getNewDaysOrderArray","_listenToToggleClick","openEvent","_setInitialDate","getBackdropTemplate","_openDropdown","_openModal","_listenToDateSelection","_addControlsListeners","_updateControlsDisabledState","_listenToEscapeClick","_listenToKeyboardNavigation","_listenToDatesContainerFocus","_listenToDatesContainerBlur","_asyncFocusDatesContainer","_updateViewControlsAndAttributes","_listenToOutsideClick","_handleDateSelection","cell","mdbDate","_pickDay","mdbMonth","mdbYear","_pickMonth","_pickYear","_updateHeaderDate","monthNames","dayNames","headerDateEl","datepickerHeaderContainer","nextYears","nextYear","previousYears","previousYear","_changeView","_listenToFooterButtonsClick","handleOk","handleCancel","handleClear","isContainerContent","_focusActiveCell","_removeCurrentFocusStyles","_handleDaysViewKeydown","_handleMonthsViewKeydown","_handleYearsViewKeydown","oldActiveDate","previousActiveCell","_selectDate","_removeHighlightFromCell","cells","_selectMonth","cellYear","cellMonth","_selectYear","closeEvent","_removeDatepickerListeners","_closeDropdown","_closeModal","datepicker","_removeFocusTrap","_removePicker","_removeInputAndToggleListeners","generatedToggleButton","_confirmSelection","_removeCurrentSelectionStyles","_addSelectedStyles","_asyncChangeView","_removeSelectedStyles","formatDate","currentSelected","currentFocused","_addLeadingZero","ddd","dddd","mm","mmm","mmmm","yy","yyyy","preformatted","formatted","datePart","newDate","isNextDateDisabled","isPreviousDateDisabled","delimeters","_getDelimeters","_parseDate","delimeterPattern","regExp","dateParts","formatParts","isMonthString","datesArray","monthsNames","getMonthNumberByMonthName","monthValue","monthLabels","monthLabel","EVENT_CANCEL","EVENT_CONFIRM","popconfirmMode","message","cancelText","okText","okClass","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","pagination","rowsTemplate","checkbox","rowIndex","innerRow","column","fixed","fixedOffset","field","generateRows","columnsTemplate","generateColumns","entriesOptions","fullPagination","rowsText","allText","paginationTemplate","paginate","activePage","firstVisibleEntry","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","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","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","_selectAllId","_debounceTimeoutId","_dropdownHeight","_fakeValue","_isFakeValueActive","_customContent","_toggleButton","_elementToggle","_inputEl","_dropdownContainer","_selectAllOption","_mutationObserver","_addMutationObserver","filterInput","hasSelectAll","hasSelection","_createOptionObject","optionsToRender","nestedOption","groupDisabled","_getNavigationOptions","availableOptions","_renderMaterialWrapper","containerSelector","_initOutlineInput","_setDefaultSelections","_updateInputValue","_appendFakeValue","_updateFakeLabelPosition","_updateLabelPosition","_updateClearButtonVisibility","_bindComponentEvents","_createSelectAllOption","_setFirstActiveOption","formOutline","role","multiselectable","validFeedBackText","invalidFeedBackText","clearBtn","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","_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","selectionValue","_selectByValue","correspondingOption","CLASS_DATATABLE","CLASS_FIXED_CELL","SELECTOR_CELL","SELECTOR_SORT_ICON","SELECTOR_ROW","SELECTOR_ROW_CHECKBOX","EVENT_RENDER","EVENT_ROW_CLICKED","EVENT_UPDATE","EVENT_VALUE_CHANGED_SELECT","bordered","borderless","clickableRows","sm","sortField","sortOrder","fixedHeader","striped","ofText","forceSort","TYPE_COLUMN_FIELDS","columnIndex","DEFAUL_COLUMN","Datatable","_getOptions","_sortReverse","_activePage","_search","_searchColumn","_paginationLeft","_paginationRight","_paginationStart","_paginationEnd","_select","_selectInstance","_selected","_checkboxes","_headerCheckbox","_rows","_getRows","_columns","_getColumns","_tableId","_hasFixedColumns","output","searchResult","search","computedRows","fieldA","fieldB","_optionToLowerCase","pages","navigationText","classNames","tableOptions","_clearClassList","_performSort","_removeEventListeners","_toggleDisableState","_renderRows","_setActiveSortIcon","setActivePage","_changeActivePage","_emitSelectEvent","selectedRows","selectedIndexes","headerRow","_getCSSValue","entriesOptionsAsArray","_setActiveRows","_setEntries","_setSelected","_setClassNames","_renderTable","_setupPagination","_setupEditable","_setupClickableRows","_setupSelectable","_setupScroll","_setupSort","_updateRow","datatableBody","headers","zIndex","_toggleSelectAll","_toggleSelectRow","_setupPaginationSelect","editable","userTable","_formatCells","columnsMap","rowsData","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","prototypeAccessors","this$1","ref","processScrollDiff$1","changedTouches","MDB_NAME","PS_NAME","EVENTS","ps","PerfectScrollbars","perfectScrollbar","removeEvent","CLASS_SPINNER","backdropOpacity","loader","loadingIcon","loadingText","backdropID","parentSelector","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","numberOfRanges","orientation","startValues","MultiRangeSlider","_mousemove","hands","connect","leftConnectRect","handsNoActive","hand","handActive","activeTooltip","activeTooltipValue","_setClassHorizontalOrVertical","_setRangeConnectsElement","_setRangeHandleElements","_setTransofrmationOnStart","_handleClickEventOnHand","_handleEndMoveEventDocument","_handleClickOnRange","_setTooltipToHand","_handleMoveEvent","_handleEndMoveEvent","handActiveHandle","handActiveTranslation","handleDataHandle","handleDataTranslate","_handleMultiValuesOnRange","_handlePadding","_setMovingTooltipEvent","percents","CLASSNAME_DATEPICKER","CLASSNAME_TIMEPICKER","CLASSNAME_INVALID_FEEDBACK","CLASSNAME_IS_INVALID","SELECTOR_TIMEPICKER","SELECTOR_DATEPICKER","SELECTOR_TOGGLE_BUTTON","SELECTOR_INVALID_FEEDBACK","EVENT_CLOSE_DATEPICKER","EVENT_VALUE_CHANGED_TIMEPICKER","BUTTONS_WRAPPER","appendValidationInfo","defaultDate","timepicker","showFormat","Datetimepicker","_timepicker","_datepicker","_dateValue","_timeValue","_validationInfo","_format","_cancel","_openDatePicker","_handleInput","_removeTimePicker","_removeDatepicker","tempOptions","_addDatepicker","_addTimePicker","_disableInput","_setInitialDefaultInput","_appendValidationInfo","_applyFormatPlaceholder","_handleTimepickerDisablePast","_handleTimepickerDisableFuture","DATEPICKER_WRAPPER","datepickerOptions","TIMEPICKER_WRAPPER","timepickerOptions","_addIconButtons","headerTime","_enableOrDisableToggleButton","_listenToCancelClick","DATEPICKER_CANCEL_BTN","dateTimeSplited","dateDelimeters","inputFirstValue","inputSecondValue","parseDate","isInputValid","_removeInvalidClass","_addInvalidClass","nextSibling","allInvalid","_openDropdownDate","_openTimePicker","CLOCK_BTN","_handleCancelButton","CANCEL_BTN","_openDropdownTime","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,160]}