(element: E): boolean {\n if (typeof boundary === 'string' && element !== null) {\n if (element.matches(boundary)) {\n return true;\n }\n }\n return false;\n }\n function match(parent: P): Nullable {\n if (parent !== null && parent.parentElement !== null && !atBoundary(parent)) {\n for (const child of parent.parentElement.querySelectorAll(query)) {\n if (child !== null) {\n return child;\n }\n }\n return match(parent.parentElement.parentElement);\n }\n return null;\n }\n return match(base);\n}\n\n/**\n * Helper for creating HTML elements.\n *\n * @param tag HTML element type.\n * @param properties Properties/attributes to apply to the element.\n * @param classes CSS classes to apply to the element.\n * @param children Child elements.\n */\nexport function createElement<\n T extends keyof HTMLElementTagNameMap,\n C extends HTMLElement = HTMLElement\n>(\n tag: T,\n properties: InferredProps,\n classes: string[],\n children: C[] = [],\n): HTMLElementTagNameMap[T] {\n // Create the base element.\n const element = document.createElement(tag);\n\n for (const k of Object.keys(properties)) {\n // Add each property to the element.\n const key = k as keyof HTMLElementProperties;\n const value = properties[key];\n if (key in element) {\n element[key] = value;\n }\n }\n // Add each CSS class to the element's class list.\n element.classList.add(...classes);\n\n for (const child of children) {\n // Add each child element to the base element.\n element.appendChild(child);\n }\n return element as HTMLElementTagNameMap[T];\n}\n\n/**\n * Convert Celsius to Fahrenheit, for NAPALM temperature sensors.\n *\n * @param celsius Degrees in Celsius.\n * @returns Degrees in Fahrenheit.\n */\nexport function cToF(celsius: number): number {\n return celsius * (9 / 5) + 32;\n}\n", "import { getElements, scrollTo, findFirstAdjacent, isTruthy } from './util';\n\ntype ShowHideMap = {\n default: { hide: string[]; show: string[] };\n [k: string]: { hide: string[]; show: string[] };\n};\n\n/**\n * Handle bulk add/edit/rename form actions.\n *\n * @param event Click Event\n */\nfunction handleFormActionClick(event: Event): void {\n event.preventDefault();\n const element = event.currentTarget as HTMLElement;\n if (element !== null) {\n const form = findFirstAdjacent(element, 'form');\n const href = element.getAttribute('href');\n if (form !== null && isTruthy(href)) {\n form.setAttribute('action', href);\n form.submit();\n }\n }\n}\n\n/**\n * Initialize bulk form action links.\n */\nfunction initFormActions() {\n for (const element of getElements('a.formaction')) {\n element.addEventListener('click', handleFormActionClick);\n }\n}\n\n/**\n * Get form data from a form element and transform it into a body usable by fetch.\n *\n * @param element Form element\n * @returns Fetch body\n */\nexport function getFormData(element: HTMLFormElement): URLSearchParams {\n const formData = new FormData(element);\n const body = new URLSearchParams();\n for (const [k, v] of formData) {\n body.append(k, v as string);\n }\n return body;\n}\n\n/**\n * Set the value of the number input field based on the selection of the dropdown.\n */\nfunction initSpeedSelector(): void {\n for (const element of getElements('a.set_speed')) {\n if (element !== null) {\n function handleClick(event: Event) {\n // Don't reload the page (due to href=\"#\").\n event.preventDefault();\n // Get the value of the `data` attribute on the dropdown option.\n const value = element.getAttribute('data');\n // Find the input element referenced by the dropdown element.\n const input = document.getElementById(element.target) as Nullable;\n if (input !== null && value !== null) {\n // Set the value of the input field to the `data` attribute's value.\n input.value = value;\n }\n }\n element.addEventListener('click', handleClick);\n }\n }\n}\n\nfunction handleFormSubmit(event: Event, form: HTMLFormElement): void {\n // Track the names of each invalid field.\n const invalids = new Set();\n\n for (const element of form.querySelectorAll('*[name]')) {\n if (!element.validity.valid) {\n invalids.add(element.name);\n\n // If the field is invalid, but contains the .is-valid class, remove it.\n if (element.classList.contains('is-valid')) {\n element.classList.remove('is-valid');\n }\n // If the field is invalid, but doesn't contain the .is-invalid class, add it.\n if (!element.classList.contains('is-invalid')) {\n element.classList.add('is-invalid');\n }\n } else {\n // If the field is valid, but contains the .is-invalid class, remove it.\n if (element.classList.contains('is-invalid')) {\n element.classList.remove('is-invalid');\n }\n // If the field is valid, but doesn't contain the .is-valid class, add it.\n if (!element.classList.contains('is-valid')) {\n element.classList.add('is-valid');\n }\n }\n }\n\n if (invalids.size !== 0) {\n // If there are invalid fields, pick the first field and scroll to it.\n const firstInvalid = form.elements.namedItem(Array.from(invalids)[0]) as Element;\n scrollTo(firstInvalid);\n\n // If the form has invalid fields, don't submit it.\n event.preventDefault();\n }\n}\n\n/**\n * Attach an event listener to each form's submitter (button[type=submit]). When called, the\n * callback checks the validity of each form field and adds the appropriate Bootstrap CSS class\n * based on the field's validity.\n */\nfunction initFormElements() {\n for (const form of getElements('form')) {\n // Find each of the form's submitters. Most object edit forms have a \"Create\" and\n // a \"Create & Add\", so we need to add a listener to both.\n const submitters = form.querySelectorAll('button[type=submit]');\n\n for (const submitter of submitters) {\n // Add the event listener to each submitter.\n submitter.addEventListener('click', event => handleFormSubmit(event, form));\n }\n }\n}\n\n/**\n * Move selected options of a select element up in order.\n *\n * Adapted from:\n * @see https://www.tomred.net/css-html-js/reorder-option-elements-of-an-html-select.html\n * @param element Select Element\n */\nfunction moveOptionUp(element: HTMLSelectElement): void {\n const options = Array.from(element.options);\n for (let i = 1; i < options.length; i++) {\n let option = options[i];\n if (option.selected) {\n element.removeChild(option);\n element.insertBefore(option, element.options[i - 1]);\n }\n }\n}\n\n/**\n * Move selected options of a select element down in order.\n *\n * Adapted from:\n * @see https://www.tomred.net/css-html-js/reorder-option-elements-of-an-html-select.html\n * @param element Select Element\n */\nfunction moveOptionDown(element: HTMLSelectElement): void {\n const options = Array.from(element.options);\n for (let i = options.length - 2; i >= 0; i--) {\n let option = options[i];\n if (option.selected) {\n let next = element.options[i + 1];\n option = element.removeChild(option);\n next = element.replaceChild(option, next);\n element.insertBefore(next, option);\n }\n }\n}\n\n/**\n * Initialize move up/down buttons.\n */\nfunction initMoveButtons() {\n for (const button of getElements('#move-option-up')) {\n const target = button.getAttribute('data-target');\n if (target !== null) {\n for (const select of getElements(`#${target}`)) {\n button.addEventListener('click', () => moveOptionUp(select));\n }\n }\n }\n for (const button of getElements('#move-option-down')) {\n const target = button.getAttribute('data-target');\n if (target !== null) {\n for (const select of getElements(`#${target}`)) {\n button.addEventListener('click', () => moveOptionDown(select));\n }\n }\n }\n}\n\n/**\n * Mapping of scope names to arrays of object types whose fields should be hidden or shown when\n * the scope type (key) is selected.\n *\n * For example, if `region` is the scope type, the fields with IDs listed in\n * showHideMap.region.hide should be hidden, and the fields with IDs listed in\n * showHideMap.region.show should be shown.\n */\nconst showHideMap: ShowHideMap = {\n region: {\n hide: ['id_sitegroup', 'id_site', 'id_location', 'id_rack', 'id_clustergroup', 'id_cluster'],\n show: ['id_region'],\n },\n 'site group': {\n hide: ['id_region', 'id_site', 'id_location', 'id_rack', 'id_clustergroup', 'id_cluster'],\n show: ['id_sitegroup'],\n },\n site: {\n hide: ['id_location', 'id_rack', 'id_clustergroup', 'id_cluster'],\n show: ['id_region', 'id_sitegroup', 'id_site'],\n },\n location: {\n hide: ['id_rack', 'id_clustergroup', 'id_cluster'],\n show: ['id_region', 'id_sitegroup', 'id_site', 'id_location'],\n },\n rack: {\n hide: ['id_clustergroup', 'id_cluster'],\n show: ['id_region', 'id_sitegroup', 'id_site', 'id_location', 'id_rack'],\n },\n 'cluster group': {\n hide: ['id_region', 'id_sitegroup', 'id_site', 'id_location', 'id_rack', 'id_cluster'],\n show: ['id_clustergroup'],\n },\n cluster: {\n hide: ['id_region', 'id_sitegroup', 'id_site', 'id_location', 'id_rack'],\n show: ['id_clustergroup', 'id_cluster'],\n },\n default: {\n hide: [\n 'id_region',\n 'id_sitegroup',\n 'id_site',\n 'id_location',\n 'id_rack',\n 'id_clustergroup',\n 'id_cluster',\n ],\n show: [],\n },\n};\n\n/**\n * Toggle visibility of a given element's parent.\n * @param query CSS Query.\n * @param action Show or Hide the Parent.\n */\nfunction toggleParentVisibility(query: string, action: 'show' | 'hide') {\n for (const element of getElements(query)) {\n if (action === 'show') {\n element.parentElement?.classList.remove('d-none', 'invisible');\n } else {\n element.parentElement?.classList.add('d-none', 'invisible');\n }\n }\n}\n\n/**\n * Handle changes to the Scope Type field.\n */\nfunction handleScopeChange(event: Event) {\n const element = event.currentTarget as HTMLSelectElement;\n // Scope type's innerText looks something like `DCIM > region`.\n const scopeType = element.options[element.selectedIndex].innerText.toLowerCase();\n\n for (const [scope, fields] of Object.entries(showHideMap)) {\n // If the scope type ends with the specified scope, toggle its field visibility according to\n // the show/hide values.\n if (scopeType.endsWith(scope)) {\n for (const field of fields.hide) {\n toggleParentVisibility(`#${field}`, 'hide');\n }\n for (const field of fields.show) {\n toggleParentVisibility(`#${field}`, 'show');\n }\n // Stop on first match.\n break;\n } else {\n // Otherwise, hide all fields.\n for (const field of showHideMap.default.hide) {\n toggleParentVisibility(`#${field}`, 'hide');\n }\n }\n }\n}\n\n/**\n * Initialize scope type select event listeners.\n */\nfunction initScopeSelector() {\n for (const element of getElements('#id_scope_type')) {\n element.addEventListener('change', handleScopeChange);\n }\n}\n\nexport function initForms() {\n for (const func of [\n initFormElements,\n initFormActions,\n initMoveButtons,\n initSpeedSelector,\n initScopeSelector,\n ]) {\n func();\n }\n}\n", "import { Modal, Tab, Toast, Tooltip } from 'bootstrap';\nimport Masonry from 'masonry-layout';\nimport { getElements } from './util';\n\ntype ToastLevel = 'danger' | 'warning' | 'success' | 'info';\n\n/**\n * Initialize masonry-layout for homepage (or any other masonry layout cards).\n */\nfunction initMasonry(): void {\n for (const grid of getElements('.masonry')) {\n new Masonry(grid, {\n itemSelector: '.masonry-item',\n percentPosition: true,\n });\n }\n}\n\nfunction initTooltips() {\n for (const tooltip of getElements('[data-bs-toggle=\"tooltip\"]')) {\n new Tooltip(tooltip, { container: 'body' });\n }\n}\n\nfunction initModals() {\n for (const modal of getElements('[data-bs-toggle=\"modal\"]')) {\n new Modal(modal);\n }\n}\n\nexport function createToast(\n level: ToastLevel,\n title: string,\n message: string,\n extra?: string,\n): Toast {\n let iconName = 'bi-exclamation-triangle-fill';\n switch (level) {\n case 'warning':\n iconName = 'bi-exclamation-triangle-fill';\n case 'success':\n iconName = 'bi-check-circle-fill';\n case 'info':\n iconName = 'bi-info-circle-fill';\n case 'danger':\n iconName = 'bi-exclamation-triangle-fill';\n }\n\n const container = document.createElement('div');\n container.setAttribute('class', 'toast-container position-fixed bottom-0 end-0 m-3');\n\n const main = document.createElement('div');\n main.setAttribute('class', `toast bg-${level}`);\n main.setAttribute('role', 'alert');\n main.setAttribute('aria-live', 'assertive');\n main.setAttribute('aria-atomic', 'true');\n\n const header = document.createElement('div');\n header.setAttribute('class', `toast-header bg-${level} text-body`);\n\n const icon = document.createElement('i');\n icon.setAttribute('class', `bi ${iconName}`);\n\n const titleElement = document.createElement('strong');\n titleElement.setAttribute('class', 'me-auto ms-1');\n titleElement.innerText = title;\n\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.setAttribute('class', 'btn-close');\n button.setAttribute('data-bs-dismiss', 'toast');\n button.setAttribute('aria-label', 'Close');\n\n const body = document.createElement('div');\n body.setAttribute('class', 'toast-body');\n\n header.appendChild(icon);\n header.appendChild(titleElement);\n\n if (typeof extra !== 'undefined') {\n const extraElement = document.createElement('small');\n extraElement.setAttribute('class', 'text-muted');\n header.appendChild(extraElement);\n }\n\n header.appendChild(button);\n\n body.innerText = message.trim();\n\n main.appendChild(header);\n main.appendChild(body);\n container.appendChild(main);\n document.body.appendChild(container);\n\n const toast = new Toast(main);\n return toast;\n}\n\n/**\n * Open the tab specified in the URL. For example, /dcim/device-types/1/#tab_frontports will\n * change the open tab to the Front Ports tab.\n */\nfunction initTabs() {\n const { hash } = location;\n if (hash && hash.match(/^\\#tab_.+$/)) {\n // The tab element will have a data-bs-target attribute with a value of the object type for\n // the corresponding tab. Once we drop the `tab_` prefix, the hash will match the target\n // element's data-bs-target value. For example, `#tab_frontports` becomes `#frontports`.\n const target = hash.replace('tab_', '');\n for (const element of getElements(`ul.nav.nav-tabs .nav-link[data-bs-target=\"${target}\"]`)) {\n // Instantiate a Bootstrap tab instance.\n // See https://getbootstrap.com/docs/5.0/components/navs-tabs/#javascript-behavior\n const tab = new Tab(element);\n // Show the tab.\n tab.show();\n }\n }\n}\n\n/**\n * When accordion buttons are clicked, add a class to the parent accordion item. This is used\n * for the side navigation to apply a box-shadow when the section is open.\n */\nfunction initSidebarAccordions(): void {\n const items = document.querySelectorAll('.sidebar .accordion-item');\n\n function handleToggle(thisItem: HTMLDivElement) {\n for (const item of items) {\n if (item !== thisItem) {\n // Remove the is-open class from all other accordion items, so that if one is clicked while\n // another is open, the shadow is removed.\n item.classList.remove('is-open');\n } else {\n item.classList.toggle('is-open');\n }\n }\n }\n\n for (const item of items) {\n for (const button of item.querySelectorAll('.accordion-button')) {\n button.addEventListener('click', () => {\n handleToggle(item);\n });\n }\n }\n}\n\n/**\n * Enable any defined Bootstrap Tooltips.\n *\n * @see https://getbootstrap.com/docs/5.0/components/tooltips\n */\nexport function initBootstrap(): void {\n for (const func of [initTooltips, initModals, initMasonry, initTabs, initSidebarAccordions]) {\n func();\n }\n}\n", "import debounce from 'just-debounce-it';\nimport { getElements, getRowValues, findFirstAdjacent, isTruthy } from './util';\n\n/**\n * Change the display value and hidden input values of the search filter based on dropdown\n * selection.\n *\n * @param event \"click\" event for each dropdown item.\n * @param button Each dropdown item element.\n */\nfunction handleSearchDropdownClick(event: Event, button: HTMLButtonElement) {\n const dropdown = event.currentTarget as HTMLButtonElement;\n const selectedValue = findFirstAdjacent(dropdown, 'span.search-obj-selected');\n const selectedType = findFirstAdjacent(dropdown, 'input.search-obj-type');\n const searchValue = dropdown.getAttribute('data-search-value');\n let selected = '' as string;\n\n if (selectedValue !== null && selectedType !== null) {\n if (isTruthy(searchValue) && selected !== searchValue) {\n selected = searchValue;\n selectedValue.innerHTML = button.textContent ?? 'Error';\n selectedType.value = searchValue;\n } else {\n selected = '';\n selectedValue.innerHTML = 'All Objects';\n selectedType.value = '';\n }\n }\n}\n\n/**\n * Initialize Search Bar Elements.\n */\nfunction initSearchBar() {\n for (const dropdown of getElements(\n 'div.search-container ul.search-obj-selector',\n )) {\n for (const button of dropdown.querySelectorAll(\n 'li > button.dropdown-item',\n )) {\n button.addEventListener('click', event => handleSearchDropdownClick(event, button));\n }\n }\n}\n\n/**\n * Initialize Interface Table Filter Elements.\n */\nfunction initInterfaceFilter() {\n for (const input of getElements('input.interface-filter')) {\n const table = findFirstAdjacent(input, 'table');\n const rows = Array.from(\n table?.querySelectorAll('tbody > tr') ?? [],\n ).filter(r => r !== null);\n /**\n * Filter on-page table by input text.\n */\n function handleInput(event: Event) {\n const target = event.target as HTMLInputElement;\n // Create a regex pattern from the input search text to match against.\n const filter = new RegExp(target.value.toLowerCase().trim());\n\n // Each row represents an interface and its attributes.\n for (const row of rows) {\n // Find the row's checkbox and deselect it, so that it is not accidentally included in form\n // submissions.\n const checkBox = row.querySelector('input[type=\"checkbox\"][name=\"pk\"]');\n if (checkBox !== null) {\n checkBox.checked = false;\n }\n\n // The data-name attribute's value contains the interface name.\n const name = row.getAttribute('data-name');\n\n if (typeof name === 'string') {\n if (filter.test(name.toLowerCase().trim())) {\n // If this row matches the search pattern, but is already hidden, unhide it.\n if (row.classList.contains('d-none')) {\n row.classList.remove('d-none');\n }\n } else {\n // If this row doesn't match the search pattern, hide it.\n row.classList.add('d-none');\n }\n }\n }\n }\n input.addEventListener('keyup', debounce(handleInput, 300));\n }\n}\n\nfunction initTableFilter() {\n for (const input of getElements('input.object-filter')) {\n // Find the first adjacent table element.\n const table = findFirstAdjacent(input, 'table');\n\n // Build a valid array of
elements that are children of the adjacent table.\n const rows = Array.from(\n table?.querySelectorAll('tbody > tr') ?? [],\n ).filter(r => r !== null);\n\n /**\n * Filter table rows by matched input text.\n * @param event\n */\n function handleInput(event: Event) {\n const target = event.target as HTMLInputElement;\n\n // Create a regex pattern from the input search text to match against.\n const filter = new RegExp(target.value.toLowerCase().trim());\n\n for (const row of rows) {\n // Find the row's checkbox and deselect it, so that it is not accidentally included in form\n // submissions.\n const checkBox = row.querySelector('input[type=\"checkbox\"][name=\"pk\"]');\n if (checkBox !== null) {\n checkBox.checked = false;\n }\n // Iterate through each row's cell values\n for (const value of getRowValues(row)) {\n if (filter.test(value.toLowerCase())) {\n // If this row matches the search pattern, but is already hidden, unhide it and stop\n // iterating through the rest of the cells.\n row.classList.remove('d-none');\n break;\n } else {\n // If none of the cells in this row match the search pattern, hide the row.\n row.classList.add('d-none');\n }\n }\n }\n }\n input.addEventListener('keyup', debounce(handleInput, 300));\n }\n}\n\nexport function initSearch() {\n for (const func of [initSearchBar, initTableFilter, initInterfaceFilter]) {\n func();\n }\n}\n", "import queryString from 'query-string';\nimport { readableColor } from 'color2k';\nimport SlimSelect from 'slim-select';\nimport { createToast } from '../bs';\nimport { hasUrl, hasExclusions } from './util';\nimport {\n isTruthy,\n hasError,\n getElement,\n getApiData,\n isApiError,\n getElements,\n findFirstAdjacent,\n} from '../util';\n\nimport type { Option } from 'slim-select/dist/data';\n\ntype QueryFilter = Map;\n\n// Various one-off patterns to replace in query param keys.\nconst REPLACE_PATTERNS = [\n // Don't query `termination_a_device=1`, but rather `device=1`.\n [new RegExp(/termination_(a|b)_(.+)/g), '$2_id'],\n // A tenant's group relationship field is `group`, but the field name is `tenant_group`.\n [new RegExp(/tenant_(group)/g), '$1_id'],\n // Append `_id` to any fields\n [new RegExp(/^([A-Za-z0-9]+)(_id)?$/g), '$1_id'],\n] as [RegExp, string][];\n\n// Empty placeholder option.\nconst PLACEHOLDER = {\n value: '',\n text: '',\n placeholder: true,\n} as Option;\n\n// Attributes which if truthy should render the option disabled.\nconst DISABLED_ATTRIBUTES = ['occupied'] as string[];\n\n/**\n * Manage a single API-backed select element's state. Each API select element is likely controlled\n * or dynamically updated by one or more other API select (or static select) elements' values.\n */\nclass APISelect {\n /**\n * Base `` DOM element.\n */\n private readonly base: HTMLSelectElement;\n\n /**\n * Form field name.\n */\n public readonly name: string;\n\n /**\n * Form field placeholder.\n */\n public readonly placeholder: string;\n\n /**\n * This element's options come from the server pre-sorted and should not be sorted client-side.\n * Determined by the existence of the `pre-sorted` attribute on the base `` element.\n */\n private readonly preSorted: boolean = false;\n\n /**\n * Event to be dispatched when dependent fields' values change.\n */\n private readonly loadEvent: InstanceType;\n\n /**\n * SlimSelect instance for this element.\n */\n private readonly slim: InstanceType;\n\n /**\n * API query parameters that should be applied to API queries for this field. This will be\n * updated as other dependent fields' values change. This is a mapping of:\n *\n * Form Field Names \u2192 Form Field Values\n *\n * This is/might be different than the query parameters themselves, as the form field names may\n * be different than the object model key names. For example, `tenant_group` would be the field\n * name, but `group` would be the query parameter. Query parameters themselves are tracked in\n * `queryParams`.\n */\n private readonly filterParams: QueryFilter = new Map();\n\n /**\n * Post-parsed URL query parameters for API queries.\n */\n private readonly queryParams: QueryFilter = new Map();\n\n /**\n * Mapping of URL template key/value pairs. If this element's URL contains Django template tags\n * (e.g., `{{key}}`), `key` will be added to `pathValue` and the `id_key` form element will be\n * tracked for changes. When the `id_key` element's value changes, the new value will be added\n * to this map. For example, if the template key is `rack`, and the `id_rack` field's value is\n * `1`, `pathValues` would be updated to reflect a `\"rack\" => 1` mapping. When the query URL is\n * updated, the URL would change from `/dcim/racks/{{rack}}/` to `/dcim/racks/1/`.\n */\n private readonly pathValues: QueryFilter = new Map();\n\n /**\n * Original API query URL passed via the `data-href` attribute from the server. This is kept so\n * that the URL can be reconstructed as form values change.\n */\n private readonly url: string = '';\n\n /**\n * API query URL. This will be updated dynamically to include any query parameters in `queryParameters`.\n */\n private queryUrl: string = '';\n\n /**\n * This instance's available options.\n */\n private _options: Option[] = [PLACEHOLDER];\n\n /**\n * Array of options values which should be considered disabled or static.\n */\n private disabledOptions: Array = [];\n\n constructor(base: HTMLSelectElement) {\n // Initialize readonly properties.\n this.base = base;\n this.name = base.name;\n\n if (base.getAttribute('pre-sorted') !== null) {\n this.preSorted = true;\n }\n\n if (hasUrl(base)) {\n const url = base.getAttribute('data-url') as string;\n this.url = url;\n this.queryUrl = url;\n }\n\n this.loadEvent = new Event(`netbox.select.onload.${base.name}`);\n this.placeholder = this.getPlaceholder();\n this.disabledOptions = this.getDisabledOptions();\n\n this.slim = new SlimSelect({\n select: this.base,\n allowDeselect: true,\n deselectLabel: ``,\n placeholder: this.placeholder,\n onChange: () => this.handleSlimChange(),\n });\n\n // Initialize API query properties.\n this.getFilteredBy();\n this.getPathKeys();\n\n for (const filter of this.filterParams.keys()) {\n this.updateQueryParams(filter);\n }\n\n for (const filter of this.pathValues.keys()) {\n this.updatePathValues(filter);\n }\n\n this.queryParams.set('brief', true);\n this.queryParams.set('limit', 0);\n this.updateQueryUrl();\n\n // Initialize element styling.\n this.resetClasses();\n this.setSlimStyles();\n\n // Initialize controlling elements.\n this.initResetButton();\n\n // Add dependency event listeners.\n this.addEventListeners();\n\n // Determine if this element is part of collapsible element.\n const collapse = this.base.closest('.content-container .collapse');\n if (collapse !== null) {\n // If this element is part of a collapsible element, only load the data when the\n // collapsible element is shown.\n // See: https://getbootstrap.com/docs/5.0/components/collapse/#events\n collapse.addEventListener('show.bs.collapse', () => this.loadData());\n collapse.addEventListener('hide.bs.collapse', () => this.resetOptions());\n } else {\n // Otherwise, load the data on render.\n Promise.all([this.loadData()]);\n }\n }\n\n /**\n * This instance's available options.\n */\n public get options(): Option[] {\n return this._options;\n }\n\n /**\n * Sort incoming options by label and apply the new options to both the SlimSelect instance and\n * this manager's state. If the `preSorted` attribute exists on the base `` element,\n * the options will *not* be sorted.\n */\n private set options(optionsIn: Option[]) {\n let newOptions = optionsIn;\n if (!this.preSorted) {\n newOptions = optionsIn.sort((a, b) => (a.text.toLowerCase() > b.text.toLowerCase() ? 1 : -1));\n }\n\n this._options = newOptions;\n this.slim.setData(newOptions);\n }\n\n /**\n * Remove all options and reset back to the generic placeholder.\n */\n private resetOptions(): void {\n this.options = [PLACEHOLDER];\n }\n\n /**\n * Add or remove a class to the SlimSelect element to match Bootstrap .form-select:disabled styles.\n */\n public disable(): void {\n if (this.slim.slim.singleSelected !== null) {\n if (!this.slim.slim.singleSelected.container.hasAttribute('disabled')) {\n this.slim.slim.singleSelected.container.setAttribute('disabled', '');\n }\n } else if (this.slim.slim.multiSelected !== null) {\n if (!this.slim.slim.multiSelected.container.hasAttribute('disabled')) {\n this.slim.slim.multiSelected.container.setAttribute('disabled', '');\n }\n }\n }\n\n /**\n * Add or remove a class to the SlimSelect element to match Bootstrap .form-select:disabled styles.\n */\n public enable(): void {\n if (this.slim.slim.singleSelected !== null) {\n if (this.slim.slim.singleSelected.container.hasAttribute('disabled')) {\n this.slim.slim.singleSelected.container.removeAttribute('disabled');\n }\n } else if (this.slim.slim.multiSelected !== null) {\n if (this.slim.slim.multiSelected.container.hasAttribute('disabled')) {\n this.slim.slim.multiSelected.container.removeAttribute('disabled');\n }\n }\n }\n\n /**\n * Add event listeners to this element and its dependencies so that when dependencies change\n * this element's options are updated.\n */\n private addEventListeners(): void {\n // Create a unique iterator of all possible form fields which, when changed, should cause this\n // element to update its API query.\n const dependencies = new Set([...this.filterParams.keys(), ...this.pathValues.keys()]);\n\n for (const dep of dependencies) {\n const filterElement = document.querySelector(`[name=\"${dep}\"]`);\n if (filterElement !== null) {\n // Subscribe to dependency changes.\n filterElement.addEventListener('change', event => this.handleEvent(event));\n }\n // Subscribe to changes dispatched by this state manager.\n this.base.addEventListener(`netbox.select.onload.${dep}`, event => this.handleEvent(event));\n }\n }\n\n /**\n * Load this element's options from the NetBox API.\n */\n private async loadData(): Promise {\n try {\n this.disable();\n await this.getOptions();\n } catch (err) {\n console.error(err);\n } finally {\n this.setOptionStyles();\n this.enable();\n this.base.dispatchEvent(this.loadEvent);\n }\n }\n\n /**\n * Query the NetBox API for this element's options.\n */\n private async getOptions(): Promise {\n if (this.queryUrl.includes(`{{`)) {\n this.options = [PLACEHOLDER];\n return;\n }\n\n // Get all non-placeholder (empty) options' values. If any exist, it means we're editing an\n // existing object. When we fetch options from the API later, we can set any of the options\n // contained in this array to `selected`.\n const selectOptions = Array.from(this.base.options)\n .filter(option => option.selected)\n .map(option => option.getAttribute('value'))\n .filter(isTruthy);\n\n const data = await getApiData(this.queryUrl);\n\n if (hasError(data)) {\n if (isApiError(data)) {\n return this.handleError(data.exception, data.error);\n }\n return this.handleError(`Error Fetching Options for field '${this.name}'`, data.error);\n }\n\n const { results } = data;\n const options = [PLACEHOLDER] as Option[];\n\n for (const result of results) {\n const text = result.display;\n const data = {} as Record;\n const value = result.id.toString();\n let style, selected, disabled;\n\n // Set any primitive k/v pairs as data attributes on each option.\n for (const [k, v] of Object.entries(result)) {\n if (!['id', 'slug'].includes(k) && ['string', 'number', 'boolean'].includes(typeof v)) {\n const key = k.replaceAll('_', '-');\n data[key] = String(v);\n }\n // Set option to disabled if the result contains a matching key and is truthy.\n if (DISABLED_ATTRIBUTES.some(key => key.toLowerCase() === k.toLowerCase())) {\n if (typeof v === 'string' && v.toLowerCase() !== 'false') {\n disabled = true;\n } else if (typeof v === 'boolean' && v === true) {\n disabled = true;\n } else if (typeof v === 'number' && v > 0) {\n disabled = true;\n }\n }\n }\n\n // Set option to disabled if it is contained within the disabled array.\n if (selectOptions.some(option => this.disabledOptions.includes(option))) {\n disabled = true;\n }\n\n // Set pre-selected options.\n if (selectOptions.includes(value)) {\n selected = true;\n // If an option is selected, it can't be disabled. Otherwise, it won't be submitted with\n // the rest of the form, resulting in that field's value being deleting from the object.\n disabled = false;\n }\n\n const option = {\n value,\n text,\n data,\n style,\n selected,\n disabled,\n } as Option;\n\n options.push(option);\n }\n this.options = options;\n }\n\n /**\n * Event handler to be dispatched any time a dependency's value changes. For example, when the\n * value of `tenant_group` changes, `handleEvent` is called to get the current value of\n * `tenant_group` and update the query parameters and API query URL for the `tenant` field.\n */\n private handleEvent(event: Event): void {\n const target = event.target as HTMLSelectElement;\n // Update the element's URL after any changes to a dependency.\n this.updateQueryParams(target.name);\n this.updatePathValues(target.name);\n this.updateQueryUrl();\n // Load new data.\n Promise.all([this.loadData()]);\n }\n\n /**\n * When the API returns an error, show it to the user and reset this element's available options.\n *\n * @param title Error title\n * @param message Error message\n */\n private handleError(title: string, message: string): void {\n createToast('danger', title, message).show();\n this.resetOptions();\n }\n\n /**\n * `change` event callback to be called any time the value of a SlimSelect instance is changed.\n */\n private handleSlimChange(): void {\n const element = this.slim.slim;\n if (element) {\n // Toggle form validation classes when form values change. For example, if the field was\n // invalid and the value has now changed, remove the `.is-invalid` class.\n if (\n element.container.classList.contains('is-invalid') ||\n this.base.classList.contains('is-invalid')\n ) {\n element.container.classList.remove('is-invalid');\n this.base.classList.remove('is-invalid');\n }\n }\n this.base.dispatchEvent(this.loadEvent);\n }\n\n /**\n * Update the API query URL and underlying DOM element's `data-url` attribute.\n */\n private updateQueryUrl(): void {\n // Create new URL query parameters based on the current state of `queryParams` and create an\n // updated API query URL.\n const query = {} as Dict;\n for (const [key, value] of this.queryParams.entries()) {\n query[key] = value;\n }\n\n let url = this.url;\n\n // Replace any Django template variables in the URL with values from `pathValues` if set.\n for (const [key, value] of this.pathValues.entries()) {\n for (const result of this.url.matchAll(new RegExp(`({{${key}}})`, 'g'))) {\n if (isTruthy(value)) {\n url = url.replaceAll(result[1], value.toString());\n }\n }\n }\n const newUrl = queryString.stringifyUrl({ url, query });\n if (this.queryUrl !== newUrl) {\n // Only update the URL if it has changed.\n this.queryUrl = newUrl;\n this.base.setAttribute('data-url', newUrl);\n }\n }\n\n /**\n * Update an element's API URL based on the value of another element on which this element\n * relies.\n *\n * @param id DOM ID of the other element.\n */\n private updateQueryParams(id: string): void {\n let key = id.replaceAll(/^id_/gi, '');\n // Find the element dependency.\n const element = getElement(`id_${key}`);\n if (element !== null) {\n // If the dependency has a value, parse the dependency's name (form key) for any\n // required replacements.\n for (const [pattern, replacement] of REPLACE_PATTERNS) {\n if (key.match(pattern)) {\n key = key.replaceAll(pattern, replacement);\n break;\n }\n }\n\n if (isTruthy(element.value)) {\n // If the field has a value, add it to the map.\n if (this.filterParams.has(id)) {\n // If this element is tracking the neighbor element, add its value to the map.\n this.queryParams.set(key, element.value);\n }\n } else {\n // Otherwise, delete it (we don't want to send an empty query like `?site_id=`)\n this.queryParams.delete(key);\n }\n }\n }\n\n /**\n * Update `pathValues` based on the form value of another element.\n *\n * @param id DOM ID of the other element.\n */\n private updatePathValues(id: string): void {\n let key = id.replaceAll(/^id_/gi, '');\n const element = getElement(`id_${key}`);\n if (element !== null) {\n // If this element's URL contains Django template tags ({{), replace the template tag\n // with the the dependency's value. For example, if the dependency is the `rack` field,\n // and the `rack` field's value is `1`, this element's URL would change from\n // `/dcim/racks/{{rack}}/` to `/dcim/racks/1/`.\n const hasReplacement =\n this.url.includes(`{{`) && Boolean(this.url.match(new RegExp(`({{(${id})}})`, 'g')));\n\n if (hasReplacement) {\n if (isTruthy(element.value)) {\n // If the field has a value, add it to the map.\n this.pathValues.set(id, element.value);\n } else {\n // Otherwise, reset the value.\n this.pathValues.set(id, '');\n }\n }\n }\n }\n\n /**\n * Find the select element's placeholder text/label.\n */\n private getPlaceholder(): string {\n let placeholder = this.name;\n if (this.base.id) {\n const label = document.querySelector(`label[for=${this.base.id}]`) as HTMLLabelElement;\n // Set the placeholder text to the label value, if it exists.\n if (label !== null) {\n placeholder = `Select ${label.innerText.trim()}`;\n }\n }\n return placeholder;\n }\n\n /**\n * Get this element's disabled options by value. The `data-query-param-exclude` attribute will\n * contain a stringified JSON array of option values.\n */\n private getDisabledOptions(): string[] {\n let disabledOptions = [] as string[];\n if (hasExclusions(this.base)) {\n try {\n const exclusions = JSON.parse(\n this.base.getAttribute('data-query-param-exclude') ?? '[]',\n ) as string[];\n disabledOptions = [...disabledOptions, ...exclusions];\n } catch (err) {\n console.group(\n `Unable to parse data-query-param-exclude value on select element '${this.name}'`,\n );\n console.warn(err);\n console.groupEnd();\n }\n }\n return disabledOptions;\n }\n\n /**\n * Parse the `data-url` attribute to add any Django template variables to `pathValues` as keys\n * with empty values. As those keys' corresponding form fields' values change, `pathValues` will\n * be updated to reflect the new value.\n */\n private getPathKeys() {\n for (const result of this.url.matchAll(new RegExp(`{{(.+)}}`, 'g'))) {\n this.pathValues.set(result[1], '');\n }\n }\n\n /**\n * Determine if a select element should be filtered by the value of another select element.\n *\n * Looks for the DOM attribute `data-query-param-`, which would look like:\n * `[\"$\"]`\n *\n * If the attribute exists, parse out the raw value. In the above example, this would be `name`.\n */\n private getFilteredBy(): void {\n const pattern = new RegExp(/\\[|\\]|\"|\\$/g);\n const keyPattern = new RegExp(/data-query-param-/g);\n\n // Extract data attributes.\n const keys = Object.values(this.base.attributes)\n .map(v => v.name)\n .filter(v => v.includes('data'));\n\n for (const key of keys) {\n if (key.match(keyPattern) && key !== 'data-query-param-exclude') {\n const value = this.base.getAttribute(key);\n if (value !== null) {\n try {\n const parsed = JSON.parse(value) as string | string[];\n if (Array.isArray(parsed)) {\n for (const item of parsed) {\n if (item.match(/^\\$.+$/g)) {\n const replaced = item.replaceAll(pattern, '');\n this.filterParams.set(replaced, '');\n } else {\n this.filterParams.set(key.replaceAll(keyPattern, ''), item);\n }\n }\n } else {\n if (parsed.match(/^\\$.+$/g)) {\n const replaced = parsed.replaceAll(pattern, '');\n this.filterParams.set(replaced, '');\n } else {\n this.filterParams.set(key.replaceAll(keyPattern, ''), parsed);\n }\n }\n } catch (err) {\n console.warn(err);\n if (value.match(/^\\$.+$/g)) {\n const replaced = value.replaceAll(pattern, '');\n this.filterParams.set(replaced, '');\n } else {\n this.filterParams.set(key.replaceAll(keyPattern, ''), value);\n }\n }\n }\n }\n }\n }\n\n /**\n * Set the underlying select element to the same size as the SlimSelect instance. This is\n * primarily for built-in HTML form validation (which doesn't really work) but it also makes\n * things feel cleaner in the DOM.\n */\n private setSlimStyles(): void {\n const { width, height } = this.slim.slim.container.getBoundingClientRect();\n this.base.style.opacity = '0';\n this.base.style.width = `${width}px`;\n this.base.style.height = `${height}px`;\n this.base.style.display = 'block';\n this.base.style.position = 'absolute';\n this.base.style.pointerEvents = 'none';\n }\n\n /**\n * Add scoped style elements specific to each SlimSelect option, if the color property exists.\n * As of this writing, this attribute only exist on Tags. The color property is used as the\n * background color, and a foreground color is detected based on the luminosity of the background\n * color.\n */\n private setOptionStyles(): void {\n for (const option of this.options) {\n // Only create style elements for options that contain a color attribute.\n if (\n 'data' in option &&\n 'id' in option &&\n typeof option.data !== 'undefined' &&\n typeof option.id !== 'undefined' &&\n 'color' in option.data\n ) {\n const id = option.id as string;\n const data = option.data as { color: string };\n\n // Create the style element.\n const style = document.createElement('style');\n\n // Append hash to color to make it a valid hex color.\n const bg = `#${data.color}`;\n // Detect the foreground color.\n const fg = readableColor(bg);\n\n // Add a unique identifier to the style element.\n style.setAttribute('data-netbox', id);\n\n // Scope the CSS to apply both the list item and the selected item.\n style.innerHTML = `\n div.ss-values div.ss-value[data-id=\"${id}\"],\n div.ss-list div.ss-option:not(.ss-disabled)[data-id=\"${id}\"]\n {\n background-color: ${bg} !important;\n color: ${fg} !important;\n }\n `\n .replaceAll('\\n', '')\n .trim();\n\n // Add the style element to the DOM.\n document.head.appendChild(style);\n }\n }\n }\n\n /**\n * Remove base element classes from SlimSelect instance.\n */\n private resetClasses(): void {\n const element = this.slim.slim;\n if (element) {\n for (const className of this.base.classList) {\n element.container.classList.remove(className);\n }\n }\n }\n\n /**\n * Initialize any adjacent reset buttons so that when clicked, the instance's selected value is cleared.\n */\n private initResetButton(): void {\n const resetButton = findFirstAdjacent(this.base, 'button[data-reset-select');\n if (resetButton !== null) {\n resetButton.addEventListener('click', () => {\n this.base.value = '';\n if (this.base.multiple) {\n this.slim.setSelected([]);\n } else {\n this.slim.setSelected('');\n }\n });\n }\n }\n}\n\nexport function initApiSelect() {\n for (const select of getElements('.netbox-api-select')) {\n new APISelect(select);\n }\n}\n", "/**\n * A simple guard function:\n *\n * ```js\n * Math.min(Math.max(low, value), high)\n * ```\n */\nfunction guard(low: number, high: number, value: number): number {\n return Math.min(Math.max(low, value), high);\n}\n\nexport default guard;\n", "class ColorError extends Error {\n constructor(color: string) {\n super(`Failed to parse color: \"${color}\"`);\n }\n}\n\nexport default ColorError;\n", "import guard from './guard';\nimport ColorError from './ColorError';\n\n/**\n * Parses a color into red, gree, blue, alpha parts\n *\n * @param color the input color. Can be a RGB, RBGA, HSL, HSLA, or named color\n */\nfunction parseToRgba(color: string): [number, number, number, number] {\n if (typeof color !== 'string') throw new ColorError(color);\n if (color.trim().toLowerCase() === 'transparent') return [0, 0, 0, 0];\n\n let normalizedColor = color.trim();\n normalizedColor = namedColorRegex.test(color) ? nameToHex(color) : color;\n\n const reducedHexMatch = reducedHexRegex.exec(normalizedColor);\n if (reducedHexMatch) {\n const arr = Array.from(reducedHexMatch).slice(1);\n return [\n ...arr.slice(0, 3).map((x) => parseInt(r(x, 2), 16)),\n parseInt(r(arr[3] || 'f', 2), 16) / 255,\n ] as [number, number, number, number];\n }\n\n const hexMatch = hexRegex.exec(normalizedColor);\n if (hexMatch) {\n const arr = Array.from(hexMatch).slice(1);\n return [\n ...arr.slice(0, 3).map((x) => parseInt(x, 16)),\n parseInt(arr[3] || 'ff', 16) / 255,\n ] as [number, number, number, number];\n }\n\n const rgbaMatch = rgbaRegex.exec(normalizedColor);\n if (rgbaMatch) {\n const arr = Array.from(rgbaMatch).slice(1);\n return [\n ...arr.slice(0, 3).map((x) => parseInt(x, 10)),\n parseFloat(arr[3] || '1'),\n ] as [number, number, number, number];\n }\n\n const hslaMatch = hslaRegex.exec(normalizedColor);\n if (hslaMatch) {\n const [h, s, l, a] = Array.from(hslaMatch).slice(1).map(parseFloat);\n if (guard(0, 100, s) !== s) throw new ColorError(color);\n if (guard(0, 100, l) !== l) throw new ColorError(color);\n return [...hslToRgb(h, s, l), a || 1] as [number, number, number, number];\n }\n\n throw new ColorError(color);\n}\n\nfunction hash(str: string) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */\n return (hash >>> 0) % 2341;\n}\n\nconst colorToInt = (x: string) => parseInt(x.replace(/_/g, ''), 36);\n\nconst compressedColorMap = '1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm'\n .split(' ')\n .reduce((acc, next) => {\n const key = colorToInt(next.substring(0, 3));\n const hex = colorToInt(next.substring(3)).toString(16);\n\n // NOTE: padStart could be used here but it breaks Node 6 compat\n // https://github.com/ricokahler/color2k/issues/351\n let prefix = '';\n for (let i = 0; i < 6 - hex.length; i++) {\n prefix += '0';\n }\n\n acc[key] = `${prefix}${hex}`;\n return acc;\n }, {} as { [key: string]: string });\n\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n */\nfunction nameToHex(color: string): string {\n const normalizedColorName = color.toLowerCase().trim();\n const result = compressedColorMap[hash(normalizedColorName)];\n if (!result) throw new ColorError(color);\n return `#${result}`;\n}\n\nconst r = (str: string, amount: number) =>\n Array.from(Array(amount))\n .map(() => str)\n .join('');\n\nconst reducedHexRegex = new RegExp(`^#${r('([a-f0-9])', 3)}([a-f0-9])?$`, 'i');\nconst hexRegex = new RegExp(`^#${r('([a-f0-9]{2})', 3)}([a-f0-9]{2})?$`, 'i');\nconst rgbaRegex = new RegExp(\n `^rgba?\\\\(\\\\s*(\\\\d+)\\\\s*${r(\n ',\\\\s*(\\\\d+)\\\\s*',\n 2\n )}(?:,\\\\s*([\\\\d.]+))?\\\\s*\\\\)$`,\n 'i'\n);\nconst hslaRegex = /^hsla?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/i;\nconst namedColorRegex = /^[a-z]+$/i;\n\nconst roundColor = (color: number): number => {\n return Math.round(color * 255);\n};\n\nconst hslToRgb = (\n hue: number,\n saturation: number,\n lightness: number\n): [number, number, number] => {\n let l = lightness / 100;\n if (saturation === 0) {\n // achromatic\n return [l, l, l].map(roundColor) as [number, number, number];\n }\n\n // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n const huePrime = (((hue % 360) + 360) % 360) / 60;\n const chroma = (1 - Math.abs(2 * l - 1)) * (saturation / 100);\n const secondComponent = chroma * (1 - Math.abs((huePrime % 2) - 1));\n\n let red = 0;\n let green = 0;\n let blue = 0;\n\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n\n const lightnessModification = l - chroma / 2;\n const finalRed = red + lightnessModification;\n const finalGreen = green + lightnessModification;\n const finalBlue = blue + lightnessModification;\n\n return [finalRed, finalGreen, finalBlue].map(roundColor) as [\n number,\n number,\n number\n ];\n};\n\nexport default parseToRgba;\n", "// taken from:\n// https://github.com/styled-components/polished/blob/a23a6a2bb26802b3d922d9c3b67bac3f3a54a310/src/internalHelpers/_rgbToHsl.js\nimport parseToRgba from './parseToRgba';\n\n/**\n * Parses a color in hue, saturation, lightness, and the alpha channel.\n *\n * Hue is a number between 0 and 360, saturation, lightness, and alpha are\n * decimal percentages between 0 and 1\n */\nfunction parseToHsla(color: string): [number, number, number, number] {\n const [red, green, blue, alpha] = parseToRgba(color).map((value, index) =>\n // 3rd index is alpha channel which is already normalized\n index === 3 ? value : value / 255\n );\n\n const max = Math.max(red, green, blue);\n const min = Math.min(red, green, blue);\n const lightness = (max + min) / 2;\n\n // achromatic\n if (max === min) return [0, 0, lightness, alpha];\n\n const delta = max - min;\n const saturation =\n lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n const hue =\n 60 *\n (red === max\n ? (green - blue) / delta + (green < blue ? 6 : 0)\n : green === max\n ? (blue - red) / delta + 2\n : (red - green) / delta + 4);\n\n return [hue, saturation, lightness, alpha];\n}\n\nexport default parseToHsla;\n", "import guard from './guard';\n\n/**\n * Takes in hsla parts and constructs an hsla string\n *\n * @param hue The color circle (from 0 to 360) - 0 (or 360) is red, 120 is green, 240 is blue\n * @param saturation Percentage of saturation, given as a decimal between 0 and 1\n * @param lightness Percentage of lightness, given as a decimal between 0 and 1\n * @param alpha Percentage of opacity, given as a decimal between 0 and 1\n */\nfunction hsla(\n hue: number,\n saturation: number,\n lightness: number,\n alpha: number\n): string {\n return `hsla(${(hue % 360).toFixed()}, ${guard(\n 0,\n 100,\n saturation * 100\n ).toFixed()}%, ${guard(0, 100, lightness * 100).toFixed()}%, ${parseFloat(\n guard(0, 1, alpha).toFixed(3)\n )})`;\n}\n\nexport default hsla;\n", "import parseToHsla from './parseToHsla';\nimport hsla from './hsla';\n\n/**\n * Adjusts the current hue of the color by the given degrees. Wraps around when\n * over 360.\n *\n * @param color input color\n * @param degrees degrees to adjust the input color, accepts degree integers\n * (0 - 360) and wraps around on overflow\n */\nfunction adjustHue(color: string, degrees: number): string {\n const [h, s, l, a] = parseToHsla(color);\n return hsla(h + degrees, s, l, a);\n}\n\nexport default adjustHue;\n", "import parseToHsla from './parseToHsla';\nimport hsla from './hsla';\n\n/**\n * Darkens using lightness. This is equivalent to subtracting the lightness\n * from the L in HSL.\n *\n * @param amount The amount to darken, given as a decimal between 0 and 1\n */\nfunction darken(color: string, amount: number): string {\n const [hue, saturation, lightness, alpha] = parseToHsla(color);\n return hsla(hue, saturation, lightness - amount, alpha);\n}\n\nexport default darken;\n", "import parseToHsla from './parseToHsla';\nimport hsla from './hsla';\n\n/**\n * Desaturates the input color by the given amount via subtracting from the `s`\n * in `hsla`.\n *\n * @param amount The amount to desaturate, given as a decimal between 0 and 1\n */\nfunction desaturate(color: string, amount: number): string {\n const [h, s, l, a] = parseToHsla(color);\n return hsla(h, s - amount, l, a);\n}\n\nexport default desaturate;\n", "import parseToRgba from './parseToRgba';\n// taken from:\n// https://github.com/styled-components/polished/blob/0764c982551b487469043acb56281b0358b3107b/src/color/getLuminance.js\n\n/**\n * Returns a number (float) representing the luminance of a color.\n */\nfunction getLuminance(color: string): number {\n if (color === 'transparent') return 0;\n\n function f(x: number) {\n const channel = x / 255;\n return channel <= 0.03928\n ? channel / 12.92\n : Math.pow(((channel + 0.055) / 1.055), 2.4);\n }\n\n const [r, g, b] = parseToRgba(color);\n return 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n}\n\nexport default getLuminance;\n", "// taken from:\n// https://github.com/styled-components/polished/blob/0764c982551b487469043acb56281b0358b3107b/src/color/getContrast.js\nimport getLuminance from './getLuminance';\n\n/**\n * Returns the contrast ratio between two colors based on\n * [W3's recommended equation for calculating contrast](http://www.w3.org/TR/WCAG20/#contrast-ratiodef).\n */\nfunction getContrast(color1: string, color2: string): number {\n const luminance1 = getLuminance(color1);\n const luminance2 = getLuminance(color2);\n\n return luminance1 > luminance2\n ? (luminance1 + 0.05) / (luminance2 + 0.05)\n : (luminance2 + 0.05) / (luminance1 + 0.05);\n}\n\nexport default getContrast;\n", "import guard from './guard';\n\n/**\n * Takes in rgba parts and returns an rgba string\n *\n * @param red The amount of red in the red channel, given in a number between 0 and 255 inclusive\n * @param green The amount of green in the red channel, given in a number between 0 and 255 inclusive\n * @param blue The amount of blue in the red channel, given in a number between 0 and 255 inclusive\n * @param alpha Percentage of opacity, given as a decimal between 0 and 1\n */\nfunction rgba(red: number, green: number, blue: number, alpha: number): string {\n return `rgba(${guard(0, 255, red).toFixed()}, ${guard(\n 0,\n 255,\n green\n ).toFixed()}, ${guard(0, 255, blue).toFixed()}, ${parseFloat(\n guard(0, 1, alpha).toFixed(3)\n )})`;\n}\n\nexport default rgba;\n", "import parseToRgba from './parseToRgba';\nimport rgba from './rgba';\n\n/**\n * Mixes two colors together. Taken from sass's implementation.\n */\nfunction mix(color1: string, color2: string, weight: number): string {\n const normalize = (n: number, index: number) =>\n // 3rd index is alpha channel which is already normalized\n index === 3 ? n : n / 255;\n\n const [r1, g1, b1, a1] = parseToRgba(color1).map(normalize);\n const [r2, g2, b2, a2] = parseToRgba(color2).map(normalize);\n\n // The formula is copied from the original Sass implementation:\n // http://sass-lang.com/documentation/Sass/Script/Functions.html#mix-instance_method\n const alphaDelta = a2 - a1;\n const x = weight * 2 - 1;\n const y = x * alphaDelta === -1 ? x : x + alphaDelta;\n const z = 1 + x * alphaDelta;\n const weight2 = (y / z + 1) / 2.0;\n const weight1 = 1 - weight2;\n\n const r = (r1 * weight1 + r2 * weight2) * 255;\n const g = (g1 * weight1 + g2 * weight2) * 255;\n const b = (b1 * weight1 + b2 * weight2) * 255;\n const a = a2 * weight + a1 * (1 - weight);\n\n return rgba(r, g, b, a);\n}\n\nexport default mix;\n", "import mix from './mix';\nimport guard from './guard';\n\n/**\n * Given a series colors, this function will return a `scale(x)` function that\n * accepts a percentage as a decimal between 0 and 1 and returns the color at\n * that percentage in the scale.\n *\n * ```js\n * const scale = getScale('red', 'yellow', 'green');\n * console.log(scale(0)); // rgba(255, 0, 0, 1)\n * console.log(scale(0.5)); // rgba(255, 255, 0, 1)\n * console.log(scale(1)); // rgba(0, 128, 0, 1)\n * ```\n *\n * If you'd like to limit the domain and range like chroma-js, we recommend\n * wrapping scale again.\n *\n * ```js\n * const _scale = getScale('red', 'yellow', 'green');\n * const scale = x => _scale(x / 100);\n *\n * console.log(scale(0)); // rgba(255, 0, 0, 1)\n * console.log(scale(50)); // rgba(255, 255, 0, 1)\n * console.log(scale(100)); // rgba(0, 128, 0, 1)\n * ```\n */\nfunction getScale(...colors: string[]): (n: number) => string {\n return (n) => {\n const lastIndex = colors.length - 1;\n const lowIndex = guard(0, lastIndex, Math.floor(n * lastIndex));\n const highIndex = guard(0, lastIndex, Math.ceil(n * lastIndex));\n\n const color1 = colors[lowIndex];\n const color2 = colors[highIndex];\n\n const unit = 1 / lastIndex;\n const weight = (n - unit * lowIndex) / unit;\n\n return mix(color1, color2, weight);\n };\n}\n\nexport default getScale;\n", "import getContrast from './getContrast';\n\nconst guidelines = {\n decorative: 1.5,\n readable: 3,\n aa: 4.5,\n aaa: 7,\n};\n\n/**\n * Returns whether or not a color has bad contrast against \n * a white background according to a given standard\n */\nfunction hasBadContrast(\n color: string,\n standard: 'decorative' | 'readable' | 'aa' | 'aaa' = 'aa'\n): boolean {\n return getContrast(color, '#fff') < guidelines[standard];\n}\n\nexport default hasBadContrast;\n", "import darken from './darken';\n/**\n * Lightens a color by a given amount. This is equivalent to\n * `darken(color, -amount)`\n *\n * @param amount The amount to darken, given as a decimal between 0 and 1\n */\nfunction lighten(color: string, amount: number): string {\n return darken(color, -amount);\n}\n\nexport default lighten;\n", "import parseToRgba from './parseToRgba';\nimport rgba from './rgba';\n\n/**\n * Takes in a color and makes it more transparent by convert to `rgba` and\n * decreasing the amount in the alpha channel.\n *\n * @param amount The amount to increase the transparency by, given as a decimal between 0 and 1\n */\nfunction transparentize(color: string, amount: number): string {\n const [r, g, b, a] = parseToRgba(color);\n return rgba(r, g, b, a - amount);\n}\n\nexport default transparentize;\n", "import transparentize from './transparentize';\n\n/**\n * Takes a color and un-transparentizes it. Equivalent to\n * `transparentize(color, -amount)`\n *\n * @param amount The amount to increase the opacity by, given as a decimal between 0 and 1\n */\nfunction opacify(color: string, amount: number): string {\n return transparentize(color, -amount);\n}\n\nexport default opacify;\n", "import getLuminance from './getLuminance';\n\n/**\n * An alternative function to `readableColor`. Returns whether or not the \n * readable color (i.e. the color to be place on top the input color) should be\n * black.\n */\nfunction readableColorIsBlack(color: string): boolean {\n return getLuminance(color) > 0.179;\n}\n\nexport default readableColorIsBlack;\n", "import readableColorIsBlack from './readableColorIsBlack';\n\n/**\n * Returns black or white for best contrast depending on the luminosity of the\n * given color.\n */\nfunction readableColor(color: string): string {\n return readableColorIsBlack(color) ? '#000' : '#fff';\n}\n\nexport default readableColor;\n", "import desaturate from './desaturate';\n\n/**\n * Saturates a color by converting it to `hsl` and increasing the saturation\n * amount. Equivalent to `desaturate(color, -amount)`\n * \n * @param color Input color\n * @param amount The amount to darken, given as a decimal between 0 and 1\n */\nfunction saturate(color: string, amount: number): string {\n return desaturate(color, -amount);\n}\n\nexport default saturate;\n", "import parseToRgba from './parseToRgba';\nimport guard from './guard';\n\n/**\n * Takes in any color and returns it as a hex code.\n */\nfunction toHex(color: string): string {\n const [r, g, b, a] = parseToRgba(color);\n\n let hex = (x: number) => {\n const h = guard(0, 255, x).toString(16);\n // NOTE: padStart could be used here but it breaks Node 6 compat\n // https://github.com/ricokahler/color2k/issues/351\n return h.length === 1 ? `0${h}` : h;\n };\n\n return `#${hex(r)}${hex(g)}${hex(b)}${a < 1 ? hex(Math.round(a * 255)) : ''}`;\n}\n\nexport default toHex;\n", "import parseToRgba from './parseToRgba';\nimport rgba from './rgba';\n\n/**\n * Takes in any color and returns it as an rgba string.\n */\nfunction toRgba(color: string): string {\n return rgba(...parseToRgba(color));\n}\n\nexport default toRgba;\n", "import parseToHsla from './parseToHsla';\nimport hsla from './hsla';\n\n/**\n * Takes in any color and returns it as an hsla string.\n */\nfunction toHsla(color: string): string {\n return hsla(...parseToHsla(color));\n}\n\nexport default toHsla;\n", "var exports = {};!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(window,function(){return s={},n.m=i=[function(e,t,i){\"use strict\";function s(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent(\"CustomEvent\");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}var n;t.__esModule=!0,t.hasClassInTree=function(e,t){function s(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}return s(e,t)||function e(t,i){return t&&t!==document?s(t,i)?t:e(t.parentNode,i):null}(e,t)},t.ensureElementInView=function(e,t){var i=e.scrollTop+e.offsetTop,s=i+e.clientHeight,n=t.offsetTop,a=n+t.clientHeight;n=window.innerHeight?\"above\":i?t:\"below\"},t.debounce=function(n,a,o){var l;return void 0===a&&(a=100),void 0===o&&(o=!1),function(){for(var e=[],t=0;t[^<>]*)\",\"i\");if(!e.match(n))return e;var a=e.match(n).index,o=a+e.match(n)[0].toString().length,l=e.substring(a,o);return s=s.replace(n,''+l+\"\")},t.kebabCase=function(e){var t=e.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g,function(e){return\"-\"+e.toLowerCase()});return e[0]===e[0].toUpperCase()?t.substring(1):t},\"function\"!=typeof(n=window).CustomEvent&&(s.prototype=n.Event.prototype,n.CustomEvent=s)},function(e,t,i){\"use strict\";t.__esModule=!0;var s=(n.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:\"\",text:e.text?e.text:\"\",innerHTML:e.innerHTML?e.innerHTML:\"\",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{},mandatory:!!e.mandatory&&e.mandatory}},n.prototype.add=function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:\"\",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:e.mandatory,data:{}})},n.prototype.parseSelectData=function(){this.data=[];for(var e=0,t=this.main.select.element.childNodes;e('select.netbox-color-select')) {\n for (const option of select.options) {\n if (canChangeColor(option)) {\n // Get the background color from the option's value.\n const bg = `#${option.value}`;\n // Determine an accessible foreground color based on the background color.\n const fg = readableColor(bg);\n\n // Set the option's style attributes.\n option.style.backgroundColor = bg;\n option.style.color = fg;\n }\n }\n\n const instance = new SlimSelect({\n select,\n allowDeselect: true,\n // Inherit the calculated color on the deselect icon.\n deselectLabel: ``,\n });\n\n // Style the select container to match any pre-selectd options.\n for (const option of instance.data.data) {\n if ('selected' in option && option.selected) {\n styleContainer(option);\n break;\n }\n }\n\n // Don't inherit the select element's classes.\n for (const className of select.classList) {\n instance.slim.container.classList.remove(className);\n }\n\n function styleContainer(option: Option | HTMLOptionElement): void {\n if (instance.slim.singleSelected !== null) {\n if (canChangeColor(option)) {\n // Get the background color from the selected option's value.\n const bg = `#${option.value}`;\n // Determine an accessible foreground color based on the background color.\n const fg = readableColor(bg);\n\n // Set the container's style attributes.\n instance.slim.singleSelected.container.style.backgroundColor = bg;\n instance.slim.singleSelected.container.style.color = fg;\n\n // Find this element's label.\n const label = document.querySelector(`label[for=${select.id}]`);\n\n if (label !== null) {\n // Set the field's label color to match (Bootstrap sets the opacity to 0.65 as well).\n label.style.color = fg;\n }\n } else {\n // If the color cannot be set (i.e., the placeholder), remove any inline styles.\n instance.slim.singleSelected.container.removeAttribute('style');\n }\n }\n }\n\n // Change the SlimSelect container's style based on the selected option.\n instance.onChange = styleContainer;\n }\n}\n", "import SlimSelect from 'slim-select';\nimport { getElements } from '../util';\n\nexport function initStaticSelect() {\n for (const select of getElements('.netbox-static-select')) {\n if (select !== null) {\n const label = document.querySelector(`label[for=${select.id}]`) as HTMLLabelElement;\n\n let placeholder;\n if (label !== null) {\n placeholder = `Select ${label.innerText.trim()}`;\n }\n\n const instance = new SlimSelect({\n select,\n allowDeselect: true,\n deselectLabel: ``,\n placeholder,\n });\n\n // Don't copy classes from select element to SlimSelect instance.\n for (const className of select.classList) {\n instance.slim.container.classList.remove(className);\n }\n }\n }\n}\n", "import { initApiSelect } from './api';\nimport { initColorSelect } from './color';\nimport { initStaticSelect } from './static';\n\nexport function initSelect() {\n for (const func of [initApiSelect, initColorSelect, initStaticSelect]) {\n func();\n }\n}\n", "import { getElements, isTruthy } from './util';\n\nconst COLOR_MODE_KEY = 'netbox-color-mode';\nconst TEXT_WHEN_DARK = 'Light Mode';\nconst TEXT_WHEN_LIGHT = 'Dark Mode';\nconst ICON_WHEN_DARK = 'mdi-lightbulb-on';\nconst ICON_WHEN_LIGHT = 'mdi-lightbulb';\n\nfunction isColorMode(value: string): value is ColorMode {\n return value === 'dark' || value === 'light';\n}\n\n/**\n * Set the color mode to light or dark.\n *\n * @param mode `'light'` or `'dark'`\n * @returns `true` if the color mode was successfully set, `false` if not.\n */\nfunction storeColorMode(mode: ColorMode): void {\n return localStorage.setItem(COLOR_MODE_KEY, mode);\n}\n\nfunction updateElements(targetMode: ColorMode): void {\n document.body.setAttribute(`data-${COLOR_MODE_KEY}`, targetMode);\n\n for (const text of getElements('span.color-mode-text')) {\n if (targetMode === 'light') {\n text.innerText = TEXT_WHEN_LIGHT;\n } else if (targetMode === 'dark') {\n text.innerText = TEXT_WHEN_DARK;\n }\n }\n for (const icon of getElements('i.color-mode-icon', 'span.color-mode-icon')) {\n if (targetMode === 'light') {\n icon.classList.remove(ICON_WHEN_DARK);\n icon.classList.add(ICON_WHEN_LIGHT);\n } else if (targetMode === 'dark') {\n icon.classList.remove(ICON_WHEN_LIGHT);\n icon.classList.add(ICON_WHEN_DARK);\n }\n }\n\n for (const elevation of getElements('.rack_elevation')) {\n const svg = elevation.contentDocument?.querySelector('svg') ?? null;\n if (svg !== null) {\n svg.setAttribute(`data-${COLOR_MODE_KEY}`, targetMode);\n }\n }\n}\n\n/**\n * Call all functions necessary to update the color mode across the UI.\n *\n * @param mode Target color mode.\n */\nexport function setColorMode(mode: ColorMode): void {\n for (const func of [storeColorMode, updateElements]) {\n func(mode);\n }\n}\n\n/**\n * Toggle the color mode when a color mode toggle is clicked.\n */\nfunction handleColorModeToggle(): void {\n const currentValue = localStorage.getItem(COLOR_MODE_KEY);\n if (currentValue === 'light') {\n setColorMode('dark');\n } else if (currentValue === 'dark') {\n setColorMode('light');\n } else {\n console.warn('Unable to determine the current color mode');\n }\n}\n\n/**\n * Determine the user's preference and set it as the color mode.\n */\nfunction defaultColorMode(): void {\n // Get the current color mode value from local storage.\n const currentValue = localStorage.getItem(COLOR_MODE_KEY) as Nullable;\n const bodyValue = document.body.getAttribute(`data-${COLOR_MODE_KEY}`);\n\n if (isTruthy(bodyValue) && isTruthy(currentValue)) {\n return setColorMode(currentValue);\n }\n\n let preference: ColorModePreference = 'none';\n\n // Determine if the user prefers dark or light mode.\n for (const mode of ['dark', 'light']) {\n if (window.matchMedia(`(prefers-color-scheme: ${mode})`).matches) {\n preference = mode as ColorModePreference;\n break;\n }\n }\n\n if (isTruthy(currentValue) && !isTruthy(bodyValue) && isColorMode(currentValue)) {\n return setColorMode(currentValue);\n }\n\n switch (preference) {\n case 'dark':\n return setColorMode('dark');\n case 'light':\n return setColorMode('light');\n case 'none':\n return setColorMode('light');\n default:\n return setColorMode('light');\n }\n}\n\n/**\n * Initialize color mode toggle buttons and set the default color mode.\n */\nfunction initColorModeToggle(): void {\n for (const element of getElements('button.color-mode-toggle')) {\n element.addEventListener('click', handleColorModeToggle);\n }\n}\n\n/**\n * Initialize all color mode elements.\n */\nexport function initColorMode(): void {\n window.addEventListener('load', defaultColorMode);\n for (const func of [initColorModeToggle]) {\n func();\n }\n}\n", "import { createToast } from './bs';\nimport { setColorMode } from './colorMode';\nimport {\n slugify,\n isTruthy,\n apiPatch,\n hasError,\n getElement,\n getElements,\n findFirstAdjacent,\n} from './util';\n\n/**\n * When the toggle button is clicked, swap the connection status via the API and toggle CSS\n * classes to reflect the connection status.\n *\n * @param element Connection Toggle Button Element\n */\nfunction toggleConnection(element: HTMLButtonElement) {\n const id = element.getAttribute('data');\n const connected = element.classList.contains('connected');\n const status = connected ? 'planned' : 'connected';\n\n if (isTruthy(id)) {\n apiPatch(`/api/dcim/cables/${id}/`, { status }).then(res => {\n if (hasError(res)) {\n // If the API responds with an error, show it to the user.\n createToast('danger', 'Error', res.error).show();\n return;\n } else {\n // Get the button's row to change its styles.\n const row = element.parentElement?.parentElement as HTMLTableRowElement;\n // Get the button's icon to change its CSS class.\n const icon = element.querySelector('i.mdi, span.mdi') as HTMLSpanElement;\n if (connected) {\n row.classList.remove('success');\n row.classList.add('info');\n element.classList.remove('connected', 'btn-warning');\n element.classList.add('btn-info');\n element.title = 'Mark Installed';\n icon.classList.remove('mdi-lan-disconnect');\n icon.classList.add('mdi-lan-connect');\n } else {\n row.classList.remove('info');\n row.classList.add('success');\n element.classList.remove('btn-success');\n element.classList.add('connected', 'btn-warning');\n element.title = 'Mark Installed';\n icon.classList.remove('mdi-lan-connect');\n icon.classList.add('mdi-lan-disconnect');\n }\n }\n });\n }\n}\n\nfunction initConnectionToggle() {\n for (const element of getElements('button.cable-toggle')) {\n element.addEventListener('click', () => toggleConnection(element));\n }\n}\n\n/**\n * If a slug field exists, add event listeners to handle automatically generating its value.\n */\nfunction initReslug(): void {\n const slugField = document.getElementById('id_slug') as HTMLInputElement;\n const slugButton = document.getElementById('reslug') as HTMLButtonElement;\n if (slugField === null || slugButton === null) {\n return;\n }\n const sourceId = slugField.getAttribute('slug-source');\n const sourceField = document.getElementById(`id_${sourceId}`) as HTMLInputElement;\n\n if (sourceField === null) {\n console.error('Unable to find field for slug field.');\n return;\n }\n\n const slugLengthAttr = slugField.getAttribute('maxlength');\n let slugLength = 50;\n\n if (slugLengthAttr) {\n slugLength = Number(slugLengthAttr);\n }\n sourceField.addEventListener('blur', () => {\n slugField.value = slugify(sourceField.value, slugLength);\n });\n slugButton.addEventListener('click', () => {\n slugField.value = slugify(sourceField.value, slugLength);\n });\n}\n\n/**\n * Perform actions in the UI based on the value of user profile updates.\n *\n * @param event Form Submit\n */\nfunction handlePreferenceSave(event: Event): void {\n // Create a FormData instance to access the form values.\n const form = event.currentTarget as HTMLFormElement;\n const formData = new FormData(form);\n\n // Update the UI color mode immediately when the user preference changes.\n if (formData.get('ui.colormode') === 'dark') {\n setColorMode('dark');\n } else if (formData.get('ui.colormode') === 'light') {\n setColorMode('light');\n }\n}\n\n/**\n * Initialize handlers for user profile updates.\n */\nfunction initPreferenceUpdate() {\n const form = getElement('preferences-update');\n if (form !== null) {\n form.addEventListener('submit', handlePreferenceSave);\n }\n}\n\n/**\n * Show the select all card when the select all checkbox is checked, and sync the checkbox state\n * with all the PK checkboxes in the table.\n *\n * @param event Change Event\n */\nfunction handleSelectAllToggle(event: Event) {\n // Select all checkbox in header row.\n const tableSelectAll = event.currentTarget as HTMLInputElement;\n // Nearest table to the select all checkbox.\n const table = findFirstAdjacent(tableSelectAll, 'table');\n // Select all confirmation card.\n const confirmCard = document.getElementById('select-all-box');\n // Checkbox in confirmation card to signal if all objects should be selected.\n const confirmCheckbox = document.getElementById('select-all') as Nullable;\n\n if (table !== null) {\n for (const element of table.querySelectorAll(\n 'input[type=\"checkbox\"][name=\"pk\"]',\n )) {\n if (tableSelectAll.checked) {\n // Check all PK checkboxes if the select all checkbox is checked.\n element.checked = true;\n } else {\n // Uncheck all PK checkboxes if the select all checkbox is unchecked.\n element.checked = false;\n }\n }\n if (confirmCard !== null) {\n if (tableSelectAll.checked) {\n // Unhide the select all confirmation card if the select all checkbox is checked.\n confirmCard.classList.remove('d-none');\n } else {\n // Hide the select all confirmation card if the select all checkbox is unchecked.\n confirmCard.classList.add('d-none');\n if (confirmCheckbox !== null) {\n // Uncheck the confirmation checkbox when the table checkbox is unchecked (after which\n // the confirmation card will be hidden).\n confirmCheckbox.checked = false;\n }\n }\n }\n }\n}\n\n/**\n * If any PK checkbox is checked, uncheck the select all table checkbox and the select all\n * confirmation checkbox.\n *\n * @param event Change Event\n */\nfunction handlePkCheck(event: Event) {\n const target = event.currentTarget as HTMLInputElement;\n if (!target.checked) {\n for (const element of getElements(\n 'input[type=\"checkbox\"].toggle',\n 'input#select-all',\n )) {\n element.checked = false;\n }\n }\n}\n\n/**\n * Synchronize the select all confirmation checkbox state with the select all confirmation button\n * disabled state. If the select all confirmation checkbox is checked, the buttons should be\n * enabled. If not, the buttons should be disabled.\n *\n * @param event Change Event\n */\nfunction handleSelectAll(event: Event) {\n const target = event.currentTarget as HTMLInputElement;\n const selectAllBox = getElement('select-all-box');\n if (selectAllBox !== null) {\n for (const button of selectAllBox.querySelectorAll(\n 'button[type=\"submit\"]',\n )) {\n if (target.checked) {\n button.disabled = false;\n } else {\n button.disabled = true;\n }\n }\n }\n}\n\n/**\n * Initialize table select all elements.\n */\nfunction initSelectAll() {\n for (const element of getElements(\n 'table tr th > input[type=\"checkbox\"].toggle',\n )) {\n element.addEventListener('change', handleSelectAllToggle);\n }\n for (const element of getElements('input[type=\"checkbox\"][name=\"pk\"]')) {\n element.addEventListener('change', handlePkCheck);\n }\n const selectAll = getElement('select-all');\n\n if (selectAll !== null) {\n selectAll.addEventListener('change', handleSelectAll);\n }\n}\n\nfunction handlePerPageSelect(event: Event) {\n const select = event.currentTarget as HTMLSelectElement;\n if (select.form !== null) {\n select.form.submit();\n }\n}\n\nfunction initPerPage() {\n for (const element of getElements('select.per-page')) {\n element.addEventListener('change', handlePerPageSelect);\n }\n}\n\nexport function initButtons() {\n for (const func of [\n initConnectionToggle,\n initReslug,\n initSelectAll,\n initPreferenceUpdate,\n initPerPage,\n ]) {\n func();\n }\n}\n", "import { Toast } from 'bootstrap';\n\n/**\n * Find any active messages from django.contrib.messages and show them in a toast.\n */\nexport function initMessages(): void {\n const elements = document.querySelectorAll(\n 'body > div#django-messages > div.django-message.toast',\n );\n for (const element of elements) {\n if (element !== null) {\n const toast = new Toast(element);\n toast.show();\n }\n }\n}\n", "import Clipboard from 'clipboard';\nimport { getElements } from './util';\n\nexport function initClipboard() {\n for (const element of getElements('a.copy-token', 'button.copy-secret')) {\n new Clipboard(element);\n }\n}\n", "import flatpickr from 'flatpickr';\n\nexport function initDateSelector(): void {\n flatpickr('.date-picker', { allowInput: true });\n flatpickr('.datetime-picker', {\n allowInput: true,\n enableSeconds: true,\n enableTime: true,\n time_24hr: true,\n });\n flatpickr('.time-picker', {\n allowInput: true,\n enableSeconds: true,\n enableTime: true,\n noCalendar: true,\n time_24hr: true,\n });\n}\n", "import { createToast } from './bs';\nimport { getElements, apiPatch, hasError, getSelectedOptions } from './util';\n\n/**\n * Mark each option element in the selected columns element as 'selected' so they are submitted to\n * the API.\n */\nfunction saveTableConfig() {\n for (const element of getElements('select[name=\"columns\"] option')) {\n element.selected = true;\n }\n}\n\n/**\n * Delete all selected columns, which reverts the user's preferences to the default column set.\n */\nfunction resetTableConfig() {\n for (const element of getElements('select[name=\"columns\"]')) {\n element.value = '';\n }\n}\n\n/**\n * Add columns to the table config select element.\n */\nfunction addColumns(event: Event) {\n for (const selectedOption of getElements('#id_available_columns > option')) {\n if (selectedOption.selected) {\n for (const selected of getElements('#id_columns')) {\n selected.appendChild(selectedOption.cloneNode(true));\n }\n selectedOption.remove();\n }\n }\n event.preventDefault();\n}\n\n/**\n * Remove columns from the table config select element.\n */\nfunction removeColumns(event: Event) {\n for (const selectedOption of getElements('#id_columns > option')) {\n if (selectedOption.selected) {\n for (const available of getElements('#id_available_columns')) {\n available.appendChild(selectedOption.cloneNode(true));\n }\n selectedOption.remove();\n }\n }\n event.preventDefault();\n}\n\n/**\n * Submit form configuration to the NetBox API.\n */\nasync function submitFormConfig(formConfig: Dict) {\n return await apiPatch('/api/users/config/', formConfig);\n}\n\n/**\n * Handle table config form submission. Sends the selected columns to the NetBox API to update\n * the user's table configuration preferences.\n */\nfunction handleSubmit(event: Event) {\n event.preventDefault();\n\n const element = event.currentTarget as HTMLFormElement;\n\n // Get all the selected options from any select element in the form.\n const options = getSelectedOptions(element);\n\n // Create an object mapping the select element's name to all selected options for that element.\n const formData: Dict> = Object.assign(\n {},\n ...options.map(opt => ({ [opt.name]: opt.options })),\n );\n // Create an array from the dot-separated config path. E.g. tables.DevicePowerOutletTable becomes\n // ['tables', 'DevicePowerOutletTable']\n const path = element.getAttribute('data-config-root')?.split('.') ?? [];\n\n // Create an object mapping the configuration path to the select element names, which contain the\n // selection options. E.g. {tables: {DevicePowerOutletTable: {columns: ['label', 'type']}}}\n const data = path.reduceRight>((value, key) => ({ [key]: value }), formData);\n\n // Submit the resulting object to the API to update the user's preferences for this table.\n submitFormConfig(data).then(res => {\n if (hasError(res)) {\n const toast = createToast('danger', 'Error Updating Table Configuration', res.error);\n toast.show();\n } else {\n location.reload();\n }\n });\n}\n\n/**\n * Initialize table configuration elements.\n */\nexport function initTableConfig() {\n for (const element of getElements('#save_tableconfig')) {\n element.addEventListener('click', saveTableConfig);\n }\n for (const element of getElements('#reset_tableconfig')) {\n element.addEventListener('click', resetTableConfig);\n }\n for (const element of getElements('#add_columns')) {\n element.addEventListener('click', addColumns);\n }\n for (const element of getElements('#remove_columns')) {\n element.addEventListener('click', removeColumns);\n }\n for (const element of getElements('form.userconfigform')) {\n element.addEventListener('submit', handleSubmit);\n }\n}\n", "import { getElements, findFirstAdjacent } from '../util';\n\ntype InterfaceState = 'enabled' | 'disabled';\ntype ShowHide = 'show' | 'hide';\n\nfunction isShowHide(value: unknown): value is ShowHide {\n return typeof value === 'string' && ['show', 'hide'].includes(value);\n}\n\n/**\n * When this error is thrown, it's an indication that we don't need to manage this table, because\n * it doesn't contain the required elements.\n */\nclass TableStateError extends Error {\n table: HTMLTableElement;\n constructor(message: string, table: HTMLTableElement) {\n super(message);\n this.table = table;\n }\n}\n\n/**\n * Manage the display text of a button element as well as the visibility of its corresponding rows.\n */\nclass ButtonState {\n /**\n * Underlying Button DOM Element\n */\n public button: HTMLButtonElement;\n /**\n * Table rows with `data-enabled` set to `\"enabled\"`\n */\n private enabledRows: NodeListOf;\n /**\n * Table rows with `data-enabled` set to `\"disabled\"`\n */\n private disabledRows: NodeListOf;\n\n constructor(button: HTMLButtonElement, table: HTMLTableElement) {\n this.button = button;\n this.enabledRows = table.querySelectorAll('tr[data-enabled=\"enabled\"]');\n this.disabledRows = table.querySelectorAll('tr[data-enabled=\"disabled\"]');\n }\n\n /**\n * This button's controlled type. For example, a button with the class `toggle-disabled` has\n * directive 'disabled' because it controls the visibility of rows with\n * `data-enabled=\"disabled\"`. Likewise, `toggle-enabled` controls rows with\n * `data-enabled=\"enabled\"`.\n */\n private get directive(): InterfaceState {\n if (this.button.classList.contains('toggle-disabled')) {\n return 'disabled';\n } else if (this.button.classList.contains('toggle-enabled')) {\n return 'enabled';\n }\n // If this class has been instantiated but doesn't contain these classes, it's probably because\n // the classes are missing in the HTML template.\n console.warn(this.button);\n throw new Error('Toggle button does not contain expected class');\n }\n\n /**\n * Toggle visibility of rows with `data-enabled=\"enabled\"`.\n */\n private toggleEnabledRows(): void {\n for (const row of this.enabledRows) {\n row.classList.toggle('d-none');\n }\n }\n\n /**\n * Toggle visibility of rows with `data-enabled=\"disabled\"`.\n */\n private toggleDisabledRows(): void {\n for (const row of this.disabledRows) {\n row.classList.toggle('d-none');\n }\n }\n\n /**\n * Update the DOM element's `data-state` attribute.\n */\n public set buttonState(state: Nullable) {\n if (isShowHide(state)) {\n this.button.setAttribute('data-state', state);\n }\n }\n\n /**\n * Get the DOM element's `data-state` attribute.\n */\n public get buttonState(): Nullable {\n const state = this.button.getAttribute('data-state');\n if (isShowHide(state)) {\n return state;\n }\n return null;\n }\n\n /**\n * Update the DOM element's display text to reflect the action opposite the current state. For\n * example, if the current state is to hide enabled interfaces, the DOM text should say\n * \"Show Enabled Interfaces\".\n */\n private toggleButton(): void {\n if (this.buttonState === 'show') {\n this.button.innerText = this.button.innerText.replaceAll('Show', 'Hide');\n } else if (this.buttonState === 'hide') {\n this.button.innerText = this.button.innerText.replaceAll('Hide', 'Show');\n }\n }\n\n /**\n * Toggle visibility for the rows this element controls.\n */\n private toggleRows(): void {\n if (this.directive === 'enabled') {\n this.toggleEnabledRows();\n } else if (this.directive === 'disabled') {\n this.toggleDisabledRows();\n }\n }\n\n /**\n * Toggle the DOM element's `data-state` attribute.\n */\n private toggleState(): void {\n if (this.buttonState === 'show') {\n this.buttonState = 'hide';\n } else if (this.buttonState === 'hide') {\n this.buttonState = 'show';\n }\n }\n\n /**\n * Toggle all controlled elements.\n */\n private toggle(): void {\n this.toggleState();\n this.toggleButton();\n this.toggleRows();\n }\n\n /**\n * When the button is clicked, toggle all controlled elements.\n */\n public handleClick(event: Event): void {\n const button = event.currentTarget as HTMLButtonElement;\n if (button.isEqualNode(this.button)) {\n this.toggle();\n }\n }\n}\n\n/**\n * Manage the state of a table and its elements.\n */\nclass TableState {\n /**\n * Underlying DOM Table Element.\n */\n\n private table: HTMLTableElement;\n /**\n * Instance of ButtonState for the 'show/hide enabled rows' button.\n *\n * TS Error is expected because null handling is performed in the constructor.\n */\n // @ts-expect-error\n private enabledButton: ButtonState;\n\n /**\n * Instance of ButtonState for the 'show/hide disabled rows' button.\n *\n * TS Error is expected because null handling is performed in the constructor.\n */\n // @ts-expect-error\n private disabledButton: ButtonState;\n\n /**\n * Underlying DOM Table Caption Element.\n */\n private caption: Nullable = null;\n\n constructor(table: HTMLTableElement) {\n this.table = table;\n\n try {\n const toggleEnabledButton = findFirstAdjacent(\n this.table,\n 'button.toggle-enabled',\n );\n const toggleDisabledButton = findFirstAdjacent(\n this.table,\n 'button.toggle-disabled',\n );\n\n const caption = this.table.querySelector('caption');\n this.caption = caption;\n\n if (toggleEnabledButton === null) {\n throw new TableStateError(\"Table is missing a 'toggle-enabled' button.\", table);\n }\n\n if (toggleDisabledButton === null) {\n throw new TableStateError(\"Table is missing a 'toggle-disabled' button.\", table);\n }\n\n // Attach event listeners to the buttons elements.\n toggleEnabledButton.addEventListener('click', event => this.handleClick(event, this));\n toggleDisabledButton.addEventListener('click', event => this.handleClick(event, this));\n\n // Instantiate ButtonState for each button for state management.\n this.enabledButton = new ButtonState(toggleEnabledButton, this.table);\n this.disabledButton = new ButtonState(toggleDisabledButton, this.table);\n } catch (err) {\n if (err instanceof TableStateError) {\n // This class is useless for tables that don't have toggle buttons.\n console.debug('Table does not contain enable/disable toggle buttons');\n return;\n } else {\n throw err;\n }\n }\n }\n\n /**\n * Get the table caption's text.\n */\n private get captionText(): string {\n if (this.caption !== null) {\n return this.caption.innerText;\n }\n return '';\n }\n\n /**\n * Set the table caption's text.\n */\n private set captionText(value: string) {\n if (this.caption !== null) {\n this.caption.innerText = value;\n }\n }\n\n /**\n * Update the table caption's text based on the state of each toggle button.\n */\n private toggleCaption(): void {\n const showEnabled = this.enabledButton.buttonState === 'show';\n const showDisabled = this.disabledButton.buttonState === 'show';\n\n if (showEnabled && !showDisabled) {\n this.captionText = 'Showing Enabled Interfaces';\n } else if (showEnabled && showDisabled) {\n this.captionText = 'Showing Enabled & Disabled Interfaces';\n } else if (!showEnabled && showDisabled) {\n this.captionText = 'Showing Disabled Interfaces';\n } else if (!showEnabled && !showDisabled) {\n this.captionText = 'Hiding Enabled & Disabled Interfaces';\n } else {\n this.captionText = '';\n }\n }\n\n /**\n * When toggle buttons are clicked, pass the event to the relevant button's handler and update\n * this instance's state.\n *\n * @param event onClick event for toggle buttons.\n * @param instance Instance of TableState (`this` cannot be used since that's context-specific).\n */\n public handleClick(event: Event, instance: TableState): void {\n const button = event.currentTarget as HTMLButtonElement;\n const enabled = button.isEqualNode(instance.enabledButton.button);\n const disabled = button.isEqualNode(instance.disabledButton.button);\n\n if (enabled) {\n instance.enabledButton.handleClick(event);\n } else if (disabled) {\n instance.disabledButton.handleClick(event);\n }\n instance.toggleCaption();\n }\n}\n\n/**\n * Initialize table states.\n */\nexport function initInterfaceTable() {\n for (const element of getElements('table')) {\n new TableState(element);\n }\n}\n", "import { getElement, getElements } from './util';\n\nconst breakpoints = {\n sm: 540,\n md: 720,\n lg: 960,\n xl: 1140,\n};\n\nfunction toggleBodyPosition(position: HTMLBodyElement['style']['position']): void {\n for (const element of getElements('body')) {\n element.style.position = position;\n }\n}\n\nexport function initSideNav() {\n const element = getElement('sidebarMenu');\n if (element !== null && document.body.clientWidth < breakpoints.lg) {\n element.addEventListener('shown.bs.collapse', () => toggleBodyPosition('fixed'));\n element.addEventListener('hidden.bs.collapse', () => toggleBodyPosition('relative'));\n }\n}\n", "/**\n * `StateManger` configuration options.\n */\ninterface StateOptions {\n /**\n * If true, all values will be written to localStorage when calling `set()`. Additionally, when\n * a new state instance is initialized, if the same localStorage state key (see `key` property)\n * exists in localStorage, the value will be read and used as the initial value.\n */\n persist?: boolean;\n}\n\n/**\n * Typed implementation of native `ProxyHandler`.\n */\nclass ProxyStateHandler implements ProxyHandler {\n public set>(target: T, key: S, value: T[S]): boolean {\n target[key] = value;\n return true;\n }\n\n public get>(target: T, key: G): T[G] {\n return target[key];\n }\n public has(target: T, key: string): boolean {\n return key in target;\n }\n}\n\n/**\n * Manage runtime and/or locally stored (via localStorage) state.\n */\nexport class StateManager {\n /**\n * implemented `ProxyHandler` for the underlying `Proxy` object.\n */\n private handlers: ProxyStateHandler;\n /**\n * Underlying `Proxy` object for this instance.\n */\n private proxy: T;\n /**\n * Options for this instance.\n */\n private options: StateOptions;\n /**\n * localStorage key for this instance.\n */\n private key: string = '';\n\n constructor(raw: T, options: StateOptions) {\n this.key = this.generateStateKey(raw);\n\n this.options = options;\n\n if (this.options.persist) {\n const saved = this.retrieve();\n if (saved !== null) {\n raw = { ...raw, ...saved };\n }\n }\n\n this.handlers = new ProxyStateHandler();\n this.proxy = new Proxy(raw, this.handlers);\n\n if (this.options.persist) {\n this.save();\n }\n }\n\n /**\n * Generate a semi-unique localStorage key for this instance.\n */\n private generateStateKey(obj: T): string {\n const encoded = window.btoa(Object.keys(obj).join('---'));\n return `netbox-${encoded}`;\n }\n\n /**\n * Get the current value of `key`.\n *\n * @param key Object key name.\n * @returns Object value.\n */\n public get>(key: G): T[G] {\n return this.handlers.get(this.proxy, key);\n }\n\n /**\n * Set a new value for `key`.\n *\n * @param key Object key name.\n * @param value New value.\n */\n public set>(key: G, value: T[G]): void {\n this.handlers.set(this.proxy, key, value);\n if (this.options.persist) {\n this.save();\n }\n }\n\n /**\n * Access the full instance.\n *\n * @returns StateManager instance.\n */\n public all(): T {\n return this.proxy;\n }\n\n /**\n * Access all state keys.\n */\n public keys(): K[] {\n return Object.keys(this.proxy) as K[];\n }\n\n /**\n * Access all state values.\n */\n public values(): T[K][] {\n return Object.values(this.proxy) as T[K][];\n }\n\n /**\n * Serialize and save the current state to localStorage.\n */\n private save(): void {\n const value = JSON.stringify(this.proxy);\n localStorage.setItem(this.key, value);\n }\n\n /**\n * Retrieve the serialized state object from localStorage.\n *\n * @returns Parsed state object.\n */\n private retrieve(): T | null {\n const raw = localStorage.getItem(this.key);\n if (raw !== null) {\n const data = JSON.parse(raw) as T;\n return data;\n }\n return null;\n }\n}\n\n/**\n * Create a new state object. Only one instance should exist at runtime for a given state.\n *\n * @param initial State's initial value.\n * @param options State management instance options.\n * @returns State management instance.\n */\nexport function createState(\n initial: T,\n options: StateOptions = {},\n): StateManager {\n return new StateManager(initial, options);\n}\n", "import { createState } from '../state';\n\nexport const rackImagesState = createState<{ hidden: boolean }>(\n { hidden: false },\n { persist: true },\n);\n", "import { rackImagesState } from './stores';\nimport { getElements } from './util';\n\nimport type { StateManager } from './state';\n\ntype RackToggleState = { hidden: boolean };\n\n/**\n * Toggle the Rack Image button to reflect the current state. If the current state is hidden and\n * the images are therefore hidden, the button should say \"Show Images\". Likewise, if the current\n * state is *not* hidden, and therefore the images are shown, the button should say \"Hide Images\".\n *\n * @param hidden Current State - `true` if images are hidden, `false` otherwise.\n * @param button Button element.\n */\nfunction toggleRackImagesButton(hidden: boolean, button: HTMLButtonElement): void {\n const text = hidden ? 'Show Images' : 'Hide Images';\n const selected = hidden ? '' : 'selected';\n button.setAttribute('selected', selected);\n button.innerHTML = ` ${text}`;\n}\n\n/**\n * Show all rack images.\n */\nfunction showRackImages(): void {\n for (const elevation of getElements('.rack_elevation')) {\n const images = elevation.contentDocument?.querySelectorAll('image.device-image') ?? [];\n for (const image of images) {\n image.classList.remove('hidden');\n }\n }\n}\n\n/**\n * Hide all rack images.\n */\nfunction hideRackImages(): void {\n for (const elevation of getElements('.rack_elevation')) {\n const images = elevation.contentDocument?.querySelectorAll('image.device-image') ?? [];\n for (const image of images) {\n image.classList.add('hidden');\n }\n }\n}\n\n/**\n * Toggle the visibility of device images and update the toggle button style.\n */\nfunction handleRackImageToggle(\n target: HTMLButtonElement,\n state: StateManager,\n): void {\n const initiallyHidden = state.get('hidden');\n state.set('hidden', !initiallyHidden);\n const hidden = state.get('hidden');\n\n if (hidden) {\n hideRackImages();\n } else {\n showRackImages();\n }\n toggleRackImagesButton(hidden, target);\n}\n\n/**\n * Add onClick callback for toggling rack elevation images. Synchronize the image toggle button\n * text and display state of images with the local state.\n */\nexport function initRackElevation() {\n const initiallyHidden = rackImagesState.get('hidden');\n for (const button of getElements('button.toggle-images')) {\n toggleRackImagesButton(initiallyHidden, button);\n\n button.addEventListener(\n 'click',\n event => {\n handleRackImageToggle(event.currentTarget as HTMLButtonElement, rackImagesState);\n },\n false,\n );\n }\n for (const element of getElements('.rack_elevation')) {\n element.addEventListener('load', () => {\n if (initiallyHidden) {\n hideRackImages();\n } else if (!initiallyHidden) {\n showRackImages();\n }\n });\n }\n}\n", "import { isTruthy, getElements } from './util';\n\n/**\n * Allow any element to be made \"clickable\" with the use of the `data-href` attribute.\n */\nexport function initLinks() {\n for (const link of getElements('*[data-href]')) {\n const href = link.getAttribute('data-href');\n if (isTruthy(href)) {\n link.addEventListener('click', () => {\n window.location.assign(href);\n });\n }\n }\n}\n", "import { initForms } from './forms';\nimport { initBootstrap } from './bs';\nimport { initSearch } from './search';\nimport { initSelect } from './select';\nimport { initButtons } from './buttons';\nimport { initColorMode } from './colorMode';\nimport { initMessages } from './messages';\nimport { initClipboard } from './clipboard';\nimport { initDateSelector } from './dateSelector';\nimport { initTableConfig } from './tableConfig';\nimport { initInterfaceTable } from './tables';\nimport { initSideNav } from './sidenav';\nimport { initRackElevation } from './racks';\nimport { initLinks } from './links';\n\nfunction init() {\n for (const init of [\n initBootstrap,\n initColorMode,\n initMessages,\n initForms,\n initSearch,\n initSelect,\n initDateSelector,\n initButtons,\n initClipboard,\n initTableConfig,\n initInterfaceTable,\n initSideNav,\n initRackElevation,\n initLinks,\n ]) {\n init();\n }\n}\n\nif (document.readyState !== 'loading') {\n init();\n} else {\n document.addEventListener('DOMContentLoaded', init);\n}\n"],
- "mappings": "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",
+ "sourcesContent": ["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n", "module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n", "var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n", "var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n", "var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n", "// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n", "// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n", "module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n", "var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n", "var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n", "var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n", "var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n", "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n", "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n", "var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n", "var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n", "var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n", "module.exports = false;\n", "var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.15.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '\u00A9 2021 Denis Pushkarev (zloirock.ru)'\n});\n", "var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n", "var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n", "module.exports = {};\n", "var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n", "var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n", "var global = require('../internals/global');\n\nmodule.exports = global;\n", "var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n", "var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n", "var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n", "var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n", "// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n", "// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n", "var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n", "var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n", "module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n", "var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n", "var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n", "var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n", "var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n", "var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n", "var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n", "'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n", "// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n", "var canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nmodule.exports = canUseDOM;", "var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n", "var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n", "var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n", "var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n", "module.exports = {};\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n", "'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n", "var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n", "/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n", "'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n", "// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n", "var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n", "var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n", "var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n", "var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n", "var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n", "var hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + ++id, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n", "var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n", "var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n", "var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n", "module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n", "var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n", "var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.REQUIRED = true;\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n", "'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar redefineAll = require('../internals/redefine-all');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar enforceIternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.REQUIRED = true;\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = WeakMapPrototype['delete'];\n var nativeHas = WeakMapPrototype.has;\n var nativeGet = WeakMapPrototype.get;\n var nativeSet = WeakMapPrototype.set;\n redefineAll(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete.call(this, key) || state.frozen['delete'](key);\n } return nativeDelete.call(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) || state.frozen.has(key);\n } return nativeHas.call(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key);\n } return nativeGet.call(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceIternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value);\n } else nativeSet.call(this, key, value);\n return this;\n }\n });\n}\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = memoize;\n", "var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n", "var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n", "var fails = require('../internals/fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\nvar RE = function (s, f) {\n return RegExp(s, f);\n};\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n", "var fails = require('./fails');\n\nmodule.exports = fails(function () {\n // babel-minify transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\n var re = RegExp('.', (typeof '').charAt(0));\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n", "var fails = require('./fails');\n\nmodule.exports = fails(function () {\n // babel-minify transpiles RegExp('.', 'g') -> /./g and it causes SyntaxError\n var re = RegExp('(?b)', (typeof '').charAt(5));\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n", "'use strict';\n/* eslint-disable regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(str) {\n var re = this;\n var state = getInternalState(re);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n", "var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n", "var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n", "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n", "/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n", "/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n", "/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n", "/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n", "/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size'\n ],\n factory\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n require('ev-emitter'),\n require('get-size')\n );\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(\n window.EvEmitter,\n window.getSize\n );\n }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n for ( var prop in obj ) {\n return false;\n }\n prop = null;\n return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n 'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n 'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n if ( !element ) {\n return;\n }\n\n this.element = element;\n // parent layout class, i.e. Masonry, Isotope, or Packery\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n\n this.css({\n position: 'absolute'\n });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n var elemStyle = this.element.style;\n\n for ( var prop in style ) {\n // use vendor property if available\n var supportedProp = vendorProperties[ prop ] || prop;\n elemStyle[ supportedProp ] = style[ prop ];\n }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n var style = getComputedStyle( this.element );\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n var x = parseFloat( xValue );\n var y = parseFloat( yValue );\n // convert percent to pixels\n var layoutSize = this.layout.size;\n if ( xValue.indexOf('%') != -1 ) {\n x = ( x / 100 ) * layoutSize.width;\n }\n if ( yValue.indexOf('%') != -1 ) {\n y = ( y / 100 ) * layoutSize.height;\n }\n // clean up 'auto' or other non-integer values\n x = isNaN( x ) ? 0 : x;\n y = isNaN( y ) ? 0 : y;\n // remove padding from measurement\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n this.position.x = x;\n this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n var layoutSize = this.layout.size;\n var style = {};\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n\n // x\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n var x = this.position.x + layoutSize[ xPadding ];\n // set in percentage or pixels\n style[ xProperty ] = this.getXValue( x );\n // reset other property\n style[ xResetProperty ] = '';\n\n // y\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n var y = this.position.y + layoutSize[ yPadding ];\n // set in percentage or pixels\n style[ yProperty ] = this.getYValue( y );\n // reset other property\n style[ yResetProperty ] = '';\n\n this.css( style );\n this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && !isHorizontal ?\n ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n var isHorizontal = this.layout._getOption('horizontal');\n return this.layout.options.percentPosition && isHorizontal ?\n ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n this.getPosition();\n // get current x & y from top/left\n var curX = this.position.x;\n var curY = this.position.y;\n\n var didNotMove = x == this.position.x && y == this.position.y;\n\n // save end position\n this.setPosition( x, y );\n\n // if did not move and not transitioning, just go to layout\n if ( didNotMove && !this.isTransitioning ) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate( transX, transY );\n\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n};\n\nproto.getTranslate = function( x, y ) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n var isOriginTop = this.layout._getOption('originTop');\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n this.setPosition( x, y );\n this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n this.position.x = parseFloat( x );\n this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n this.css( args.to );\n if ( args.isCleaning ) {\n this._removeStyles( args.to );\n }\n for ( var prop in args.onTransitionEnd ) {\n args.onTransitionEnd[ prop ].call( this );\n }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n // redirect to nonTransition if no transition duration\n if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n this._nonTransition( args );\n return;\n }\n\n var _transition = this._transn;\n // keep track of onTransitionEnd callback by css property\n for ( var prop in args.onTransitionEnd ) {\n _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n }\n // keep track of properties that are transitioning\n for ( prop in args.to ) {\n _transition.ingProperties[ prop ] = true;\n // keep track of properties to clean up when transition is done\n if ( args.isCleaning ) {\n _transition.clean[ prop ] = true;\n }\n }\n\n // set from styles\n if ( args.from ) {\n this.css( args.from );\n // force redraw. http://blog.alexmaccaw.com/css-transitions\n var h = this.element.offsetHeight;\n // hack for JSHint to hush about unused var\n h = null;\n }\n // enable transition\n this.enableTransition( args.to );\n // set styles that are transitioning\n this.css( args.to );\n\n this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n return str.replace( /([A-Z])/g, function( $1 ) {\n return '-' + $1.toLowerCase();\n });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if ( this.isTransitioning ) {\n return;\n }\n\n // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration;\n // enable transition styles\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n });\n // listen for transition end event\n this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n // disregard bubbled events from children\n if ( event.target !== this.element ) {\n return;\n }\n var _transition = this._transn;\n // get property name of transitioned property, convert to prefix-free\n var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n // remove property that has completed transitioning\n delete _transition.ingProperties[ propertyName ];\n // check if any properties are still transitioning\n if ( isEmptyObj( _transition.ingProperties ) ) {\n // all properties have completed transitioning\n this.disableTransition();\n }\n // clean style\n if ( propertyName in _transition.clean ) {\n // clean up style\n this.element.style[ event.propertyName ] = '';\n delete _transition.clean[ propertyName ];\n }\n // trigger onTransitionEnd callback\n if ( propertyName in _transition.onEnd ) {\n var onTransitionEnd = _transition.onEnd[ propertyName ];\n onTransitionEnd.call( this );\n delete _transition.onEnd[ propertyName ];\n }\n\n this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n this.removeTransitionStyles();\n this.element.removeEventListener( transitionEndEvent, this, false );\n this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n // clean up transition styles\n var cleanStyle = {};\n for ( var prop in style ) {\n cleanStyle[ prop ] = '';\n }\n this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n // remove transition\n this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n delay = isNaN( delay ) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n this.element.parentNode.removeChild( this.element );\n // remove display: none\n this.css({ display: '' });\n this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n // just remove element if no transition support or no transition\n if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n this.removeElem();\n return;\n }\n\n // start transition\n this.once( 'transitionEnd', function() {\n this.removeElem();\n });\n this.hide();\n};\n\nproto.reveal = function() {\n delete this.isHidden;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onRevealTransitionEnd = function() {\n // check if still visible\n // during transition, item may have been hidden\n if ( !this.isHidden ) {\n this.emitEvent('reveal');\n }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n var optionStyle = this.layout.options[ styleProperty ];\n // use opacity\n if ( optionStyle.opacity ) {\n return 'opacity';\n }\n // get first property\n for ( var prop in optionStyle ) {\n return prop;\n }\n};\n\nproto.hide = function() {\n // set flag\n this.isHidden = true;\n // remove display: none\n this.css({ display: '' });\n\n var options = this.layout.options;\n\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n};\n\nproto.onHideTransitionEnd = function() {\n // check if still hidden\n // during transition, item may have been un-hidden\n if ( this.isHidden ) {\n this.css({ display: 'none' });\n this.emitEvent('hide');\n }\n};\n\nproto.destroy = function() {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n};\n\nreturn Item;\n\n}));\n", "/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n /* jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './item'\n ],\n function( EvEmitter, getSize, utils, Item ) {\n return factory( window, EvEmitter, getSize, utils, Item);\n }\n );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./item')\n );\n } else {\n // browser global\n window.Outlayer = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n window.Outlayer.Item\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for ' + this.constructor.namespace +\n ': ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // add id for Outlayer.getFromElement\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n instances[ id ] = this; // associate via id\n\n // kick it off\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n if ( isInitLayout ) {\n this.layout();\n }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n var oldOption = this.constructor.compatOptions[ option ];\n return oldOption && this.options[ oldOption ] !== undefined ?\n this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n // get items from children\n this.reloadItems();\n // elements that affect layout, but are not laid out\n this.stamps = [];\n this.stamp( this.options.stamp );\n // set container style\n utils.extend( this.element.style, this.options.containerStyle );\n\n // bind resize method\n var canBindResize = this._getOption('resize');\n if ( canBindResize ) {\n this.bindResize();\n }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n // collection of item elements\n this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n var itemElems = this._filterFindItemElements( elems );\n var Item = this.constructor.Item;\n\n // create new Outlayer Items for collection\n var items = [];\n for ( var i=0; i < itemElems.length; i++ ) {\n var elem = itemElems[i];\n var item = new Item( elem, this );\n items.push( item );\n }\n\n return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n return this.items.map( function( item ) {\n return item.element;\n });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n this._resetLayout();\n this._manageStamps();\n\n // don't animate first layout\n var layoutInstant = this._getOption('layoutInstant');\n var isInstant = layoutInstant !== undefined ?\n layoutInstant : !this._isLayoutInited;\n this.layoutItems( this.items, isInstant );\n\n // flag for initalized\n this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n this.getSize();\n};\n\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n var option = this.options[ measurement ];\n var elem;\n if ( !option ) {\n // default to 0\n this[ measurement ] = 0;\n } else {\n // use option as an element\n if ( typeof option == 'string' ) {\n elem = this.element.querySelector( option );\n } else if ( option instanceof HTMLElement ) {\n elem = option;\n }\n // use size of element, if element\n this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n items = this._getItemsForLayout( items );\n\n this._layoutItems( items, isInstant );\n\n this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n return items.filter( function( item ) {\n return !item.isIgnored;\n });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n this._emitCompleteOnItems( 'layout', items );\n\n if ( !items || !items.length ) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n\n items.forEach( function( item ) {\n // get x/y object from method\n var position = this._getItemLayoutPosition( item );\n // enqueue\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push( position );\n }, this );\n\n this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n return {\n x: 0,\n y: 0\n };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n this.updateStagger();\n queue.forEach( function( obj, i ) {\n this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n var stagger = this.options.stagger;\n if ( stagger === null || stagger === undefined ) {\n this.stagger = 0;\n return;\n }\n this.stagger = getMilliseconds( stagger );\n return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n if ( isInstant ) {\n // if not transition, just set CSS\n item.goTo( x, y );\n } else {\n item.stagger( i * this.stagger );\n item.moveTo( x, y );\n }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n var isResizingContainer = this._getOption('resizeContainer');\n if ( !isResizingContainer ) {\n return;\n }\n var size = this._getContainerSize();\n if ( size ) {\n this._setContainerMeasure( size.width, true );\n this._setContainerMeasure( size.height, false );\n }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n if ( measure === undefined ) {\n return;\n }\n\n var elemSize = this.size;\n // add padding and border width if border box\n if ( elemSize.isBorderBox ) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n elemSize.borderLeftWidth + elemSize.borderRightWidth :\n elemSize.paddingBottom + elemSize.paddingTop +\n elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max( measure, 0 );\n this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n var _this = this;\n function onComplete() {\n _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n }\n\n var count = items.length;\n if ( !items || !count ) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n function tick() {\n doneCount++;\n if ( doneCount == count ) {\n onComplete();\n }\n }\n\n // bind callback\n items.forEach( function( item ) {\n item.once( eventName, tick );\n });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n // add original event to arguments\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery ) {\n // set this.$element\n this.$element = this.$element || jQuery( this.element );\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n item.isIgnored = true;\n }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n delete item.isIgnored;\n }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ) {\n return;\n }\n\n this.stamps = this.stamps.concat( elems );\n // ignore\n elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n elems = this._find( elems );\n if ( !elems ){\n return;\n }\n\n elems.forEach( function( elem ) {\n // filter out removed stamp elements\n utils.removeFrom( this.stamps, elem );\n this.unignore( elem );\n }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n if ( !elems ) {\n return;\n }\n // if string, use argument as selector string\n if ( typeof elems == 'string' ) {\n elems = this.element.querySelectorAll( elems );\n }\n elems = utils.makeArray( elems );\n return elems;\n};\n\nproto._manageStamps = function() {\n if ( !this.stamps || !this.stamps.length ) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize( elem );\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n window.addEventListener( 'resize', this );\n this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n window.removeEventListener( 'resize', this );\n this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n return;\n }\n\n this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n var size = getSize( this.element );\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n var items = this._itemize( elems );\n // add items to collection\n if ( items.length ) {\n this.items = this.items.concat( items );\n }\n return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n var items = this.addItems( elems );\n if ( !items.length ) {\n return;\n }\n // layout and reveal just the new items\n this.layoutItems( items, true );\n this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n var items = this._itemize( elems );\n if ( !items.length ) {\n return;\n }\n // add items to beginning of collection\n var previousItems = this.items.slice(0);\n this.items = items.concat( previousItems );\n // start new layout\n this._resetLayout();\n this._manageStamps();\n // layout new stuff without transition\n this.layoutItems( items, true );\n this.reveal( items );\n // layout previous items\n this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n this._emitCompleteOnItems( 'reveal', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.reveal();\n });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n this._emitCompleteOnItems( 'hide', items );\n if ( !items || !items.length ) {\n return;\n }\n var stagger = this.updateStagger();\n items.forEach( function( item, i ) {\n item.stagger( i * stagger );\n item.hide();\n });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n var items = this.getItems( elems );\n this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n // loop through items to get the one that matches\n for ( var i=0; i < this.items.length; i++ ) {\n var item = this.items[i];\n if ( item.element == elem ) {\n // return item\n return item;\n }\n }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n elems = utils.makeArray( elems );\n var items = [];\n elems.forEach( function( elem ) {\n var item = this.getItem( elem );\n if ( item ) {\n items.push( item );\n }\n }, this );\n\n return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n var removeItems = this.getItems( elems );\n\n this._emitCompleteOnItems( 'remove', removeItems );\n\n // bail if no items to remove\n if ( !removeItems || !removeItems.length ) {\n return;\n }\n\n removeItems.forEach( function( item ) {\n item.remove();\n // remove item from collection\n utils.removeFrom( this.items, item );\n }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = '';\n // destroy items\n this.items.forEach( function( item ) {\n item.destroy();\n });\n\n this.unbindResize();\n\n var id = this.element.outlayerGUID;\n delete instances[ id ]; // remove reference to instance by id\n delete this.element.outlayerGUID;\n // remove data for jQuery\n if ( jQuery ) {\n jQuery.removeData( this.element, this.constructor.namespace );\n }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.outlayerGUID;\n return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n // sub-class Outlayer\n var Layout = subclass( Outlayer );\n // apply new options and compatOptions\n Layout.defaults = utils.extend( {}, Outlayer.defaults );\n utils.extend( Layout.defaults, options );\n Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions );\n\n Layout.namespace = namespace;\n\n Layout.data = Outlayer.data;\n\n // sub-class Item\n Layout.Item = subclass( Item );\n\n // -------------------------- declarative -------------------------- //\n\n utils.htmlInit( Layout, namespace );\n\n // -------------------------- jQuery bridge -------------------------- //\n\n // make into jQuery plugin\n if ( jQuery && jQuery.bridget ) {\n jQuery.bridget( namespace, Layout );\n }\n\n return Layout;\n};\n\nfunction subclass( Parent ) {\n function SubClass() {\n Parent.apply( this, arguments );\n }\n\n SubClass.prototype = Object.create( Parent.prototype );\n SubClass.prototype.constructor = SubClass;\n\n return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n ms: 1,\n s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n if ( typeof time == 'number' ) {\n return time;\n }\n var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n var num = matches && matches[1];\n var unit = matches && matches[2];\n if ( !num.length ) {\n return 0;\n }\n num = parseFloat( num );\n var mult = msUnits[ unit ] || 1;\n return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n", "/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'outlayer/outlayer',\n 'get-size/get-size'\n ],\n factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('outlayer'),\n require('get-size')\n );\n } else {\n // browser global\n window.Masonry = factory(\n window.Outlayer,\n window.getSize\n );\n }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry');\n // isFitWidth -> fitWidth\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n var proto = Masonry.prototype;\n\n proto._resetLayout = function() {\n this.getSize();\n this._getMeasurement( 'columnWidth', 'outerWidth' );\n this._getMeasurement( 'gutter', 'outerWidth' );\n this.measureColumns();\n\n // reset column Y\n this.colYs = [];\n for ( var i=0; i < this.cols; i++ ) {\n this.colYs.push( 0 );\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function() {\n this.getContainerWidth();\n // if columnWidth is 0, default to outerWidth of first item\n if ( !this.columnWidth ) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element;\n // columnWidth fall back to item of first element\n this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter;\n\n // calculate columns\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth;\n // fix rounding errors, typically with gutters\n var excess = columnWidth - containerWidth % columnWidth;\n // if overshoot is less than a pixel, round up, otherwise floor it\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[ mathMethod ]( cols );\n this.cols = Math.max( cols, 1 );\n };\n\n proto.getContainerWidth = function() {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n var container = isFitWidth ? this.element.parentNode : this.element;\n // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n var size = getSize( container );\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function( item ) {\n item.getSize();\n // how many columns does this brick span\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n // round if off by 1 pixel, otherwise use ceil\n var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n colSpan = Math.min( colSpan, this.cols );\n // use horizontal or top column position\n var colPosMethod = this.options.horizontalOrder ?\n '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[ colPosMethod ]( colSpan, item );\n // position the brick\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n };\n // apply setHeight to necessary columns\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n for ( var i = colPosition.col; i < setMax; i++ ) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function( colSpan ) {\n var colGroup = this._getTopColGroup( colSpan );\n // get the minimum Y value from the columns\n var minimumY = Math.min.apply( Math, colGroup );\n\n return {\n col: colGroup.indexOf( minimumY ),\n y: minimumY,\n };\n };\n\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n proto._getTopColGroup = function( colSpan ) {\n if ( colSpan < 2 ) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = [];\n // how many different places could this brick fit horizontally\n var groupCount = this.cols + 1 - colSpan;\n // for each group potential horizontal position\n for ( var i = 0; i < groupCount; i++ ) {\n colGroup[i] = this._getColGroupY( i, colSpan );\n }\n return colGroup;\n };\n\n proto._getColGroupY = function( col, colSpan ) {\n if ( colSpan < 2 ) {\n return this.colYs[ col ];\n }\n // make an array of colY values for that one group\n var groupColYs = this.colYs.slice( col, col + colSpan );\n // and get the max value of the array\n return Math.max.apply( Math, groupColYs );\n };\n\n // get column position based on horizontal index. #873\n proto._getHorizontalColPosition = function( colSpan, item ) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols;\n // shift to next row if item can't fit on current row\n col = isOver ? 0 : col;\n // don't let zero-size items take up space\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n return {\n col: col,\n y: this._getColGroupY( col, colSpan ),\n };\n };\n\n proto._manageStamp = function( stamp ) {\n var stampSize = getSize( stamp );\n var offset = this._getElementOffset( stamp );\n // get the columns that this stamp affects\n var isOriginLeft = this._getOption('originLeft');\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor( firstX / this.columnWidth );\n firstCol = Math.max( 0, firstCol );\n var lastCol = Math.floor( lastX / this.columnWidth );\n // lastCol should not go over if multiple of columnWidth #425\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min( this.cols - 1, lastCol );\n // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n stampSize.outerHeight;\n for ( var i = firstCol; i <= lastCol; i++ ) {\n this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n }\n };\n\n proto._getContainerSize = function() {\n this.maxY = Math.max.apply( Math, this.colYs );\n var size = {\n height: this.maxY\n };\n\n if ( this._getOption('fitWidth') ) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function() {\n var unusedCols = 0;\n // count unused columns\n var i = this.cols;\n while ( --i ) {\n if ( this.colYs[i] !== 0 ) {\n break;\n }\n unusedCols++;\n }\n // fit container to columns that have been used\n return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function() {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n\n}));\n", "module.exports = debounce;\n\nfunction debounce(fn, wait, callFirst) {\n var timeout = null;\n\n var clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n var debounceWrapper = function() {\n if (!wait) {\n return fn.apply(this, arguments);\n }\n\n var context = this;\n var args = arguments;\n var callNow = callFirst && !timeout;\n\n clear();\n\n timeout = setTimeout(function() {\n timeout = null;\n\n if (!callNow) {\n return fn.apply(context, args);\n }\n }, wait);\n\n if (callNow) {\n return fn.apply(this, arguments);\n }\n };\n\n debounceWrapper.cancel = clear;\n\n return debounceWrapper;\n}\n", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "/*!\n * clipboard.js v2.0.6\n * https://clipboardjs.com/\n * \n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(3);\nvar delegate = __webpack_require__(4);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(5);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(0);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n\n// CONCATENATED MODULE: ./src/clipboard-action.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar clipboard_action_ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = select_default()(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = select_default()(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n document.activeElement.blur();\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\n/* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction);\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(1);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(2);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n\n// CONCATENATED MODULE: ./src/clipboard.js\nvar clipboard_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\nvar clipboard_Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n clipboard_classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n clipboard_createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new clipboard_action({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(tiny_emitter_default.a);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\n/* harmony default export */ var clipboard = __webpack_exports__[\"default\"] = (clipboard_Clipboard);\n\n/***/ })\n/******/ ])[\"default\"];\n});", "/* flatpickr v4.6.3, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input ||\n e.target === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "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 default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\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 } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.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 = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\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 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}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}", "export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\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\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.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 (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\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};", "import { top, left, right, bottom } 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 { 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) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(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 offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\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') {\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) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\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) < 2 ? \"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(_ref4) {\n var state = _ref4.state,\n options = _ref4.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\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\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 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 \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 getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\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; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\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 `` and `` 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 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) {\n var rect = getBoundingClientRect(element);\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) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : 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) {\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);\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));\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}", "export default function getVariation(placement) {\n return placement.split('-')[1];\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 getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.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$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 referenceElement = state.elements.reference;\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);\n var referenceClientRect = getBoundingClientRect(referenceElement);\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 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\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\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 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 \u2013 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 { 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\";\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};", "export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\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 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 { max as mathMax, min as mathMin } 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 data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\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 = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - 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 - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\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 = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\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 _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\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 getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\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}", "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\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\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);\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 { 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}", "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 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 getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\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(options) {\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 }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update \u2013 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 if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\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 var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\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 \u2013 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 if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\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 (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.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 };", "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 (v5.0.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\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)\n .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 (ancestor.matches(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 (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n", "import SelectorEngine from '../dom/selector-engine'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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.call(obj).match(/\\s([a-z]+)/i)[1].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-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = 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 (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\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 (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\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)) { // 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 SelectorEngine.findOne(obj)\n }\n\n return null\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 TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return 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 DOMContentLoadedCallbacks.forEach(callback => callback())\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 = callback => {\n if (typeof callback === 'function') {\n callback()\n }\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 let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\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 getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\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 * ------------------------------------------------------------------------\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 // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, 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 let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\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 // 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 (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\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.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, 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, 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 off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\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.includes(handlerKey)) {\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 $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\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 information 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 default EventHandler\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\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 (v5.0.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.2'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(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 _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\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 `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(element), element, isAnimated)\n }\n\n _destroyElement(element) {\n element.remove()\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\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\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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\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-bs-${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\nexport default Manipulator\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\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_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 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'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\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(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._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 if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\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, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\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(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\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(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\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 indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\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 setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\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 (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\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\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\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'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\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 if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\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 this.setTransitioning(false)\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._element.classList.contains(CLASS_NAME_SHOW)) {\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 const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(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 setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n parent = getElement(parent)\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Collapse.getInstance(element)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _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 static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for 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 const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Collapse.getInstance(element)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n isDisabled,\n isElement,\n isVisible,\n isRTL,\n noop,\n getNextActiveElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 SPACE_KEY = 'Space'\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 REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_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 = `click${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_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\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'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\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\n toggle() {\n if (isDisabled(this._element)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n if (isActive) {\n this.hide()\n return\n }\n\n this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\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 // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\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 = 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 const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\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 !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\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\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n this.toggle()\n })\n }\n\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 [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\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 = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\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 // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-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(`.${CLASS_NAME_NAVBAR}`) !== null\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 defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\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 // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\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\n static dropdownInterface(element, config) {\n const data = Dropdown.getOrCreateInstance(element, 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 static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\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 (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n\n if (event.key === ESCAPE_KEY) {\n getToggleButton().focus()\n Dropdown.clearMenus()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n getToggleButton().click()\n }\n\n Dropdown.getInstance(getToggleButton())._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): 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'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\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(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, 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, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = 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 this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().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 // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = CLASS_NAME_BACKDROP\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 _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.appendChild(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\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 _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\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_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.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 SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\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\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event && ['A', 'AREA'].includes(event.target.tagName)) {\n event.preventDefault()\n }\n\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 const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(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 if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\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 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 _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\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 { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\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 && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, 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 const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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 Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\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._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n this._enforceFocusOnElement(this._element)\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\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 EventHandler.off(document, EVENT_FOCUSIN)\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\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 super.dispose()\n EventHandler.off(document, EVENT_FOCUSIN)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _enforceFocusOnElement(element) {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n element !== event.target &&\n !element.contains(event.target)) {\n element.focus()\n }\n })\n element.focus()\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\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 * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, 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 allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/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):|[^#&/:?]*(?:[#/?]|$))/i\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 = /^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(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\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 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 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, allowList, 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 allowlistKeys = Object.keys(allowList)\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 (!allowlistKeys.includes(elName)) {\n el.remove()\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\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 animation: true,\n template: '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\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)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\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(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\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.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\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 [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\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 [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this._config.title === 'function' ?\n this._config.title.call(this._element) :\n this._config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.get(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.set(event.delegateTarget, dataKey, context)\n }\n\n return context\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(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: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\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 typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this._config) {\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '' +\n '
' +\n '' +\n '
' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n this.tip = super.getTipElement()\n\n if (!this.getTitle()) {\n SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove()\n }\n\n if (!this._getContent()) {\n SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove()\n }\n\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this._config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.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 * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${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-bs-spy=\"scroll\"]'\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_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both and